• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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