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

Unified Diff: content/browser/cache_storage/cache_storage_listener.cc

Issue 1111703002: Revert of CacheStorage: Merge CacheStorageListener into CacheStorageDispatcherHost (1) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/cache_storage/cache_storage_listener.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/cache_storage/cache_storage_listener.cc
diff --git a/content/browser/cache_storage/cache_storage_listener.cc b/content/browser/cache_storage/cache_storage_listener.cc
index 4b98b3c841b7d058565c9ce0b6719cfe73c04831..7392df611556ae945fdd5daf5d2949f37153f97f 100644
--- a/content/browser/cache_storage/cache_storage_listener.cc
+++ b/content/browser/cache_storage/cache_storage_listener.cc
@@ -21,9 +21,33 @@
namespace {
-// TODO(nhiroki): The same function exists in cache_storage_dispatcher_host.cc.
-// This should be removed when this listenr class is merged into the dispatcher.
-// (http://crbug.com/474233)
+WebServiceWorkerCacheError ToWebServiceWorkerCacheError(
+ CacheStorage::CacheStorageError err) {
+ switch (err) {
+ case CacheStorage::CACHE_STORAGE_ERROR_NO_ERROR:
+ NOTREACHED();
+ return blink::WebServiceWorkerCacheErrorNotImplemented;
+ case CacheStorage::CACHE_STORAGE_ERROR_NOT_IMPLEMENTED:
+ return blink::WebServiceWorkerCacheErrorNotImplemented;
+ case CacheStorage::CACHE_STORAGE_ERROR_NOT_FOUND:
+ return blink::WebServiceWorkerCacheErrorNotFound;
+ case CacheStorage::CACHE_STORAGE_ERROR_EXISTS:
+ return blink::WebServiceWorkerCacheErrorExists;
+ case CacheStorage::CACHE_STORAGE_ERROR_STORAGE:
+ // TODO(jkarlin): Change this to CACHE_STORAGE_ERROR_STORAGE once that's
+ // added.
+ return blink::WebServiceWorkerCacheErrorNotFound;
+ case CacheStorage::CACHE_STORAGE_ERROR_CLOSING:
+ // TODO(jkarlin): Update this to CACHE_STORAGE_ERROR_CLOSING once that's
+ // added.
+ return blink::WebServiceWorkerCacheErrorNotFound;
+ }
+ NOTREACHED();
+ return blink::WebServiceWorkerCacheErrorNotImplemented;
+}
+
+// TODO(jkarlin): CacheStorageCache and CacheStorage should share
+// an error enum type.
WebServiceWorkerCacheError CacheErrorToWebServiceWorkerCacheError(
CacheStorageCache::ErrorType err) {
switch (err) {
@@ -57,6 +81,16 @@
bool CacheStorageListener::OnMessageReceived(const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(CacheStorageListener, message)
+ IPC_MESSAGE_HANDLER(CacheStorageHostMsg_CacheStorageHas,
+ OnCacheStorageHas)
+ IPC_MESSAGE_HANDLER(CacheStorageHostMsg_CacheStorageOpen,
+ OnCacheStorageOpen)
+ IPC_MESSAGE_HANDLER(CacheStorageHostMsg_CacheStorageDelete,
+ OnCacheStorageDelete)
+ IPC_MESSAGE_HANDLER(CacheStorageHostMsg_CacheStorageKeys,
+ OnCacheStorageKeys)
+ IPC_MESSAGE_HANDLER(CacheStorageHostMsg_CacheStorageMatch,
+ OnCacheStorageMatch)
IPC_MESSAGE_HANDLER(CacheStorageHostMsg_CacheMatch, OnCacheMatch)
IPC_MESSAGE_HANDLER(CacheStorageHostMsg_CacheMatchAll, OnCacheMatchAll)
IPC_MESSAGE_HANDLER(CacheStorageHostMsg_CacheKeys, OnCacheKeys)
@@ -68,6 +102,76 @@
IPC_END_MESSAGE_MAP()
return handled;
+}
+
+void CacheStorageListener::OnCacheStorageHas(int thread_id,
+ int request_id,
+ const GURL& origin,
+ const base::string16& cache_name) {
+ TRACE_EVENT0("CacheStorage", "CacheStorageListener::OnCacheStorageHas");
+ context_->cache_manager()->HasCache(
+ origin, base::UTF16ToUTF8(cache_name),
+ base::Bind(&CacheStorageListener::OnCacheStorageHasCallback,
+ weak_factory_.GetWeakPtr(), thread_id, request_id));
+}
+
+void CacheStorageListener::OnCacheStorageOpen(
+ int thread_id,
+ int request_id,
+ const GURL& origin,
+ const base::string16& cache_name) {
+ TRACE_EVENT0("CacheStorage", "CacheStorageListener::OnCacheStorageOpen");
+ context_->cache_manager()->OpenCache(
+ origin, base::UTF16ToUTF8(cache_name),
+ base::Bind(&CacheStorageListener::OnCacheStorageOpenCallback,
+ weak_factory_.GetWeakPtr(), thread_id, request_id));
+}
+
+void CacheStorageListener::OnCacheStorageDelete(
+ int thread_id,
+ int request_id,
+ const GURL& origin,
+ const base::string16& cache_name) {
+ TRACE_EVENT0("CacheStorage", "CacheStorageListener::OnCacheStorageDelete");
+ context_->cache_manager()->DeleteCache(
+ origin, base::UTF16ToUTF8(cache_name),
+ base::Bind(&CacheStorageListener::OnCacheStorageDeleteCallback,
+ weak_factory_.GetWeakPtr(), thread_id, request_id));
+}
+
+void CacheStorageListener::OnCacheStorageKeys(int thread_id,
+ int request_id,
+ const GURL& origin) {
+ TRACE_EVENT0("CacheStorage", "CacheStorageListener::OnCacheStorageKeys");
+ context_->cache_manager()->EnumerateCaches(
+ origin, base::Bind(&CacheStorageListener::OnCacheStorageKeysCallback,
+ weak_factory_.GetWeakPtr(), thread_id, request_id));
+}
+
+void CacheStorageListener::OnCacheStorageMatch(
+ int thread_id,
+ int request_id,
+ const GURL& origin,
+ const ServiceWorkerFetchRequest& request,
+ const CacheStorageCacheQueryParams& match_params) {
+ TRACE_EVENT0("CacheStorage", "CacheStorageListener::OnCacheStorageMatch");
+
+ scoped_ptr<ServiceWorkerFetchRequest> scoped_request(
+ new ServiceWorkerFetchRequest(request.url, request.method,
+ request.headers, request.referrer,
+ request.is_reload));
+
+ if (match_params.cache_name.empty()) {
+ context_->cache_manager()->MatchAllCaches(
+ origin, scoped_request.Pass(),
+ base::Bind(&CacheStorageListener::OnCacheStorageMatchCallback,
+ weak_factory_.GetWeakPtr(), thread_id, request_id));
+ return;
+ }
+ context_->cache_manager()->MatchCache(
+ origin, base::UTF16ToUTF8(match_params.cache_name), scoped_request.Pass(),
+ base::Bind(&CacheStorageListener::OnCacheStorageMatchCallback,
+ weak_factory_.GetWeakPtr(), thread_id, request_id));
}
void CacheStorageListener::OnCacheMatch(
@@ -193,6 +297,90 @@
dispatcher_->Send(message);
}
+void CacheStorageListener::OnCacheStorageHasCallback(
+ int thread_id,
+ int request_id,
+ bool has_cache,
+ CacheStorage::CacheStorageError error) {
+ if (error != CacheStorage::CACHE_STORAGE_ERROR_NO_ERROR) {
+ Send(new CacheStorageMsg_CacheStorageHasError(
+ thread_id, request_id, ToWebServiceWorkerCacheError(error)));
+ return;
+ }
+ if (!has_cache) {
+ Send(new CacheStorageMsg_CacheStorageHasError(
+ thread_id, request_id, blink::WebServiceWorkerCacheErrorNotFound));
+ return;
+ }
+ Send(new CacheStorageMsg_CacheStorageHasSuccess(thread_id, request_id));
+}
+
+void CacheStorageListener::OnCacheStorageOpenCallback(
+ int thread_id,
+ int request_id,
+ const scoped_refptr<CacheStorageCache>& cache,
+ CacheStorage::CacheStorageError error) {
+ if (error != CacheStorage::CACHE_STORAGE_ERROR_NO_ERROR) {
+ Send(new CacheStorageMsg_CacheStorageOpenError(
+ thread_id, request_id, ToWebServiceWorkerCacheError(error)));
+ return;
+ }
+ CacheID cache_id = StoreCacheReference(cache);
+ Send(new CacheStorageMsg_CacheStorageOpenSuccess(thread_id, request_id,
+ cache_id));
+}
+
+void CacheStorageListener::OnCacheStorageDeleteCallback(
+ int thread_id,
+ int request_id,
+ bool deleted,
+ CacheStorage::CacheStorageError error) {
+ if (!deleted || error != CacheStorage::CACHE_STORAGE_ERROR_NO_ERROR) {
+ Send(new CacheStorageMsg_CacheStorageDeleteError(
+ thread_id, request_id, ToWebServiceWorkerCacheError(error)));
+ return;
+ }
+ Send(new CacheStorageMsg_CacheStorageDeleteSuccess(thread_id, request_id));
+}
+
+void CacheStorageListener::OnCacheStorageKeysCallback(
+ int thread_id,
+ int request_id,
+ const std::vector<std::string>& strings,
+ CacheStorage::CacheStorageError error) {
+ if (error != CacheStorage::CACHE_STORAGE_ERROR_NO_ERROR) {
+ Send(new CacheStorageMsg_CacheStorageKeysError(
+ thread_id, request_id, ToWebServiceWorkerCacheError(error)));
+ return;
+ }
+
+ std::vector<base::string16> string16s;
+ for (size_t i = 0, max = strings.size(); i < max; ++i) {
+ string16s.push_back(base::UTF8ToUTF16(strings[i]));
+ }
+ Send(new CacheStorageMsg_CacheStorageKeysSuccess(thread_id, request_id,
+ string16s));
+}
+
+void CacheStorageListener::OnCacheStorageMatchCallback(
+ int thread_id,
+ int request_id,
+ CacheStorageCache::ErrorType error,
+ scoped_ptr<ServiceWorkerResponse> response,
+ scoped_ptr<storage::BlobDataHandle> blob_data_handle) {
+ if (error != CacheStorageCache::ERROR_TYPE_OK) {
+ Send(new CacheStorageMsg_CacheStorageMatchError(
+ thread_id, request_id, CacheErrorToWebServiceWorkerCacheError(error)));
+ return;
+ }
+
+ if (blob_data_handle)
+ StoreBlobDataHandle(blob_data_handle.Pass());
+
+ Send(new CacheStorageMsg_CacheStorageMatchSuccess(thread_id, request_id,
+ *response));
+}
+
void CacheStorageListener::OnCacheMatchCallback(
int thread_id,
int request_id,
« no previous file with comments | « content/browser/cache_storage/cache_storage_listener.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698