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 16namespace 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. 21class WebServiceWorkerCache { 22public: 23 typedef WebCallbacks<WebServiceWorkerResponse, WebServiceWorkerCacheError> CacheMatchCallbacks; 24 typedef WebCallbacks<WebVector<WebServiceWorkerResponse>, WebServiceWorkerCacheError> CacheWithResponsesCallbacks; 25 typedef WebCallbacks<WebVector<WebServiceWorkerRequest>, WebServiceWorkerCacheError> CacheWithRequestsCallbacks; 26 27 virtual ~WebServiceWorkerCache() { } 28 29 // Options that affect the scope of searches. 30 struct QueryParams { 31 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 { 48 BatchOperation() : operationType(OperationTypeUndefined) { } 49 50 OperationType operationType; 51 WebServiceWorkerRequest request; 52 WebServiceWorkerResponse response; 53 QueryParams matchParams; 54 }; 55 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