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

Unified Diff: content/renderer/service_worker/service_worker_cache_storage_dispatcher.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/renderer/service_worker/service_worker_cache_storage_dispatcher.cc
diff --git a/content/renderer/service_worker/service_worker_cache_storage_dispatcher.cc b/content/renderer/service_worker/service_worker_cache_storage_dispatcher.cc
deleted file mode 100644
index c7466cbaf7ae2faa3bcb9d5954d70d86f73f43f3..0000000000000000000000000000000000000000
--- a/content/renderer/service_worker/service_worker_cache_storage_dispatcher.cc
+++ /dev/null
@@ -1,692 +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/renderer/service_worker/service_worker_cache_storage_dispatcher.h"
-
-#include <map>
-#include <string>
-#include <utility>
-
-#include "base/lazy_instance.h"
-#include "base/logging.h"
-#include "base/metrics/histogram_macros.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/threading/thread_local.h"
-#include "content/child/thread_safe_sender.h"
-#include "content/common/service_worker/cache_storage_messages.h"
-#include "content/public/common/referrer.h"
-#include "content/public/renderer/render_thread.h"
-#include "content/renderer/service_worker/service_worker_type_util.h"
-#include "third_party/WebKit/public/platform/WebServiceWorkerCache.h"
-#include "third_party/WebKit/public/platform/WebServiceWorkerRequest.h"
-#include "third_party/WebKit/public/platform/WebServiceWorkerResponse.h"
-
-using base::TimeTicks;
-
-namespace content {
-
-using blink::WebServiceWorkerCacheStorage;
-using blink::WebServiceWorkerCacheError;
-using blink::WebServiceWorkerRequest;
-
-static base::LazyInstance<
- base::ThreadLocalPointer<ServiceWorkerCacheStorageDispatcher>>::Leaky
- g_cache_storage_dispatcher_tls = LAZY_INSTANCE_INITIALIZER;
-
-namespace {
-
-ServiceWorkerCacheStorageDispatcher* const kHasBeenDeleted =
- reinterpret_cast<ServiceWorkerCacheStorageDispatcher*>(0x1);
-
-ServiceWorkerFetchRequest FetchRequestFromWebRequest(
- const blink::WebServiceWorkerRequest& web_request) {
- ServiceWorkerHeaderMap headers;
- GetServiceWorkerHeaderMapFromWebRequest(web_request, &headers);
-
- return ServiceWorkerFetchRequest(
- web_request.url(), base::UTF16ToASCII(web_request.method()), headers,
- Referrer(web_request.referrerUrl(), web_request.referrerPolicy()),
- web_request.isReload());
-}
-
-void PopulateWebRequestFromFetchRequest(
- const ServiceWorkerFetchRequest& request,
- blink::WebServiceWorkerRequest* web_request) {
- web_request->setURL(request.url);
- web_request->setMethod(base::ASCIIToUTF16(request.method));
- for (ServiceWorkerHeaderMap::const_iterator i = request.headers.begin(),
- end = request.headers.end();
- i != end; ++i) {
- web_request->setHeader(base::ASCIIToUTF16(i->first),
- base::ASCIIToUTF16(i->second));
- }
- web_request->setReferrer(base::ASCIIToUTF16(request.referrer.url.spec()),
- request.referrer.policy);
- web_request->setIsReload(request.is_reload);
-}
-
-blink::WebVector<blink::WebServiceWorkerRequest> WebRequestsFromRequests(
- const std::vector<ServiceWorkerFetchRequest>& requests) {
- blink::WebVector<blink::WebServiceWorkerRequest>
- web_requests(requests.size());
- for (size_t i = 0; i < requests.size(); ++i)
- PopulateWebRequestFromFetchRequest(requests[i], &(web_requests[i]));
- return web_requests;
-}
-
-ServiceWorkerResponse ResponseFromWebResponse(
- const blink::WebServiceWorkerResponse& web_response) {
- ServiceWorkerHeaderMap headers;
- GetServiceWorkerHeaderMapFromWebResponse(web_response, &headers);
- // We don't support streaming for cache.
- DCHECK(web_response.streamURL().isEmpty());
- return ServiceWorkerResponse(web_response.url(),
- web_response.status(),
- base::UTF16ToASCII(web_response.statusText()),
- web_response.responseType(),
- headers,
- base::UTF16ToASCII(web_response.blobUUID()),
- web_response.blobSize(),
- web_response.streamURL());
-}
-
-ServiceWorkerCacheQueryParams QueryParamsFromWebQueryParams(
- const blink::WebServiceWorkerCache::QueryParams& web_query_params) {
- ServiceWorkerCacheQueryParams query_params;
- query_params.ignore_search = web_query_params.ignoreSearch;
- query_params.ignore_method = web_query_params.ignoreMethod;
- query_params.ignore_vary = web_query_params.ignoreVary;
- query_params.cache_name = web_query_params.cacheName;
- return query_params;
-}
-
-ServiceWorkerCacheOperationType CacheOperationTypeFromWebCacheOperationType(
- blink::WebServiceWorkerCache::OperationType operation_type) {
- switch (operation_type) {
- case blink::WebServiceWorkerCache::OperationTypePut:
- return SERVICE_WORKER_CACHE_OPERATION_TYPE_PUT;
- case blink::WebServiceWorkerCache::OperationTypeDelete:
- return SERVICE_WORKER_CACHE_OPERATION_TYPE_DELETE;
- default:
- return SERVICE_WORKER_CACHE_OPERATION_TYPE_UNDEFINED;
- }
-}
-
-ServiceWorkerBatchOperation BatchOperationFromWebBatchOperation(
- const blink::WebServiceWorkerCache::BatchOperation& web_operation) {
- ServiceWorkerBatchOperation operation;
- operation.operation_type =
- CacheOperationTypeFromWebCacheOperationType(web_operation.operationType);
- operation.request = FetchRequestFromWebRequest(web_operation.request);
- operation.response = ResponseFromWebResponse(web_operation.response);
- operation.match_params =
- QueryParamsFromWebQueryParams(web_operation.matchParams);
- return operation;
-}
-
-template<typename T>
-void ClearCallbacksMapWithErrors(T* callbacks_map) {
- typename T::iterator iter(callbacks_map);
- while (!iter.IsAtEnd()) {
- blink::WebServiceWorkerCacheError reason =
- blink::WebServiceWorkerCacheErrorNotFound;
- iter.GetCurrentValue()->onError(&reason);
- callbacks_map->Remove(iter.GetCurrentKey());
- iter.Advance();
- }
-}
-
-} // namespace
-
-// The WebCache object is the Chromium side implementation of the Blink
-// WebServiceWorkerCache API. Most of its methods delegate directly to the
-// ServiceWorkerStorage object, which is able to assign unique IDs as well
-// as have a lifetime longer than the requests.
-class ServiceWorkerCacheStorageDispatcher::WebCache
- : public blink::WebServiceWorkerCache {
- public:
- WebCache(base::WeakPtr<ServiceWorkerCacheStorageDispatcher> dispatcher,
- int cache_id)
- : dispatcher_(dispatcher),
- cache_id_(cache_id) {}
-
- virtual ~WebCache() {
- if (dispatcher_)
- dispatcher_->OnWebCacheDestruction(cache_id_);
- }
-
- // From blink::WebServiceWorkerCache:
- virtual void dispatchMatch(CacheMatchCallbacks* callbacks,
- const blink::WebServiceWorkerRequest& request,
- const QueryParams& query_params) {
- if (!dispatcher_)
- return;
- dispatcher_->dispatchMatchForCache(cache_id_, callbacks, request,
- query_params);
- }
- virtual void dispatchMatchAll(CacheWithResponsesCallbacks* callbacks,
- const blink::WebServiceWorkerRequest& request,
- const QueryParams& query_params) {
- if (!dispatcher_)
- return;
- dispatcher_->dispatchMatchAllForCache(cache_id_, callbacks, request,
- query_params);
- }
- virtual void dispatchKeys(CacheWithRequestsCallbacks* callbacks,
- const blink::WebServiceWorkerRequest* request,
- const QueryParams& query_params) {
- if (!dispatcher_)
- return;
- dispatcher_->dispatchKeysForCache(cache_id_, callbacks, request,
- query_params);
- }
- virtual void dispatchBatch(
- CacheWithResponsesCallbacks* callbacks,
- const blink::WebVector<BatchOperation>& batch_operations) {
- if (!dispatcher_)
- return;
- dispatcher_->dispatchBatchForCache(cache_id_, callbacks, batch_operations);
- }
-
- private:
- const base::WeakPtr<ServiceWorkerCacheStorageDispatcher> dispatcher_;
- const int cache_id_;
-};
-
-ServiceWorkerCacheStorageDispatcher::ServiceWorkerCacheStorageDispatcher(
- ThreadSafeSender* thread_safe_sender)
- : thread_safe_sender_(thread_safe_sender), weak_factory_(this) {
- g_cache_storage_dispatcher_tls.Pointer()->Set(this);
-}
-
-ServiceWorkerCacheStorageDispatcher::~ServiceWorkerCacheStorageDispatcher() {
- ClearCallbacksMapWithErrors(&has_callbacks_);
- ClearCallbacksMapWithErrors(&open_callbacks_);
- ClearCallbacksMapWithErrors(&delete_callbacks_);
- ClearCallbacksMapWithErrors(&keys_callbacks_);
- ClearCallbacksMapWithErrors(&match_callbacks_);
-
- ClearCallbacksMapWithErrors(&cache_match_callbacks_);
- ClearCallbacksMapWithErrors(&cache_match_all_callbacks_);
- ClearCallbacksMapWithErrors(&cache_keys_callbacks_);
- ClearCallbacksMapWithErrors(&cache_batch_callbacks_);
-
- g_cache_storage_dispatcher_tls.Pointer()->Set(kHasBeenDeleted);
-}
-
-ServiceWorkerCacheStorageDispatcher*
-ServiceWorkerCacheStorageDispatcher::ThreadSpecificInstance(
- ThreadSafeSender* thread_safe_sender) {
- if (g_cache_storage_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted) {
- NOTREACHED() << "Re-instantiating TLS ServiceWorkerCacheStorageDispatcher.";
- g_cache_storage_dispatcher_tls.Pointer()->Set(NULL);
- }
- if (g_cache_storage_dispatcher_tls.Pointer()->Get())
- return g_cache_storage_dispatcher_tls.Pointer()->Get();
-
- ServiceWorkerCacheStorageDispatcher* dispatcher =
- new ServiceWorkerCacheStorageDispatcher(thread_safe_sender);
- if (WorkerTaskRunner::Instance()->CurrentWorkerId())
- WorkerTaskRunner::Instance()->AddStopObserver(dispatcher);
- return dispatcher;
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnWorkerRunLoopStopped() {
- delete this;
-}
-
-bool ServiceWorkerCacheStorageDispatcher::Send(IPC::Message* msg) {
- return thread_safe_sender_->Send(msg);
-}
-
-bool ServiceWorkerCacheStorageDispatcher::OnMessageReceived(
- const IPC::Message& message) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(ServiceWorkerCacheStorageDispatcher, message)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheStorageHasSuccess,
- OnCacheStorageHasSuccess)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheStorageOpenSuccess,
- OnCacheStorageOpenSuccess)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheStorageDeleteSuccess,
- OnCacheStorageDeleteSuccess)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheStorageKeysSuccess,
- OnCacheStorageKeysSuccess)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheStorageMatchSuccess,
- OnCacheStorageMatchSuccess)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheStorageHasError,
- OnCacheStorageHasError)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheStorageOpenError,
- OnCacheStorageOpenError)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheStorageDeleteError,
- OnCacheStorageDeleteError)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheStorageKeysError,
- OnCacheStorageKeysError)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheStorageMatchError,
- OnCacheStorageMatchError)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheMatchSuccess,
- OnCacheMatchSuccess)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheMatchAllSuccess,
- OnCacheMatchAllSuccess)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheKeysSuccess,
- OnCacheKeysSuccess)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheBatchSuccess,
- OnCacheBatchSuccess)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheMatchError,
- OnCacheMatchError)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheMatchAllError,
- OnCacheMatchAllError)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheKeysError,
- OnCacheKeysError)
- IPC_MESSAGE_HANDLER(ServiceWorkerMsg_CacheBatchError,
- OnCacheBatchError)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
-
- return handled;
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheStorageHasSuccess(
- int thread_id,
- int request_id) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- UMA_HISTOGRAM_TIMES("ServiceWorkerCache.CacheStorage.Has",
- TimeTicks::Now() - has_times_[request_id]);
- WebServiceWorkerCacheStorage::CacheStorageCallbacks* callbacks =
- has_callbacks_.Lookup(request_id);
- callbacks->onSuccess();
- has_callbacks_.Remove(request_id);
- has_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheStorageOpenSuccess(
- int thread_id,
- int request_id,
- int cache_id) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- WebCache* web_cache = new WebCache(weak_factory_.GetWeakPtr(), cache_id);
- web_caches_.AddWithID(web_cache, cache_id);
- UMA_HISTOGRAM_TIMES("ServiceWorkerCache.CacheStorage.Open",
- TimeTicks::Now() - open_times_[request_id]);
- WebServiceWorkerCacheStorage::CacheStorageWithCacheCallbacks* callbacks =
- open_callbacks_.Lookup(request_id);
- callbacks->onSuccess(web_cache);
- open_callbacks_.Remove(request_id);
- open_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheStorageDeleteSuccess(
- int thread_id,
- int request_id) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- UMA_HISTOGRAM_TIMES("ServiceWorkerCache.CacheStorage.Delete",
- TimeTicks::Now() - delete_times_[request_id]);
- WebServiceWorkerCacheStorage::CacheStorageCallbacks* callbacks =
- delete_callbacks_.Lookup(request_id);
- callbacks->onSuccess();
- delete_callbacks_.Remove(request_id);
- delete_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheStorageKeysSuccess(
- int thread_id,
- int request_id,
- const std::vector<base::string16>& keys) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- blink::WebVector<blink::WebString> webKeys(keys.size());
- for (size_t i = 0; i < keys.size(); ++i)
- webKeys[i] = keys[i];
-
- UMA_HISTOGRAM_TIMES("ServiceWorkerCache.CacheStorage.Keys",
- TimeTicks::Now() - keys_times_[request_id]);
- WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks* callbacks =
- keys_callbacks_.Lookup(request_id);
- callbacks->onSuccess(&webKeys);
- keys_callbacks_.Remove(request_id);
- keys_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheStorageMatchSuccess(
- int thread_id,
- int request_id,
- const ServiceWorkerResponse& response) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- blink::WebServiceWorkerResponse web_response;
- PopulateWebResponseFromResponse(response, &web_response);
-
- UMA_HISTOGRAM_TIMES("ServiceWorkerCache.CacheStorage.Match",
- TimeTicks::Now() - match_times_[request_id]);
- WebServiceWorkerCacheStorage::CacheStorageMatchCallbacks* callbacks =
- match_callbacks_.Lookup(request_id);
- callbacks->onSuccess(&web_response);
- match_callbacks_.Remove(request_id);
- match_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheStorageHasError(
- int thread_id,
- int request_id,
- blink::WebServiceWorkerCacheError reason) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- WebServiceWorkerCacheStorage::CacheStorageCallbacks* callbacks =
- has_callbacks_.Lookup(request_id);
- callbacks->onError(&reason);
- has_callbacks_.Remove(request_id);
- has_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheStorageOpenError(
- int thread_id,
- int request_id,
- blink::WebServiceWorkerCacheError reason) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- WebServiceWorkerCacheStorage::CacheStorageWithCacheCallbacks* callbacks =
- open_callbacks_.Lookup(request_id);
- callbacks->onError(&reason);
- open_callbacks_.Remove(request_id);
- open_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheStorageDeleteError(
- int thread_id,
- int request_id,
- blink::WebServiceWorkerCacheError reason) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- WebServiceWorkerCacheStorage::CacheStorageCallbacks* callbacks =
- delete_callbacks_.Lookup(request_id);
- callbacks->onError(&reason);
- delete_callbacks_.Remove(request_id);
- delete_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheStorageKeysError(
- int thread_id,
- int request_id,
- blink::WebServiceWorkerCacheError reason) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks* callbacks =
- keys_callbacks_.Lookup(request_id);
- callbacks->onError(&reason);
- keys_callbacks_.Remove(request_id);
- keys_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheStorageMatchError(
- int thread_id,
- int request_id,
- blink::WebServiceWorkerCacheError reason) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- WebServiceWorkerCacheStorage::CacheStorageMatchCallbacks* callbacks =
- match_callbacks_.Lookup(request_id);
- callbacks->onError(&reason);
- match_callbacks_.Remove(request_id);
- match_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheMatchSuccess(
- int thread_id,
- int request_id,
- const ServiceWorkerResponse& response) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- blink::WebServiceWorkerResponse web_response;
- PopulateWebResponseFromResponse(response, &web_response);
-
- UMA_HISTOGRAM_TIMES("ServiceWorkerCache.Cache.Match",
- TimeTicks::Now() - cache_match_times_[request_id]);
- blink::WebServiceWorkerCache::CacheMatchCallbacks* callbacks =
- cache_match_callbacks_.Lookup(request_id);
- callbacks->onSuccess(&web_response);
- cache_match_callbacks_.Remove(request_id);
- cache_match_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheMatchAllSuccess(
- int thread_id,
- int request_id,
- const std::vector<ServiceWorkerResponse>& responses) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- blink::WebVector<blink::WebServiceWorkerResponse>
- web_responses = WebResponsesFromResponses(responses);
-
- UMA_HISTOGRAM_TIMES("ServiceWorkerCache.Cache.MatchAll",
- TimeTicks::Now() - cache_match_all_times_[request_id]);
- blink::WebServiceWorkerCache::CacheWithResponsesCallbacks* callbacks =
- cache_match_all_callbacks_.Lookup(request_id);
- callbacks->onSuccess(&web_responses);
- cache_match_all_callbacks_.Remove(request_id);
- cache_match_all_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheKeysSuccess(
- int thread_id,
- int request_id,
- const std::vector<ServiceWorkerFetchRequest>& requests) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- blink::WebVector<blink::WebServiceWorkerRequest>
- web_requests = WebRequestsFromRequests(requests);
-
- UMA_HISTOGRAM_TIMES("ServiceWorkerCache.Cache.Keys",
- TimeTicks::Now() - cache_keys_times_[request_id]);
- blink::WebServiceWorkerCache::CacheWithRequestsCallbacks* callbacks =
- cache_keys_callbacks_.Lookup(request_id);
- callbacks->onSuccess(&web_requests);
- cache_keys_callbacks_.Remove(request_id);
- cache_keys_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheBatchSuccess(
- int thread_id,
- int request_id,
- const std::vector<ServiceWorkerResponse>& responses) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- blink::WebVector<blink::WebServiceWorkerResponse>
- web_responses = WebResponsesFromResponses(responses);
-
- UMA_HISTOGRAM_TIMES("ServiceWorkerCache.Cache.Batch",
- TimeTicks::Now() - cache_batch_times_[request_id]);
- blink::WebServiceWorkerCache::CacheWithResponsesCallbacks* callbacks =
- cache_batch_callbacks_.Lookup(request_id);
- callbacks->onSuccess(&web_responses);
- cache_batch_callbacks_.Remove(request_id);
- cache_batch_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheMatchError(
- int thread_id,
- int request_id,
- blink::WebServiceWorkerCacheError reason) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- blink::WebServiceWorkerCache::CacheMatchCallbacks* callbacks =
- cache_match_callbacks_.Lookup(request_id);
- callbacks->onError(&reason);
- cache_match_callbacks_.Remove(request_id);
- cache_match_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheMatchAllError(
- int thread_id,
- int request_id,
- blink::WebServiceWorkerCacheError reason) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- blink::WebServiceWorkerCache::CacheWithResponsesCallbacks* callbacks =
- cache_match_all_callbacks_.Lookup(request_id);
- callbacks->onError(&reason);
- cache_match_all_callbacks_.Remove(request_id);
- cache_match_all_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheKeysError(
- int thread_id,
- int request_id,
- blink::WebServiceWorkerCacheError reason) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- blink::WebServiceWorkerCache::CacheWithRequestsCallbacks* callbacks =
- cache_keys_callbacks_.Lookup(request_id);
- callbacks->onError(&reason);
- cache_keys_callbacks_.Remove(request_id);
- cache_keys_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnCacheBatchError(
- int thread_id,
- int request_id,
- blink::WebServiceWorkerCacheError reason) {
- DCHECK_EQ(thread_id, CurrentWorkerId());
- blink::WebServiceWorkerCache::CacheWithResponsesCallbacks* callbacks =
- cache_batch_callbacks_.Lookup(request_id);
- callbacks->onError(&reason);
- cache_batch_callbacks_.Remove(request_id);
- cache_batch_times_.erase(request_id);
-}
-
-void ServiceWorkerCacheStorageDispatcher::dispatchHas(
- WebServiceWorkerCacheStorage::CacheStorageCallbacks* callbacks,
- const GURL& origin,
- const blink::WebString& cacheName) {
- int request_id = has_callbacks_.Add(callbacks);
- has_times_[request_id] = base::TimeTicks::Now();
- Send(new ServiceWorkerHostMsg_CacheStorageHas(CurrentWorkerId(), request_id,
- origin, cacheName));
-}
-
-void ServiceWorkerCacheStorageDispatcher::dispatchOpen(
- WebServiceWorkerCacheStorage::CacheStorageWithCacheCallbacks* callbacks,
- const GURL& origin,
- const blink::WebString& cacheName) {
- int request_id = open_callbacks_.Add(callbacks);
- open_times_[request_id] = base::TimeTicks::Now();
- Send(new ServiceWorkerHostMsg_CacheStorageOpen(CurrentWorkerId(), request_id,
- origin, cacheName));
-}
-
-void ServiceWorkerCacheStorageDispatcher::dispatchDelete(
- WebServiceWorkerCacheStorage::CacheStorageCallbacks* callbacks,
- const GURL& origin,
- const blink::WebString& cacheName) {
- int request_id = delete_callbacks_.Add(callbacks);
- delete_times_[request_id] = base::TimeTicks::Now();
- Send(new ServiceWorkerHostMsg_CacheStorageDelete(
- CurrentWorkerId(), request_id, origin, cacheName));
-}
-
-void ServiceWorkerCacheStorageDispatcher::dispatchKeys(
- WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks* callbacks,
- const GURL& origin) {
- int request_id = keys_callbacks_.Add(callbacks);
- keys_times_[request_id] = base::TimeTicks::Now();
- Send(new ServiceWorkerHostMsg_CacheStorageKeys(CurrentWorkerId(), request_id,
- origin));
-}
-
-void ServiceWorkerCacheStorageDispatcher::dispatchMatch(
- WebServiceWorkerCacheStorage::CacheStorageMatchCallbacks* callbacks,
- const GURL& origin,
- const blink::WebServiceWorkerRequest& request,
- const blink::WebServiceWorkerCache::QueryParams& query_params) {
- int request_id = match_callbacks_.Add(callbacks);
- match_times_[request_id] = base::TimeTicks::Now();
- Send(new ServiceWorkerHostMsg_CacheStorageMatch(
- CurrentWorkerId(), request_id, origin,
- FetchRequestFromWebRequest(request),
- QueryParamsFromWebQueryParams(query_params)));
-}
-
-void ServiceWorkerCacheStorageDispatcher::dispatchMatchForCache(
- int cache_id,
- blink::WebServiceWorkerCache::CacheMatchCallbacks* callbacks,
- const blink::WebServiceWorkerRequest& request,
- const blink::WebServiceWorkerCache::QueryParams& query_params) {
- int request_id = cache_match_callbacks_.Add(callbacks);
- cache_match_times_[request_id] = base::TimeTicks::Now();
-
- Send(new ServiceWorkerHostMsg_CacheMatch(
- CurrentWorkerId(), request_id, cache_id,
- FetchRequestFromWebRequest(request),
- QueryParamsFromWebQueryParams(query_params)));
-}
-
-void ServiceWorkerCacheStorageDispatcher::dispatchMatchAllForCache(
- int cache_id,
- blink::WebServiceWorkerCache::CacheWithResponsesCallbacks* callbacks,
- const blink::WebServiceWorkerRequest& request,
- const blink::WebServiceWorkerCache::QueryParams& query_params) {
- int request_id = cache_match_all_callbacks_.Add(callbacks);
- cache_match_all_times_[request_id] = base::TimeTicks::Now();
-
- Send(new ServiceWorkerHostMsg_CacheMatchAll(
- CurrentWorkerId(), request_id, cache_id,
- FetchRequestFromWebRequest(request),
- QueryParamsFromWebQueryParams(query_params)));
-}
-
-void ServiceWorkerCacheStorageDispatcher::dispatchKeysForCache(
- int cache_id,
- blink::WebServiceWorkerCache::CacheWithRequestsCallbacks* callbacks,
- const blink::WebServiceWorkerRequest* request,
- const blink::WebServiceWorkerCache::QueryParams& query_params) {
- int request_id = cache_keys_callbacks_.Add(callbacks);
- cache_keys_times_[request_id] = base::TimeTicks::Now();
-
- Send(new ServiceWorkerHostMsg_CacheKeys(
- CurrentWorkerId(), request_id, cache_id,
- request ? FetchRequestFromWebRequest(*request)
- : ServiceWorkerFetchRequest(),
- QueryParamsFromWebQueryParams(query_params)));
-}
-
-void ServiceWorkerCacheStorageDispatcher::dispatchBatchForCache(
- int cache_id,
- blink::WebServiceWorkerCache::CacheWithResponsesCallbacks* callbacks,
- const blink::WebVector<
- blink::WebServiceWorkerCache::BatchOperation>& web_operations) {
- int request_id = cache_batch_callbacks_.Add(callbacks);
- cache_batch_times_[request_id] = base::TimeTicks::Now();
-
- std::vector<ServiceWorkerBatchOperation> operations;
- operations.reserve(web_operations.size());
- for (size_t i = 0; i < web_operations.size(); ++i) {
- operations.push_back(
- BatchOperationFromWebBatchOperation(web_operations[i]));
- }
-
- Send(new ServiceWorkerHostMsg_CacheBatch(CurrentWorkerId(), request_id,
- cache_id, operations));
-}
-
-void ServiceWorkerCacheStorageDispatcher::OnWebCacheDestruction(int cache_id) {
- web_caches_.Remove(cache_id);
- Send(new ServiceWorkerHostMsg_CacheClosed(cache_id));
-}
-
-void ServiceWorkerCacheStorageDispatcher::PopulateWebResponseFromResponse(
- const ServiceWorkerResponse& response,
- blink::WebServiceWorkerResponse* web_response) {
- web_response->setURL(response.url);
- web_response->setStatus(response.status_code);
- web_response->setStatusText(base::ASCIIToUTF16(response.status_text));
- web_response->setResponseType(response.response_type);
-
- for (const auto& i : response.headers) {
- web_response->setHeader(base::ASCIIToUTF16(i.first),
- base::ASCIIToUTF16(i.second));
- }
-
- if (!response.blob_uuid.empty()) {
- web_response->setBlob(blink::WebString::fromUTF8(response.blob_uuid),
- response.blob_size);
- // Let the host know that it can release its reference to the blob.
- Send(new ServiceWorkerHostMsg_BlobDataHandled(response.blob_uuid));
- }
-}
-
-blink::WebVector<blink::WebServiceWorkerResponse>
-ServiceWorkerCacheStorageDispatcher::WebResponsesFromResponses(
- const std::vector<ServiceWorkerResponse>& responses) {
- blink::WebVector<blink::WebServiceWorkerResponse> web_responses(
- responses.size());
- for (size_t i = 0; i < responses.size(); ++i)
- PopulateWebResponseFromResponse(responses[i], &(web_responses[i]));
- return web_responses;
-}
-
-} // namespace content

Powered by Google App Engine
This is Rietveld 408576698