Index: content/browser/service_worker/service_worker_cache_listener.cc |
diff --git a/content/browser/service_worker/service_worker_cache_listener.cc b/content/browser/service_worker/service_worker_cache_listener.cc |
index c5791fd3eebecb21d22f7fcd1645c197a7d92896..76c608420ab07e36ad2b4eae1bab3777915dd735 100644 |
--- a/content/browser/service_worker/service_worker_cache_listener.cc |
+++ b/content/browser/service_worker/service_worker_cache_listener.cc |
@@ -93,6 +93,8 @@ bool ServiceWorkerCacheListener::OnMessageReceived( |
OnCacheStorageHas) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheStorageCreate, |
OnCacheStorageCreate) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheStorageOpen, |
+ OnCacheStorageOpen) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheStorageDelete, |
OnCacheStorageDelete) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheStorageKeys, |
@@ -153,6 +155,19 @@ void ServiceWorkerCacheListener::OnCacheStorageCreate( |
request_id)); |
} |
+void ServiceWorkerCacheListener::OnCacheStorageOpen( |
+ int request_id, |
+ const base::string16& cache_name) { |
+ TRACE_EVENT0("ServiceWorker", |
+ "ServiceWorkerCacheListener::OnCacheStorageOpen"); |
+ context_->cache_manager()->OpenCache( |
+ version_->scope().GetOrigin(), |
+ base::UTF16ToUTF8(cache_name), |
+ base::Bind(&ServiceWorkerCacheListener::OnCacheStorageOpenCallback, |
+ weak_factory_.GetWeakPtr(), |
+ request_id)); |
+} |
+ |
void ServiceWorkerCacheListener::OnCacheStorageDelete( |
int request_id, |
const base::string16& cache_name) { |
@@ -344,6 +359,19 @@ void ServiceWorkerCacheListener::OnCacheStorageCreateCallback( |
Send(ServiceWorkerMsg_CacheStorageCreateSuccess(request_id, cache_id)); |
} |
+void ServiceWorkerCacheListener::OnCacheStorageOpenCallback( |
+ int request_id, |
+ const scoped_refptr<ServiceWorkerCache>& cache, |
+ ServiceWorkerCacheStorage::CacheStorageError error) { |
+ if (error != ServiceWorkerCacheStorage::CACHE_STORAGE_ERROR_NO_ERROR) { |
+ Send(ServiceWorkerMsg_CacheStorageOpenError( |
+ request_id, ToWebServiceWorkerCacheError(error))); |
+ return; |
+ } |
+ CacheID cache_id = StoreCacheReference(cache); |
+ Send(ServiceWorkerMsg_CacheStorageOpenSuccess(request_id, cache_id)); |
+} |
+ |
void ServiceWorkerCacheListener::OnCacheStorageDeleteCallback( |
int request_id, |
bool deleted, |