mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 490384 - mochitest-plain: random test_bug466586.html | undefined. r=vlad
This commit is contained in:
parent
dad9597989
commit
55ffaed31b
@ -451,11 +451,10 @@ NS_IMETHODIMP
|
||||
imgCacheObserver::Observe(nsISupports* aSubject, const char* aTopic, const PRUnichar* aSomeData)
|
||||
{
|
||||
if (strcmp(aTopic, "memory-pressure") == 0) {
|
||||
mLoader.ClearCache(PR_FALSE);
|
||||
mLoader.ClearCache(PR_TRUE);
|
||||
mLoader.MinimizeCaches();
|
||||
} else if (strcmp(aTopic, "chrome-flush-skin-caches") == 0 ||
|
||||
strcmp(aTopic, "chrome-flush-caches") == 0) {
|
||||
mLoader.ClearCache(PR_TRUE);
|
||||
mLoader.ClearChromeImageCache();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
@ -656,12 +655,18 @@ void imgLoader::Shutdown()
|
||||
|
||||
nsresult imgLoader::ClearChromeImageCache()
|
||||
{
|
||||
return EvictEntries(sChromeCache, sChromeCacheQueue);
|
||||
return EvictEntries(sChromeCache);
|
||||
}
|
||||
|
||||
nsresult imgLoader::ClearImageCache()
|
||||
{
|
||||
return EvictEntries(sCache, sCacheQueue);
|
||||
return EvictEntries(sCache);
|
||||
}
|
||||
|
||||
void imgLoader::MinimizeCaches()
|
||||
{
|
||||
EvictEntries(sCacheQueue);
|
||||
EvictEntries(sChromeCacheQueue);
|
||||
}
|
||||
|
||||
PRBool imgLoader::PutIntoCache(nsIURI *key, imgCacheEntry *entry)
|
||||
@ -1106,9 +1111,9 @@ static PLDHashOperator EnumEvictEntries(const nsACString&,
|
||||
return PL_DHASH_NEXT;
|
||||
}
|
||||
|
||||
nsresult imgLoader::EvictEntries(imgCacheTable &aCacheToClear, imgCacheQueue &aQueueToClear)
|
||||
nsresult imgLoader::EvictEntries(imgCacheTable &aCacheToClear)
|
||||
{
|
||||
LOG_STATIC_FUNC(gImgLog, "imgLoader::EvictEntries");
|
||||
LOG_STATIC_FUNC(gImgLog, "imgLoader::EvictEntries table");
|
||||
|
||||
// We have to make a temporary, since RemoveFromCache removes the element
|
||||
// from the queue, invalidating iterators.
|
||||
@ -1122,6 +1127,23 @@ nsresult imgLoader::EvictEntries(imgCacheTable &aCacheToClear, imgCacheQueue &aQ
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult imgLoader::EvictEntries(imgCacheQueue &aQueueToClear)
|
||||
{
|
||||
LOG_STATIC_FUNC(gImgLog, "imgLoader::EvictEntries queue");
|
||||
|
||||
// We have to make a temporary, since RemoveFromCache removes the element
|
||||
// from the queue, invalidating iterators.
|
||||
nsTArray<nsRefPtr<imgCacheEntry> > entries(aQueueToClear.GetNumElements());
|
||||
for (imgCacheQueue::const_iterator i = aQueueToClear.begin(); i != aQueueToClear.end(); ++i)
|
||||
entries.AppendElement(*i);
|
||||
|
||||
for (PRUint32 i = 0; i < entries.Length(); ++i)
|
||||
if (!RemoveFromCache(entries[i]))
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
#define LOAD_FLAGS_CACHE_MASK (nsIRequest::LOAD_BYPASS_CACHE | \
|
||||
nsIRequest::LOAD_FROM_CACHE)
|
||||
|
||||
|
@ -235,6 +235,7 @@ public:
|
||||
|
||||
static nsresult ClearChromeImageCache();
|
||||
static nsresult ClearImageCache();
|
||||
static void MinimizeCaches();
|
||||
|
||||
static nsresult InitCache();
|
||||
|
||||
@ -302,7 +303,8 @@ private: // methods
|
||||
|
||||
typedef nsRefPtrHashtable<nsCStringHashKey, imgCacheEntry> imgCacheTable;
|
||||
|
||||
static nsresult EvictEntries(imgCacheTable &aCacheToClear, imgCacheQueue &aQueueToClear);
|
||||
static nsresult EvictEntries(imgCacheTable &aCacheToClear);
|
||||
static nsresult EvictEntries(imgCacheQueue &aQueueToClear);
|
||||
|
||||
static imgCacheTable &GetCache(nsIURI *aURI);
|
||||
static imgCacheQueue &GetCacheQueue(nsIURI *aURI);
|
||||
|
Loading…
Reference in New Issue
Block a user