Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(162)

Side by Side Diff: content/browser/cache_storage/cache_storage_manager.cc

Issue 1468163002: [CacheStorage] Use a map of scoped_ptrs instead of raw pointers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/browser/cache_storage/cache_storage_manager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/cache_storage/cache_storage_manager.h" 5 #include "content/browser/cache_storage/cache_storage_manager.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 scoped_ptr<CacheStorageManager> manager(new CacheStorageManager( 119 scoped_ptr<CacheStorageManager> manager(new CacheStorageManager(
120 old_manager->root_path(), old_manager->cache_task_runner(), 120 old_manager->root_path(), old_manager->cache_task_runner(),
121 old_manager->quota_manager_proxy_.get())); 121 old_manager->quota_manager_proxy_.get()));
122 // These values may be NULL, in which case this will be called again later by 122 // These values may be NULL, in which case this will be called again later by
123 // the dispatcher host per usual. 123 // the dispatcher host per usual.
124 manager->SetBlobParametersForCache(old_manager->url_request_context_getter(), 124 manager->SetBlobParametersForCache(old_manager->url_request_context_getter(),
125 old_manager->blob_storage_context()); 125 old_manager->blob_storage_context());
126 return manager.Pass(); 126 return manager.Pass();
127 } 127 }
128 128
129 CacheStorageManager::~CacheStorageManager() { 129 CacheStorageManager::~CacheStorageManager() = default;
130 DCHECK_CURRENTLY_ON(BrowserThread::IO);
131 for (CacheStorageMap::iterator it = cache_storage_map_.begin();
132 it != cache_storage_map_.end(); ++it) {
133 delete it->second;
134 }
135 }
136 130
137 void CacheStorageManager::OpenCache( 131 void CacheStorageManager::OpenCache(
138 const GURL& origin, 132 const GURL& origin,
139 const std::string& cache_name, 133 const std::string& cache_name,
140 const CacheStorage::CacheAndErrorCallback& callback) { 134 const CacheStorage::CacheAndErrorCallback& callback) {
141 DCHECK_CURRENTLY_ON(BrowserThread::IO); 135 DCHECK_CURRENTLY_ON(BrowserThread::IO);
142 136
143 CacheStorage* cache_storage = FindOrCreateCacheStorage(origin); 137 CacheStorage* cache_storage = FindOrCreateCacheStorage(origin);
144 138
145 cache_storage->OpenCache(cache_name, callback); 139 cache_storage->OpenCache(cache_name, callback);
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 cache_task_runner_.get(), FROM_HERE, 281 cache_task_runner_.get(), FROM_HERE,
288 base::Bind(&ListOriginsOnDisk, root_path_), 282 base::Bind(&ListOriginsOnDisk, root_path_),
289 base::Bind(&GetOriginsForHostDidListOrigins, host, callback)); 283 base::Bind(&GetOriginsForHostDidListOrigins, host, callback));
290 } 284 }
291 285
292 void CacheStorageManager::DeleteOriginData( 286 void CacheStorageManager::DeleteOriginData(
293 const GURL& origin, 287 const GURL& origin,
294 const storage::QuotaClient::DeletionCallback& callback) { 288 const storage::QuotaClient::DeletionCallback& callback) {
295 DCHECK_CURRENTLY_ON(BrowserThread::IO); 289 DCHECK_CURRENTLY_ON(BrowserThread::IO);
296 290
297 CacheStorage* cache_storage = FindOrCreateCacheStorage(origin); 291 CacheStorageMap::iterator it = cache_storage_map_.find(origin);
292 if (it == cache_storage_map_.end()) {
293 callback.Run(storage::kQuotaStatusOk);
294 return;
295 }
296
297 CacheStorage* cache_storage = it->second.release();
298 cache_storage_map_.erase(origin); 298 cache_storage_map_.erase(origin);
299 cache_storage->CloseAllCaches( 299 cache_storage->CloseAllCaches(
300 base::Bind(&CacheStorageManager::DeleteOriginDidClose, origin, callback, 300 base::Bind(&CacheStorageManager::DeleteOriginDidClose, origin, callback,
301 base::Passed(make_scoped_ptr(cache_storage)), 301 base::Passed(make_scoped_ptr(cache_storage)),
302 weak_ptr_factory_.GetWeakPtr())); 302 weak_ptr_factory_.GetWeakPtr()));
303 } 303 }
304 304
305 void CacheStorageManager::DeleteOriginData(const GURL& origin) { 305 void CacheStorageManager::DeleteOriginData(const GURL& origin) {
306 DCHECK_CURRENTLY_ON(BrowserThread::IO); 306 DCHECK_CURRENTLY_ON(BrowserThread::IO);
307 DeleteOriginData(origin, base::Bind(&EmptyQuotaStatusCallback)); 307 DeleteOriginData(origin, base::Bind(&EmptyQuotaStatusCallback));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 const GURL& origin) { 354 const GURL& origin) {
355 DCHECK_CURRENTLY_ON(BrowserThread::IO); 355 DCHECK_CURRENTLY_ON(BrowserThread::IO);
356 DCHECK(request_context_getter_); 356 DCHECK(request_context_getter_);
357 CacheStorageMap::const_iterator it = cache_storage_map_.find(origin); 357 CacheStorageMap::const_iterator it = cache_storage_map_.find(origin);
358 if (it == cache_storage_map_.end()) { 358 if (it == cache_storage_map_.end()) {
359 MigrateOrigin(origin); 359 MigrateOrigin(origin);
360 CacheStorage* cache_storage = new CacheStorage( 360 CacheStorage* cache_storage = new CacheStorage(
361 ConstructOriginPath(root_path_, origin), IsMemoryBacked(), 361 ConstructOriginPath(root_path_, origin), IsMemoryBacked(),
362 cache_task_runner_.get(), request_context_getter_, quota_manager_proxy_, 362 cache_task_runner_.get(), request_context_getter_, quota_manager_proxy_,
363 blob_context_, origin); 363 blob_context_, origin);
364 // The map owns fetch_stores. 364 cache_storage_map_.insert(
365 cache_storage_map_.insert(std::make_pair(origin, cache_storage)); 365 std::make_pair(origin, make_scoped_ptr(cache_storage)));
366 return cache_storage; 366 return cache_storage;
367 } 367 }
368 return it->second; 368 return it->second.get();
369 } 369 }
370 370
371 // static 371 // static
372 base::FilePath CacheStorageManager::ConstructLegacyOriginPath( 372 base::FilePath CacheStorageManager::ConstructLegacyOriginPath(
373 const base::FilePath& root_path, 373 const base::FilePath& root_path,
374 const GURL& origin) { 374 const GURL& origin) {
375 const std::string origin_hash = base::SHA1HashString(origin.spec()); 375 const std::string origin_hash = base::SHA1HashString(origin.spec());
376 const std::string origin_hash_hex = base::ToLowerASCII( 376 const std::string origin_hash_hex = base::ToLowerASCII(
377 base::HexEncode(origin_hash.c_str(), origin_hash.length())); 377 base::HexEncode(origin_hash.c_str(), origin_hash.length()));
378 return root_path.AppendASCII(origin_hash_hex); 378 return root_path.AppendASCII(origin_hash_hex);
(...skipping 26 matching lines...) Expand all
405 const base::FilePath& old_path, 405 const base::FilePath& old_path,
406 const base::FilePath& new_path) { 406 const base::FilePath& new_path) {
407 if (base::PathExists(old_path)) { 407 if (base::PathExists(old_path)) {
408 if (!base::PathExists(new_path)) 408 if (!base::PathExists(new_path))
409 base::Move(old_path, new_path); 409 base::Move(old_path, new_path);
410 base::DeleteFile(old_path, /*recursive*/ true); 410 base::DeleteFile(old_path, /*recursive*/ true);
411 } 411 }
412 } 412 }
413 413
414 } // namespace content 414 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/cache_storage/cache_storage_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698