1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef WebServiceWorkerCache_h 6 #define WebServiceWorkerCache_h 7 8 #include "public/platform/WebCallbacks.h" 9 #include "public/platform/WebCommon.h" 10 #include "public/platform/WebServiceWorkerCacheError.h" 11 #include "public/platform/WebServiceWorkerRequest.h" 12 #include "public/platform/WebServiceWorkerResponse.h" 13 #include "public/platform/WebString.h" 14 #include "public/platform/WebVector.h" 15 16 namespace blink { 17 18 // The Service Worker Cache API. The embedder provides the implementation of the Cache to Blink. Blink uses the interface 19 // to operate on entries. 20 // This object is owned by Blink, and should be destroyed as each Cache instance is no longer in use. 21 class WebServiceWorkerCache { 22 public: 23 typedef WebCallbacks<WebServiceWorkerResponse, WebServiceWorkerCacheError> CacheMatchCallbacks; 24 typedef WebCallbacks<WebVector<WebServiceWorkerResponse>, WebServiceWorkerCacheError> CacheWithResponsesCallbacks; 25 typedef WebCallbacks<WebVector<WebServiceWorkerRequest>, WebServiceWorkerCacheError> CacheWithRequestsCallbacks; 26 ~WebServiceWorkerCache()27 virtual ~WebServiceWorkerCache() { } 28 29 // Options that affect the scope of searches. 30 struct QueryParams { QueryParamsQueryParams31 QueryParams() : ignoreSearch(false), ignoreMethod(false), ignoreVary(false), prefixMatch(false) { } 32 33 bool ignoreSearch; 34 bool ignoreMethod; 35 bool ignoreVary; 36 bool prefixMatch; 37 WebString cacheName; 38 }; 39 40 enum OperationType { 41 OperationTypeUndefined, 42 OperationTypePut, 43 OperationTypeDelete, 44 OperationTypeLast = OperationTypeDelete 45 }; 46 47 struct BatchOperation { BatchOperationBatchOperation48 BatchOperation() : operationType(OperationTypeUndefined) { } 49 50 OperationType operationType; 51 WebServiceWorkerRequest request; 52 WebServiceWorkerResponse response; 53 QueryParams matchParams; 54 }; 55 WebServiceWorkerCache()56 WebServiceWorkerCache() { } 57 58 // Ownership of the Cache*Callbacks methods passes to the WebServiceWorkerCache instance, which will delete it after 59 // calling onSuccess or onFailure. 60 virtual void dispatchMatch(CacheMatchCallbacks*, const WebServiceWorkerRequest&, const QueryParams&) = 0; 61 virtual void dispatchMatchAll(CacheWithResponsesCallbacks*, const WebServiceWorkerRequest&, const QueryParams&) = 0; 62 virtual void dispatchKeys(CacheWithRequestsCallbacks*, const WebServiceWorkerRequest*, const QueryParams&) = 0; 63 virtual void dispatchBatch(CacheWithResponsesCallbacks*, const WebVector<BatchOperation>&) = 0; 64 }; 65 66 } // namespace blink 67 68 #endif // WebServiceWorkerCache_h 69