NS_IMETHODIMP CacheStorageService::Clear() { nsresult rv; if (CacheObserver::UseNewCache()) { { mozilla::MutexAutoLock lock(mLock); NS_ENSURE_TRUE(!mShutdown, NS_ERROR_NOT_INITIALIZED); nsTArray<nsCString> keys; sGlobalEntryTables->EnumerateRead(&CollectContexts, &keys); for (uint32_t i = 0; i < keys.Length(); ++i) DoomStorageEntries(keys[i], nullptr, true, nullptr); } rv = CacheFileIOManager::EvictAll(); NS_ENSURE_SUCCESS(rv, rv); } else { nsCOMPtr<nsICacheService> serv = do_GetService(NS_CACHESERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); rv = serv->EvictEntries(nsICache::STORE_ANYWHERE); NS_ENSURE_SUCCESS(rv, rv); } return NS_OK; }
void CacheStorageService::DropPrivateBrowsingEntries() { mozilla::MutexAutoLock lock(mLock); if (mShutdown) return; nsTArray<nsCString> keys; sGlobalEntryTables->EnumerateRead(&CollectPrivateContexts, &keys); for (uint32_t i = 0; i < keys.Length(); ++i) DoomStorageEntries(keys[i], nullptr, true, nullptr); }
nsresult CacheStorageService::DoomStorageEntries(CacheStorage const* aStorage, nsICacheEntryDoomCallback* aCallback) { LOG(("CacheStorageService::DoomStorageEntries")); NS_ENSURE_FALSE(mShutdown, NS_ERROR_NOT_INITIALIZED); NS_ENSURE_ARG(aStorage); nsAutoCString contextKey; LoadContextInfoMappingKey(contextKey, aStorage->LoadInfo()); mozilla::MutexAutoLock lock(mLock); return DoomStorageEntries(contextKey, aStorage->WriteToDisk(), aCallback); }