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 8a9c6c4d266b029aa591b275acbaab4d2003d108..6991480230abb45e4fbe625f3c57ed5c2a320711 100644 |
--- a/content/browser/service_worker/service_worker_cache_storage.cc |
+++ b/content/browser/service_worker/service_worker_cache_storage.cc |
@@ -64,7 +64,7 @@ class ServiceWorkerCacheStorage::CacheLoader |
friend class base::RefCountedThreadSafe< |
ServiceWorkerCacheStorage::CacheLoader>; |
- virtual ~CacheLoader() {}; |
+ virtual ~CacheLoader() {} |
virtual void LoadCacheImpl(const std::string&) {} |
scoped_refptr<base::SequencedTaskRunner> cache_task_runner_; |
@@ -448,6 +448,9 @@ void ServiceWorkerCacheStorage::GetCache( |
return; |
} |
+ if (cache->HasCreatedBackend()) |
+ return callback.Run(cache->id(), CACHE_STORAGE_ERROR_NO_ERROR); |
+ |
cache->CreateBackend(base::Bind(&ServiceWorkerCacheStorage::DidCreateBackend, |
weak_factory_.GetWeakPtr(), |
cache->AsWeakPtr(), |
@@ -535,15 +538,16 @@ void ServiceWorkerCacheStorage::EnumerateCaches( |
void ServiceWorkerCacheStorage::DidCreateBackend( |
base::WeakPtr<ServiceWorkerCache> cache, |
const CacheAndErrorCallback& callback, |
- bool success) { |
+ ServiceWorkerCache::ErrorType error) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- if (!success || !cache) { |
+ if (error != ServiceWorkerCache::ErrorTypeOK || !cache) { |
// TODO(jkarlin): This should delete the directory and try again in case |
// the cache is simply corrupt. |
callback.Run(0, CACHE_STORAGE_ERROR_STORAGE); |
return; |
} |
+ |
callback.Run(cache->id(), CACHE_STORAGE_ERROR_NO_ERROR); |
} |
@@ -674,6 +678,7 @@ void ServiceWorkerCacheStorage::CreateCacheDidWriteIndex( |
callback.Run(false, CACHE_STORAGE_ERROR_STORAGE); |
return; |
} |
+ |
cache->CreateBackend(base::Bind(&ServiceWorkerCacheStorage::DidCreateBackend, |
weak_factory_.GetWeakPtr(), |
cache, |