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

Unified Diff: content/browser/service_worker/service_worker_cache_listener.cc

Issue 1039763002: Cache Storage: Move files to content/*/cache_storage, rename classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: GN fix Created 5 years, 9 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
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
deleted file mode 100644
index a4e3cf9a91e0c4cec213e59404bd1ceb76c145f2..0000000000000000000000000000000000000000
--- a/content/browser/service_worker/service_worker_cache_listener.cc
+++ /dev/null
@@ -1,516 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/service_worker/service_worker_cache_listener.h"
-
-#include "base/bind.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/trace_event/trace_event.h"
-#include "content/browser/service_worker/cache_storage_context_impl.h"
-#include "content/browser/service_worker/service_worker_cache.h"
-#include "content/browser/service_worker/service_worker_cache_storage_manager.h"
-#include "content/common/service_worker/cache_storage_messages.h"
-#include "storage/browser/blob/blob_data_handle.h"
-#include "third_party/WebKit/public/platform/WebServiceWorkerCacheError.h"
-
-namespace content {
-
-using blink::WebServiceWorkerCacheError;
-
-namespace {
-
-WebServiceWorkerCacheError ToWebServiceWorkerCacheError(
- ServiceWorkerCacheStorage::CacheStorageError err) {
- switch (err) {
- case ServiceWorkerCacheStorage::CACHE_STORAGE_ERROR_NO_ERROR:
- NOTREACHED();
- return blink::WebServiceWorkerCacheErrorNotImplemented;
- case ServiceWorkerCacheStorage::CACHE_STORAGE_ERROR_NOT_IMPLEMENTED:
- return blink::WebServiceWorkerCacheErrorNotImplemented;
- case ServiceWorkerCacheStorage::CACHE_STORAGE_ERROR_NOT_FOUND:
- return blink::WebServiceWorkerCacheErrorNotFound;
- case ServiceWorkerCacheStorage::CACHE_STORAGE_ERROR_EXISTS:
- return blink::WebServiceWorkerCacheErrorExists;
- case ServiceWorkerCacheStorage::CACHE_STORAGE_ERROR_STORAGE:
- // TODO(jkarlin): Change this to CACHE_STORAGE_ERROR_STORAGE once that's
- // added.
- return blink::WebServiceWorkerCacheErrorNotFound;
- case ServiceWorkerCacheStorage::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): ServiceWorkerCache and ServiceWorkerCacheStorage should share
-// an error enum type.
-WebServiceWorkerCacheError CacheErrorToWebServiceWorkerCacheError(
- ServiceWorkerCache::ErrorType err) {
- switch (err) {
- case ServiceWorkerCache::ERROR_TYPE_OK:
- NOTREACHED();
- return blink::WebServiceWorkerCacheErrorNotImplemented;
- case ServiceWorkerCache::ERROR_TYPE_EXISTS:
- return blink::WebServiceWorkerCacheErrorExists;
- case ServiceWorkerCache::ERROR_TYPE_STORAGE:
- // TODO(jkarlin): Change this to CACHE_STORAGE_ERROR_STORAGE once that's
- // added.
- return blink::WebServiceWorkerCacheErrorNotFound;
- case ServiceWorkerCache::ERROR_TYPE_NOT_FOUND:
- return blink::WebServiceWorkerCacheErrorNotFound;
- }
- NOTREACHED();
- return blink::WebServiceWorkerCacheErrorNotImplemented;
-}
-
-} // namespace
-
-ServiceWorkerCacheListener::ServiceWorkerCacheListener(
- CacheStorageDispatcherHost* dispatcher,
- CacheStorageContextImpl* context)
- : dispatcher_(dispatcher), context_(context), weak_factory_(this) {
-}
-
-ServiceWorkerCacheListener::~ServiceWorkerCacheListener() {
-}
-
-bool ServiceWorkerCacheListener::OnMessageReceived(
- const IPC::Message& message) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(ServiceWorkerCacheListener, message)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheStorageHas,
- OnCacheStorageHas)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheStorageOpen,
- OnCacheStorageOpen)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheStorageDelete,
- OnCacheStorageDelete)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheStorageKeys,
- OnCacheStorageKeys)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheStorageMatch,
- OnCacheStorageMatch)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheMatch,
- OnCacheMatch)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheMatchAll,
- OnCacheMatchAll)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheKeys,
- OnCacheKeys)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheBatch,
- OnCacheBatch)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_CacheClosed,
- OnCacheClosed)
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_BlobDataHandled, OnBlobDataHandled)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
-
- return handled;
-}
-
-void ServiceWorkerCacheListener::OnCacheStorageHas(
- int thread_id,
- int request_id,
- const GURL& origin,
- const base::string16& cache_name) {
- TRACE_EVENT0("ServiceWorker",
- "ServiceWorkerCacheListener::OnCacheStorageHas");
- context_->cache_manager()->HasCache(
- origin, base::UTF16ToUTF8(cache_name),
- base::Bind(&ServiceWorkerCacheListener::OnCacheStorageHasCallback,
- weak_factory_.GetWeakPtr(), thread_id, request_id));
-}
-
-void ServiceWorkerCacheListener::OnCacheStorageOpen(
- int thread_id,
- int request_id,
- const GURL& origin,
- const base::string16& cache_name) {
- TRACE_EVENT0("ServiceWorker",
- "ServiceWorkerCacheListener::OnCacheStorageOpen");
- context_->cache_manager()->OpenCache(
- origin, base::UTF16ToUTF8(cache_name),
- base::Bind(&ServiceWorkerCacheListener::OnCacheStorageOpenCallback,
- weak_factory_.GetWeakPtr(), thread_id, request_id));
-}
-
-void ServiceWorkerCacheListener::OnCacheStorageDelete(
- int thread_id,
- int request_id,
- const GURL& origin,
- const base::string16& cache_name) {
- TRACE_EVENT0("ServiceWorker",
- "ServiceWorkerCacheListener::OnCacheStorageDelete");
- context_->cache_manager()->DeleteCache(
- origin, base::UTF16ToUTF8(cache_name),
- base::Bind(&ServiceWorkerCacheListener::OnCacheStorageDeleteCallback,
- weak_factory_.GetWeakPtr(), thread_id, request_id));
-}
-
-void ServiceWorkerCacheListener::OnCacheStorageKeys(int thread_id,
- int request_id,
- const GURL& origin) {
- TRACE_EVENT0("ServiceWorker",
- "ServiceWorkerCacheListener::OnCacheStorageKeys");
- context_->cache_manager()->EnumerateCaches(
- origin,
- base::Bind(&ServiceWorkerCacheListener::OnCacheStorageKeysCallback,
- weak_factory_.GetWeakPtr(), thread_id, request_id));
-}
-
-void ServiceWorkerCacheListener::OnCacheStorageMatch(
- int thread_id,
- int request_id,
- const GURL& origin,
- const ServiceWorkerFetchRequest& request,
- const ServiceWorkerCacheQueryParams& match_params) {
- TRACE_EVENT0("ServiceWorker",
- "ServiceWorkerCacheListener::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(&ServiceWorkerCacheListener::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(&ServiceWorkerCacheListener::OnCacheStorageMatchCallback,
- weak_factory_.GetWeakPtr(), thread_id, request_id));
-}
-
-void ServiceWorkerCacheListener::OnCacheMatch(
- int thread_id,
- int request_id,
- int cache_id,
- const ServiceWorkerFetchRequest& request,
- const ServiceWorkerCacheQueryParams& match_params) {
- IDToCacheMap::iterator it = id_to_cache_map_.find(cache_id);
- if (it == id_to_cache_map_.end()) {
- Send(new ServiceWorkerMsg_CacheMatchError(
- thread_id, request_id, blink::WebServiceWorkerCacheErrorNotFound));
- return;
- }
-
- scoped_refptr<ServiceWorkerCache> cache = it->second;
- scoped_ptr<ServiceWorkerFetchRequest> scoped_request(
- new ServiceWorkerFetchRequest(request.url,
- request.method,
- request.headers,
- request.referrer,
- request.is_reload));
- cache->Match(
- scoped_request.Pass(),
- base::Bind(&ServiceWorkerCacheListener::OnCacheMatchCallback,
- weak_factory_.GetWeakPtr(), thread_id, request_id, cache));
-}
-
-void ServiceWorkerCacheListener::OnCacheMatchAll(
- int thread_id,
- int request_id,
- int cache_id,
- const ServiceWorkerFetchRequest& request,
- const ServiceWorkerCacheQueryParams& match_params) {
- // TODO(gavinp,jkarlin): Implement this method.
- Send(new ServiceWorkerMsg_CacheMatchAllError(
- thread_id, request_id, blink::WebServiceWorkerCacheErrorNotImplemented));
-}
-
-void ServiceWorkerCacheListener::OnCacheKeys(
- int thread_id,
- int request_id,
- int cache_id,
- const ServiceWorkerFetchRequest& request,
- const ServiceWorkerCacheQueryParams& match_params) {
- IDToCacheMap::iterator it = id_to_cache_map_.find(cache_id);
- if (it == id_to_cache_map_.end()) {
- Send(new ServiceWorkerMsg_CacheKeysError(
- thread_id, request_id, blink::WebServiceWorkerCacheErrorNotFound));
- return;
- }
-
- scoped_refptr<ServiceWorkerCache> cache = it->second;
-
- cache->Keys(base::Bind(&ServiceWorkerCacheListener::OnCacheKeysCallback,
- weak_factory_.GetWeakPtr(), thread_id, request_id,
- cache));
-}
-
-void ServiceWorkerCacheListener::OnCacheBatch(
- int thread_id,
- int request_id,
- int cache_id,
- const std::vector<ServiceWorkerBatchOperation>& operations) {
- if (operations.size() != 1u) {
- Send(new ServiceWorkerMsg_CacheBatchError(
- thread_id, request_id,
- blink::WebServiceWorkerCacheErrorNotImplemented));
- return;
- }
-
- IDToCacheMap::iterator it = id_to_cache_map_.find(cache_id);
- if (it == id_to_cache_map_.end()) {
- Send(new ServiceWorkerMsg_CacheBatchError(
- thread_id, request_id, blink::WebServiceWorkerCacheErrorNotFound));
- return;
- }
-
- const ServiceWorkerBatchOperation& operation = operations[0];
-
- scoped_refptr<ServiceWorkerCache> cache = it->second;
- scoped_ptr<ServiceWorkerFetchRequest> scoped_request(
- new ServiceWorkerFetchRequest(operation.request.url,
- operation.request.method,
- operation.request.headers,
- operation.request.referrer,
- operation.request.is_reload));
-
- if (operation.operation_type == SERVICE_WORKER_CACHE_OPERATION_TYPE_DELETE) {
- cache->Delete(
- scoped_request.Pass(),
- base::Bind(&ServiceWorkerCacheListener::OnCacheDeleteCallback,
- weak_factory_.GetWeakPtr(), thread_id, request_id, cache));
- return;
- }
-
- if (operation.operation_type == SERVICE_WORKER_CACHE_OPERATION_TYPE_PUT) {
- // We don't support streaming for cache.
- DCHECK(operation.response.stream_url.is_empty());
- scoped_ptr<ServiceWorkerResponse> scoped_response(
- new ServiceWorkerResponse(operation.response.url,
- operation.response.status_code,
- operation.response.status_text,
- operation.response.response_type,
- operation.response.headers,
- operation.response.blob_uuid,
- operation.response.blob_size,
- operation.response.stream_url));
- cache->Put(
- scoped_request.Pass(), scoped_response.Pass(),
- base::Bind(&ServiceWorkerCacheListener::OnCachePutCallback,
- weak_factory_.GetWeakPtr(), thread_id, request_id, cache));
-
- return;
- }
-
- Send(new ServiceWorkerMsg_CacheBatchError(
- thread_id, request_id, blink::WebServiceWorkerCacheErrorNotImplemented));
-}
-
-void ServiceWorkerCacheListener::OnCacheClosed(int cache_id) {
- DropCacheReference(cache_id);
-}
-
-void ServiceWorkerCacheListener::OnBlobDataHandled(const std::string& uuid) {
- DropBlobDataHandle(uuid);
-}
-
-void ServiceWorkerCacheListener::Send(IPC::Message* message) {
- dispatcher_->Send(message);
-}
-
-void ServiceWorkerCacheListener::OnCacheStorageHasCallback(
- int thread_id,
- int request_id,
- bool has_cache,
- ServiceWorkerCacheStorage::CacheStorageError error) {
- if (error != ServiceWorkerCacheStorage::CACHE_STORAGE_ERROR_NO_ERROR) {
- Send(new ServiceWorkerMsg_CacheStorageHasError(
- thread_id, request_id, ToWebServiceWorkerCacheError(error)));
- return;
- }
- if (!has_cache) {
- Send(new ServiceWorkerMsg_CacheStorageHasError(
- thread_id, request_id, blink::WebServiceWorkerCacheErrorNotFound));
- return;
- }
- Send(new ServiceWorkerMsg_CacheStorageHasSuccess(thread_id, request_id));
-}
-
-void ServiceWorkerCacheListener::OnCacheStorageOpenCallback(
- int thread_id,
- int request_id,
- const scoped_refptr<ServiceWorkerCache>& cache,
- ServiceWorkerCacheStorage::CacheStorageError error) {
- if (error != ServiceWorkerCacheStorage::CACHE_STORAGE_ERROR_NO_ERROR) {
- Send(new ServiceWorkerMsg_CacheStorageOpenError(
- thread_id, request_id, ToWebServiceWorkerCacheError(error)));
- return;
- }
- CacheID cache_id = StoreCacheReference(cache);
- Send(new ServiceWorkerMsg_CacheStorageOpenSuccess(thread_id, request_id,
- cache_id));
-}
-
-void ServiceWorkerCacheListener::OnCacheStorageDeleteCallback(
- int thread_id,
- int request_id,
- bool deleted,
- ServiceWorkerCacheStorage::CacheStorageError error) {
- if (!deleted ||
- error != ServiceWorkerCacheStorage::CACHE_STORAGE_ERROR_NO_ERROR) {
- Send(new ServiceWorkerMsg_CacheStorageDeleteError(
- thread_id, request_id, ToWebServiceWorkerCacheError(error)));
- return;
- }
- Send(new ServiceWorkerMsg_CacheStorageDeleteSuccess(thread_id, request_id));
-}
-
-void ServiceWorkerCacheListener::OnCacheStorageKeysCallback(
- int thread_id,
- int request_id,
- const std::vector<std::string>& strings,
- ServiceWorkerCacheStorage::CacheStorageError error) {
- if (error != ServiceWorkerCacheStorage::CACHE_STORAGE_ERROR_NO_ERROR) {
- Send(new ServiceWorkerMsg_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 ServiceWorkerMsg_CacheStorageKeysSuccess(thread_id, request_id,
- string16s));
-}
-
-void ServiceWorkerCacheListener::OnCacheStorageMatchCallback(
- int thread_id,
- int request_id,
- ServiceWorkerCache::ErrorType error,
- scoped_ptr<ServiceWorkerResponse> response,
- scoped_ptr<storage::BlobDataHandle> blob_data_handle) {
- if (error != ServiceWorkerCache::ERROR_TYPE_OK) {
- Send(new ServiceWorkerMsg_CacheStorageMatchError(
- thread_id, request_id, CacheErrorToWebServiceWorkerCacheError(error)));
- return;
- }
-
- if (blob_data_handle)
- StoreBlobDataHandle(blob_data_handle.Pass());
-
- Send(new ServiceWorkerMsg_CacheStorageMatchSuccess(thread_id, request_id,
- *response));
-}
-
-void ServiceWorkerCacheListener::OnCacheMatchCallback(
- int thread_id,
- int request_id,
- const scoped_refptr<ServiceWorkerCache>& cache,
- ServiceWorkerCache::ErrorType error,
- scoped_ptr<ServiceWorkerResponse> response,
- scoped_ptr<storage::BlobDataHandle> blob_data_handle) {
- if (error != ServiceWorkerCache::ERROR_TYPE_OK) {
- Send(new ServiceWorkerMsg_CacheMatchError(
- thread_id, request_id, CacheErrorToWebServiceWorkerCacheError(error)));
- return;
- }
-
- if (blob_data_handle)
- StoreBlobDataHandle(blob_data_handle.Pass());
-
- Send(
- new ServiceWorkerMsg_CacheMatchSuccess(thread_id, request_id, *response));
-}
-
-void ServiceWorkerCacheListener::OnCacheKeysCallback(
- int thread_id,
- int request_id,
- const scoped_refptr<ServiceWorkerCache>& cache,
- ServiceWorkerCache::ErrorType error,
- scoped_ptr<ServiceWorkerCache::Requests> requests) {
- if (error != ServiceWorkerCache::ERROR_TYPE_OK) {
- Send(new ServiceWorkerMsg_CacheKeysError(
- thread_id, request_id, CacheErrorToWebServiceWorkerCacheError(error)));
- return;
- }
-
- ServiceWorkerCache::Requests out;
-
- for (ServiceWorkerCache::Requests::const_iterator it = requests->begin();
- it != requests->end();
- ++it) {
- ServiceWorkerFetchRequest request(
- it->url, it->method, it->headers, it->referrer, it->is_reload);
- out.push_back(request);
- }
-
- Send(new ServiceWorkerMsg_CacheKeysSuccess(thread_id, request_id, out));
-}
-
-void ServiceWorkerCacheListener::OnCacheDeleteCallback(
- int thread_id,
- int request_id,
- const scoped_refptr<ServiceWorkerCache>& cache,
- ServiceWorkerCache::ErrorType error) {
- if (error != ServiceWorkerCache::ERROR_TYPE_OK) {
- Send(new ServiceWorkerMsg_CacheBatchError(
- thread_id, request_id, CacheErrorToWebServiceWorkerCacheError(error)));
- return;
- }
-
- Send(new ServiceWorkerMsg_CacheBatchSuccess(
- thread_id, request_id, std::vector<ServiceWorkerResponse>()));
-}
-
-void ServiceWorkerCacheListener::OnCachePutCallback(
- int thread_id,
- int request_id,
- const scoped_refptr<ServiceWorkerCache>& cache,
- ServiceWorkerCache::ErrorType error,
- scoped_ptr<ServiceWorkerResponse> response,
- scoped_ptr<storage::BlobDataHandle> blob_data_handle) {
- if (error != ServiceWorkerCache::ERROR_TYPE_OK) {
- Send(new ServiceWorkerMsg_CacheBatchError(
- thread_id, request_id, CacheErrorToWebServiceWorkerCacheError(error)));
- return;
- }
-
- if (blob_data_handle)
- StoreBlobDataHandle(blob_data_handle.Pass());
-
- std::vector<ServiceWorkerResponse> responses;
- responses.push_back(*response);
- Send(
- new ServiceWorkerMsg_CacheBatchSuccess(thread_id, request_id, responses));
-}
-
-ServiceWorkerCacheListener::CacheID
-ServiceWorkerCacheListener::StoreCacheReference(
- const scoped_refptr<ServiceWorkerCache>& cache) {
- int cache_id = next_cache_id_++;
- id_to_cache_map_[cache_id] = cache;
- return cache_id;
-}
-
-void ServiceWorkerCacheListener::DropCacheReference(CacheID cache_id) {
- id_to_cache_map_.erase(cache_id);
-}
-
-void ServiceWorkerCacheListener::StoreBlobDataHandle(
- scoped_ptr<storage::BlobDataHandle> blob_data_handle) {
- DCHECK(blob_data_handle);
- std::pair<UUIDToBlobDataHandleList::iterator, bool> rv =
- blob_handle_store_.insert(std::make_pair(
- blob_data_handle->uuid(), std::list<storage::BlobDataHandle>()));
- rv.first->second.push_front(storage::BlobDataHandle(*blob_data_handle));
-}
-
-void ServiceWorkerCacheListener::DropBlobDataHandle(std::string uuid) {
- UUIDToBlobDataHandleList::iterator it = blob_handle_store_.find(uuid);
- if (it == blob_handle_store_.end())
- return;
- DCHECK(!it->second.empty());
- it->second.pop_front();
- if (it->second.empty())
- blob_handle_store_.erase(it);
-}
-
-} // namespace content

Powered by Google App Engine
This is Rietveld 408576698