Index: Source/modules/serviceworkers/InspectorServiceWorkerCacheAgent.cpp |
diff --git a/Source/modules/serviceworkers/InspectorServiceWorkerCacheAgent.cpp b/Source/modules/serviceworkers/InspectorServiceWorkerCacheAgent.cpp |
deleted file mode 100644 |
index f05db4438ca3e496554b4c3414bb883a95de6c5d..0000000000000000000000000000000000000000 |
--- a/Source/modules/serviceworkers/InspectorServiceWorkerCacheAgent.cpp |
+++ /dev/null |
@@ -1,341 +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 "config.h" |
-#include "modules/serviceworkers/InspectorServiceWorkerCacheAgent.h" |
- |
-#include "core/InspectorBackendDispatcher.h" |
-#include "core/InspectorTypeBuilder.h" |
-#include "modules/serviceworkers/ServiceWorkerGlobalScope.h" |
-#include "modules/serviceworkers/ServiceWorkerGlobalScopeClient.h" |
-#include "platform/JSONValues.h" |
-#include "platform/heap/Handle.h" |
-#include "platform/weborigin/DatabaseIdentifier.h" |
-#include "public/platform/Platform.h" |
-#include "public/platform/WebServiceWorkerCache.h" |
-#include "public/platform/WebServiceWorkerCacheError.h" |
-#include "public/platform/WebServiceWorkerCacheStorage.h" |
-#include "public/platform/WebServiceWorkerRequest.h" |
-#include "public/platform/WebServiceWorkerResponse.h" |
-#include "public/platform/WebString.h" |
-#include "public/platform/WebURL.h" |
-#include "public/platform/WebVector.h" |
-#include "wtf/Noncopyable.h" |
-#include "wtf/OwnPtr.h" |
-#include "wtf/PassRefPtr.h" |
-#include "wtf/RefCounted.h" |
-#include "wtf/RefPtr.h" |
-#include "wtf/Vector.h" |
-#include "wtf/text/StringBuilder.h" |
- |
-#include <algorithm> |
- |
-using blink::TypeBuilder::Array; |
-using blink::TypeBuilder::ServiceWorkerCache::DataEntry; |
- |
-typedef blink::InspectorBackendDispatcher::ServiceWorkerCacheCommandHandler::DeleteCacheCallback DeleteCacheCallback; |
-typedef blink::InspectorBackendDispatcher::ServiceWorkerCacheCommandHandler::RequestCacheNamesCallback RequestCacheNamesCallback; |
-typedef blink::InspectorBackendDispatcher::ServiceWorkerCacheCommandHandler::RequestEntriesCallback RequestEntriesCallback; |
-typedef blink::InspectorBackendDispatcher::CallbackBase RequestCallback; |
- |
-namespace blink { |
- |
-namespace { |
- |
-PassOwnPtr<WebServiceWorkerCacheStorage> assertCacheStorage(ErrorString* errorString, ServiceWorkerGlobalScope* globalScope) |
-{ |
- String identifier = createDatabaseIdentifierFromSecurityOrigin(globalScope->securityOrigin()); |
- OwnPtr<WebServiceWorkerCacheStorage> caches = adoptPtr(Platform::current()->cacheStorage(identifier)); |
- if (!caches) { |
- *errorString = "Cache Storage not available in global scope."; |
- return nullptr; |
- } |
- return caches.release(); |
-} |
- |
-CString serviceWorkerCacheErrorString(WebServiceWorkerCacheError* error) |
-{ |
- switch (*error) { |
- case WebServiceWorkerCacheErrorNotImplemented: |
- return CString("not implemented."); |
- break; |
- case WebServiceWorkerCacheErrorNotFound: |
- return CString("not found."); |
- break; |
- case WebServiceWorkerCacheErrorExists: |
- return CString("cache already exists."); |
- break; |
- default: |
- return CString("unknown error."); |
- break; |
- } |
-} |
- |
-class RequestCacheNames |
- : public WebServiceWorkerCacheStorage::CacheStorageKeysCallbacks { |
- WTF_MAKE_NONCOPYABLE(RequestCacheNames); |
- |
-public: |
- RequestCacheNames(PassRefPtrWillBeRawPtr<RequestCacheNamesCallback> callback) |
- : m_callback(callback) |
- { |
- } |
- |
- virtual ~RequestCacheNames() { } |
- |
- void onSuccess(WebVector<WebString>* caches) |
- { |
- RefPtr<TypeBuilder::Array<String>> array = TypeBuilder::Array<String>::create(); |
- for (size_t i = 0; i < caches->size(); i++) { |
- array->addItem(String((*caches)[i])); |
- } |
- m_callback->sendSuccess(array); |
- } |
- |
- void onError(WebServiceWorkerCacheError* error) |
- { |
- m_callback->sendFailure(String::format("Error requesting cache names: %s", serviceWorkerCacheErrorString(error).data())); |
- } |
- |
-private: |
- RefPtrWillBePersistent<RequestCacheNamesCallback> m_callback; |
-}; |
- |
-struct DataRequestParams { |
- String cacheName; |
- int skipCount; |
- int pageSize; |
-}; |
- |
-struct RequestResponse { |
- RequestResponse() { } |
- RequestResponse(const String& request, const String& response) |
- : request(request) |
- , response(response) |
- { |
- } |
- String request; |
- String response; |
-}; |
- |
-class ResponsesAccumulator : public RefCounted<ResponsesAccumulator> { |
- WTF_MAKE_NONCOPYABLE(ResponsesAccumulator); |
- |
-public: |
- ResponsesAccumulator(int numResponses, const DataRequestParams& params, PassRefPtrWillBeRawPtr<RequestEntriesCallback> callback) |
- : m_params(params) |
- , m_numResponsesLeft(numResponses) |
- , m_responses(static_cast<size_t>(numResponses)) |
- , m_callback(callback) |
- { |
- } |
- |
- void addRequestResponsePair(const WebServiceWorkerRequest& request, const WebServiceWorkerResponse& response) |
- { |
- ASSERT(m_numResponsesLeft > 0); |
- RequestResponse& requestResponse = m_responses.at(m_responses.size() - m_numResponsesLeft); |
- requestResponse.request = request.url().string(); |
- requestResponse.response = response.statusText(); |
- |
- if (--m_numResponsesLeft != 0) |
- return; |
- |
- std::sort(m_responses.begin(), m_responses.end(), |
- [](const RequestResponse& a, const RequestResponse& b) |
- { |
- return WTF::codePointCompareLessThan(a.request, b.request); |
- }); |
- if (m_params.skipCount > 0) |
- m_responses.remove(0, m_params.skipCount); |
- bool hasMore = false; |
- if (static_cast<size_t>(m_params.pageSize) < m_responses.size()) { |
- m_responses.remove(m_params.pageSize, m_responses.size() - m_params.pageSize); |
- hasMore = true; |
- } |
- RefPtr<TypeBuilder::Array<DataEntry>> array = TypeBuilder::Array<DataEntry>::create(); |
- for (const auto& requestResponse : m_responses) { |
- RefPtr<DataEntry> entry = DataEntry::create() |
- .setRequest(JSONString::create(requestResponse.request)->toJSONString()) |
- .setResponse(JSONString::create(requestResponse.response)->toJSONString()); |
- array->addItem(entry); |
- } |
- m_callback->sendSuccess(array, hasMore); |
- } |
- |
-private: |
- DataRequestParams m_params; |
- int m_numResponsesLeft; |
- Vector<RequestResponse> m_responses; |
- RefPtrWillBePersistent<RequestEntriesCallback> m_callback; |
-}; |
- |
-class GetCacheResponsesForRequestData : public WebServiceWorkerCache::CacheMatchCallbacks { |
- WTF_MAKE_NONCOPYABLE(GetCacheResponsesForRequestData); |
- |
-public: |
- GetCacheResponsesForRequestData( |
- const DataRequestParams& params, const WebServiceWorkerRequest& request, |
- PassRefPtr<ResponsesAccumulator> accum, PassRefPtrWillBeRawPtr<RequestEntriesCallback> callback) |
- : m_params(params) |
- , m_request(request) |
- , m_accumulator(accum) |
- , m_callback(callback) |
- { |
- } |
- virtual ~GetCacheResponsesForRequestData() { } |
- |
- void onSuccess(WebServiceWorkerResponse* response) |
- { |
- m_accumulator->addRequestResponsePair(m_request, *response); |
- } |
- |
- void onError(WebServiceWorkerCacheError* error) |
- { |
- m_callback->sendFailure(String::format("Error requesting responses for cache %s: %s", m_params.cacheName.utf8().data(), serviceWorkerCacheErrorString(error).data())); |
- } |
- |
-private: |
- DataRequestParams m_params; |
- WebServiceWorkerRequest m_request; |
- RefPtr<ResponsesAccumulator> m_accumulator; |
- RefPtrWillBePersistent<RequestEntriesCallback> m_callback; |
-}; |
- |
-class GetCacheKeysForRequestData : public WebServiceWorkerCache::CacheWithRequestsCallbacks { |
- WTF_MAKE_NONCOPYABLE(GetCacheKeysForRequestData); |
- |
-public: |
- GetCacheKeysForRequestData(const DataRequestParams& params, PassOwnPtr<WebServiceWorkerCache> cache, PassRefPtrWillBeRawPtr<RequestEntriesCallback> callback) |
- : m_params(params) |
- , m_cache(cache) |
- , m_callback(callback) |
- { |
- } |
- virtual ~GetCacheKeysForRequestData() { } |
- |
- void onSuccess(WebVector<WebServiceWorkerRequest>* requests) |
- { |
- RefPtr<ResponsesAccumulator> accumulator = adoptRef(new ResponsesAccumulator(requests->size(), m_params, m_callback)); |
- |
- for (size_t i = 0; i < requests->size(); i++) { |
- const auto& request = (*requests)[i]; |
- auto* cacheRequest = new GetCacheResponsesForRequestData(m_params, request, accumulator, m_callback); |
- m_cache->dispatchMatch(cacheRequest, request, WebServiceWorkerCache::QueryParams()); |
- } |
- } |
- |
- void onError(WebServiceWorkerCacheError* error) |
- { |
- m_callback->sendFailure(String::format("Error requesting requests for cache %s: %s", m_params.cacheName.utf8().data(), serviceWorkerCacheErrorString(error).data())); |
- } |
- |
-private: |
- DataRequestParams m_params; |
- OwnPtr<WebServiceWorkerCache> m_cache; |
- RefPtrWillBePersistent<RequestEntriesCallback> m_callback; |
-}; |
- |
-class GetCacheForRequestData |
- : public WebServiceWorkerCacheStorage::CacheStorageWithCacheCallbacks { |
- WTF_MAKE_NONCOPYABLE(GetCacheForRequestData); |
- |
-public: |
- GetCacheForRequestData(const DataRequestParams& params, PassRefPtrWillBeRawPtr<RequestEntriesCallback> callback) |
- : m_params(params) |
- , m_callback(callback) |
- { |
- } |
- virtual ~GetCacheForRequestData() { } |
- |
- void onSuccess(WebServiceWorkerCache* cache) |
- { |
- auto* cacheRequest = new GetCacheKeysForRequestData(m_params, adoptPtr(cache), m_callback); |
- cache->dispatchKeys(cacheRequest, nullptr, WebServiceWorkerCache::QueryParams()); |
- } |
- |
- void onError(WebServiceWorkerCacheError* error) |
- { |
- m_callback->sendFailure(String::format("Error requesting cache %s: %s", m_params.cacheName.utf8().data(), serviceWorkerCacheErrorString(error).data())); |
- } |
- |
-private: |
- DataRequestParams m_params; |
- RefPtrWillBePersistent<RequestEntriesCallback> m_callback; |
-}; |
- |
-class DeleteCache : public WebServiceWorkerCacheStorage::CacheStorageCallbacks { |
- WTF_MAKE_NONCOPYABLE(DeleteCache); |
- |
-public: |
- DeleteCache(PassRefPtrWillBeRawPtr<DeleteCacheCallback> callback) |
- : m_callback(callback) |
- { |
- } |
- virtual ~DeleteCache() { } |
- |
- void onSuccess() |
- { |
- m_callback->sendSuccess(); |
- } |
- |
- void onError(WebServiceWorkerCacheError* error) |
- { |
- m_callback->sendFailure(String::format("Error requesting cache names: %s", serviceWorkerCacheErrorString(error).data())); |
- } |
- |
-private: |
- RefPtrWillBePersistent<DeleteCacheCallback> m_callback; |
-}; |
- |
-} // namespace |
- |
-InspectorServiceWorkerCacheAgent::InspectorServiceWorkerCacheAgent(ServiceWorkerGlobalScope* scope) |
- : InspectorBaseAgent<blink::InspectorServiceWorkerCacheAgent, InspectorFrontend::ServiceWorkerCache>("ServiceWorkerCache") |
- , m_globalScope(scope) |
-{ |
-} |
- |
-InspectorServiceWorkerCacheAgent::~InspectorServiceWorkerCacheAgent() { } |
- |
-DEFINE_TRACE(InspectorServiceWorkerCacheAgent) |
-{ |
- InspectorBaseAgent::trace(visitor); |
-} |
- |
-void InspectorServiceWorkerCacheAgent::requestCacheNames(ErrorString* errorString, PassRefPtrWillBeRawPtr<RequestCacheNamesCallback> callback) |
-{ |
- OwnPtr<WebServiceWorkerCacheStorage> cache = assertCacheStorage(errorString, m_globalScope); |
- if (!cache) { |
- callback->sendFailure(*errorString); |
- return; |
- } |
- cache->dispatchKeys(new RequestCacheNames(callback)); |
-} |
- |
- |
-void InspectorServiceWorkerCacheAgent::requestEntries(ErrorString* errorString, const String& cacheName, int skipCount, int pageSize, PassRefPtrWillBeRawPtr<RequestEntriesCallback> callback) |
-{ |
- OwnPtr<WebServiceWorkerCacheStorage> cache = assertCacheStorage(errorString, m_globalScope); |
- if (!cache) { |
- callback->sendFailure(*errorString); |
- return; |
- } |
- DataRequestParams params; |
- params.cacheName = cacheName; |
- params.pageSize = pageSize; |
- params.skipCount = skipCount; |
- cache->dispatchOpen(new GetCacheForRequestData(params, callback), WebString(cacheName)); |
-} |
- |
-void InspectorServiceWorkerCacheAgent::deleteCache(ErrorString* errorString, const String& cacheName, PassRefPtrWillBeRawPtr<DeleteCacheCallback> callback) |
-{ |
- OwnPtr<WebServiceWorkerCacheStorage> cache = assertCacheStorage(errorString, m_globalScope); |
- if (!cache) { |
- callback->sendFailure(*errorString); |
- return; |
- } |
- cache->dispatchDelete(new DeleteCache(callback), WebString(cacheName)); |
-} |
- |
-} // namespace blink |