Index: content/browser/cache_storage/cache_storage_manager.cc |
diff --git a/content/browser/cache_storage/cache_storage_manager.cc b/content/browser/cache_storage/cache_storage_manager.cc |
index 939797d71e82fea692ae8edb64bec21e43d1af8c..84bb8e93d5f0b5d7f93ab5fee3bcca6f0f7a19ae 100644 |
--- a/content/browser/cache_storage/cache_storage_manager.cc |
+++ b/content/browser/cache_storage/cache_storage_manager.cc |
@@ -126,13 +126,7 @@ scoped_ptr<CacheStorageManager> CacheStorageManager::Create( |
return manager.Pass(); |
} |
-CacheStorageManager::~CacheStorageManager() { |
- DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- for (CacheStorageMap::iterator it = cache_storage_map_.begin(); |
- it != cache_storage_map_.end(); ++it) { |
- delete it->second; |
- } |
-} |
+CacheStorageManager::~CacheStorageManager() = default; |
void CacheStorageManager::OpenCache( |
const GURL& origin, |
@@ -294,7 +288,13 @@ void CacheStorageManager::DeleteOriginData( |
const storage::QuotaClient::DeletionCallback& callback) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- CacheStorage* cache_storage = FindOrCreateCacheStorage(origin); |
+ CacheStorageMap::iterator it = cache_storage_map_.find(origin); |
+ if (it == cache_storage_map_.end()) { |
+ callback.Run(storage::kQuotaStatusOk); |
+ return; |
+ } |
+ |
+ CacheStorage* cache_storage = it->second.release(); |
cache_storage_map_.erase(origin); |
cache_storage->CloseAllCaches( |
base::Bind(&CacheStorageManager::DeleteOriginDidClose, origin, callback, |
@@ -361,11 +361,11 @@ CacheStorage* CacheStorageManager::FindOrCreateCacheStorage( |
ConstructOriginPath(root_path_, origin), IsMemoryBacked(), |
cache_task_runner_.get(), request_context_getter_, quota_manager_proxy_, |
blob_context_, origin); |
- // The map owns fetch_stores. |
- cache_storage_map_.insert(std::make_pair(origin, cache_storage)); |
+ cache_storage_map_.insert( |
+ std::make_pair(origin, make_scoped_ptr(cache_storage))); |
return cache_storage; |
} |
- return it->second; |
+ return it->second.get(); |
} |
// static |