Index: content/browser/service_worker/service_worker_cache_storage.cc |
diff --git a/content/browser/service_worker/service_worker_cache_storage.cc b/content/browser/service_worker/service_worker_cache_storage.cc |
index 734174eb73444c094a7668d57ff5a1e167727000..ab3bc8460341b87ea0fe7b15550d5ba20d2718df 100644 |
--- a/content/browser/service_worker/service_worker_cache_storage.cc |
+++ b/content/browser/service_worker/service_worker_cache_storage.cc |
@@ -444,9 +444,9 @@ void ServiceWorkerCacheStorage::CreateCache( |
cache_loader_->CreateCache( |
cache_name, |
base::Bind(&ServiceWorkerCacheStorage::CreateCacheDidCreateCache, |
- weak_factory_.GetWeakPtr(), |
cache_name, |
- callback)); |
+ callback, |
+ weak_factory_.GetWeakPtr())); |
} |
void ServiceWorkerCacheStorage::GetCache( |
@@ -479,7 +479,6 @@ void ServiceWorkerCacheStorage::GetCache( |
return callback.Run(cache_context->id, CACHE_STORAGE_ERROR_NO_ERROR); |
cache->CreateBackend(base::Bind(&ServiceWorkerCacheStorage::DidCreateBackend, |
- weak_factory_.GetWeakPtr(), |
cache->AsWeakPtr(), |
cache_context->id, |
callback)); |
@@ -539,9 +538,9 @@ void ServiceWorkerCacheStorage::DeleteCache( |
cache_loader_->WriteIndex( |
cache_map_, |
base::Bind(&ServiceWorkerCacheStorage::DeleteCacheDidWriteIndex, |
- weak_factory_.GetWeakPtr(), |
cache_name, |
- callback)); |
+ callback, |
+ weak_factory_.GetWeakPtr())); |
} |
void ServiceWorkerCacheStorage::EnumerateCaches( |
@@ -564,6 +563,7 @@ void ServiceWorkerCacheStorage::EnumerateCaches( |
callback.Run(names, CACHE_STORAGE_ERROR_NO_ERROR); |
} |
+// static |
void ServiceWorkerCacheStorage::DidCreateBackend( |
base::WeakPtr<ServiceWorkerCache> cache, |
CacheID cache_id, |
@@ -695,28 +695,31 @@ ServiceWorkerCacheStorage::AddCacheToMaps( |
return cache_context; |
} |
+// static |
void ServiceWorkerCacheStorage::CreateCacheDidCreateCache( |
const std::string& cache_name, |
const CacheAndErrorCallback& callback, |
+ base::WeakPtr<ServiceWorkerCacheStorage> storage, |
scoped_ptr<ServiceWorkerCache> cache) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- if (!cache) { |
+ if (!cache || !storage) { |
callback.Run(kInvalidCacheID, CACHE_STORAGE_ERROR_CLOSING); |
return; |
} |
- CacheContext* cache_context = AddCacheToMaps(cache_name, cache.Pass()); |
+ CacheContext* cache_context = |
+ storage->AddCacheToMaps(cache_name, cache.Pass()); |
- cache_loader_->WriteIndex( |
- cache_map_, |
+ storage->cache_loader_->WriteIndex( |
+ storage->cache_map_, |
base::Bind(&ServiceWorkerCacheStorage::CreateCacheDidWriteIndex, |
- weak_factory_.GetWeakPtr(), |
callback, |
cache_context->cache->AsWeakPtr(), |
cache_context->id)); |
} |
+// static |
void ServiceWorkerCacheStorage::CreateCacheDidWriteIndex( |
const CacheAndErrorCallback& callback, |
base::WeakPtr<ServiceWorkerCache> cache, |
@@ -729,25 +732,28 @@ void ServiceWorkerCacheStorage::CreateCacheDidWriteIndex( |
} |
cache->CreateBackend(base::Bind(&ServiceWorkerCacheStorage::DidCreateBackend, |
- weak_factory_.GetWeakPtr(), |
cache, |
id, |
callback)); |
} |
+// static |
void ServiceWorkerCacheStorage::DeleteCacheDidWriteIndex( |
const std::string& cache_name, |
const BoolAndErrorCallback& callback, |
+ base::WeakPtr<ServiceWorkerCacheStorage> storage, |
bool success) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- cache_loader_->CleanUpDeletedCache( |
+ if (!storage) |
+ return callback.Run(false, CACHE_STORAGE_ERROR_CLOSING); |
+ |
+ storage->cache_loader_->CleanUpDeletedCache( |
cache_name, |
- base::Bind(&ServiceWorkerCacheStorage::DeleteCacheDidCleanUp, |
- weak_factory_.GetWeakPtr(), |
- callback)); |
+ base::Bind(&ServiceWorkerCacheStorage::DeleteCacheDidCleanUp, callback)); |
} |
+// static |
void ServiceWorkerCacheStorage::DeleteCacheDidCleanUp( |
const BoolAndErrorCallback& callback, |
bool success) { |