mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1038357 - Added automatic pruning for mForcedValidEntries in CacheStorage Service. r=honzab
This commit is contained in:
parent
249c87c806
commit
c7050c0475
@ -1067,13 +1067,42 @@ void CacheStorageService::ForceEntryValidFor(nsACString &aCacheEntryKey,
|
||||
{
|
||||
mozilla::MutexAutoLock lock(mLock);
|
||||
|
||||
TimeStamp now = TimeStamp::NowLoRes();
|
||||
ForcedValidEntriesPrune(now);
|
||||
|
||||
// This will be the timeout
|
||||
TimeStamp validUntil = TimeStamp::NowLoRes() +
|
||||
TimeDuration::FromSeconds(aSecondsToTheFuture);
|
||||
TimeStamp validUntil = now + TimeDuration::FromSeconds(aSecondsToTheFuture);
|
||||
|
||||
mForcedValidEntries.Put(aCacheEntryKey, validUntil);
|
||||
}
|
||||
|
||||
namespace { // anon
|
||||
|
||||
PLDHashOperator PruneForcedValidEntries(
|
||||
const nsACString& aKey, TimeStamp& aTimeStamp, void* aClosure)
|
||||
{
|
||||
TimeStamp* now = static_cast<TimeStamp*>(aClosure);
|
||||
if (aTimeStamp < *now) {
|
||||
return PL_DHASH_REMOVE;
|
||||
}
|
||||
|
||||
return PL_DHASH_NEXT;
|
||||
}
|
||||
|
||||
} // anon
|
||||
|
||||
// Cleans out the old entries in mForcedValidEntries
|
||||
void CacheStorageService::ForcedValidEntriesPrune(TimeStamp &now)
|
||||
{
|
||||
static TimeDuration const oneMinute = TimeDuration::FromSeconds(60);
|
||||
static TimeStamp dontPruneUntil = now + oneMinute;
|
||||
if (now < dontPruneUntil)
|
||||
return;
|
||||
|
||||
mForcedValidEntries.Enumerate(PruneForcedValidEntries, &now);
|
||||
dontPruneUntil = now + oneMinute;
|
||||
}
|
||||
|
||||
void
|
||||
CacheStorageService::OnMemoryConsumptionChange(CacheMemoryConsumer* aConsumer,
|
||||
uint32_t aCurrentMemoryConsumption)
|
||||
|
@ -280,6 +280,8 @@ private:
|
||||
bool aReplace,
|
||||
CacheEntryHandle** aResult);
|
||||
|
||||
void ForcedValidEntriesPrune(TimeStamp &now);
|
||||
|
||||
static CacheStorageService* sSelf;
|
||||
|
||||
mozilla::Mutex mLock;
|
||||
|
Loading…
Reference in New Issue
Block a user