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 758a124acee71d97c1c8380975cb709347f8a693..1fd5b76ceca04b7ee1a795c2e60eb1efcabab6cb 100644 |
--- a/content/browser/service_worker/service_worker_cache_storage.cc |
+++ b/content/browser/service_worker/service_worker_cache_storage.cc |
@@ -376,6 +376,33 @@ void ServiceWorkerCacheStorage::CreateCache( |
callback)); |
} |
+void ServiceWorkerCacheStorage::OpenCache( |
+ const std::string& cache_name, |
+ const CacheAndErrorCallback& callback) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ |
+ if (!initialized_) { |
+ LazyInit(base::Bind(&ServiceWorkerCacheStorage::OpenCache, |
+ weak_factory_.GetWeakPtr(), |
+ cache_name, |
+ callback)); |
+ return; |
+ } |
+ |
+ scoped_refptr<ServiceWorkerCache> cache = GetLoadedCache(cache_name); |
+ if (cache.get()) { |
+ callback.Run(cache, CACHE_STORAGE_ERROR_NO_ERROR); |
+ return; |
+ } |
+ |
+ cache_loader_->CreateCache( |
+ cache_name, |
+ base::Bind(&ServiceWorkerCacheStorage::CreateCacheDidCreateCache, |
+ weak_factory_.GetWeakPtr(), |
+ cache_name, |
+ callback)); |
+} |
+ |
void ServiceWorkerCacheStorage::GetCache( |
const std::string& cache_name, |
const CacheAndErrorCallback& callback) { |