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 WebServiceWorkerCacheStorage_h
6#define WebServiceWorkerCacheStorage_h
7
8#include "WebCommon.h"
9#include "public/platform/WebCallbacks.h"
10#include "public/platform/WebServiceWorkerCacheError.h"
11#include "public/platform/WebString.h"
12#include "public/platform/WebVector.h"
13
14namespace blink {
15
16class WebServiceWorkerCache;
17
18// An interface to the CacheStorage API, implemented by the embedder and passed in to Blink. Blink's implementation
19// of the ServiceWorker spec will call these methods to create/open caches, and expect callbacks from the embedder
20// after operations complete.
21class WebServiceWorkerCacheStorage {
22public:
23    typedef WebCallbacks<void, WebServiceWorkerCacheError> CacheStorageCallbacks;
24    typedef WebCallbacks<WebServiceWorkerCache, WebServiceWorkerCacheError> CacheStorageWithCacheCallbacks;
25    typedef WebCallbacks<WebVector<WebString>, WebServiceWorkerCacheError> CacheStorageKeysCallbacks;
26
27    virtual ~WebServiceWorkerCacheStorage() { }
28
29    // Ownership of the CacheStorage*Callbacks methods passes to the WebServiceWorkerCacheStorage instance, which
30    // will delete it after calling onSuccess or onFailure.
31
32    // dispatchGet() or dispatchCreate() can return a WebServiceWorkerCache object, and these objects are owned by
33    // Blink, and should be destroyed when they are no longer needed.
34    virtual void dispatchGet(CacheStorageWithCacheCallbacks*, const WebString& cacheName) = 0;
35    virtual void dispatchHas(CacheStorageCallbacks*, const WebString& cacheName) = 0;
36    virtual void dispatchCreate(CacheStorageWithCacheCallbacks*, const WebString& cacheName) = 0;
37    virtual void dispatchDelete(CacheStorageCallbacks*, const WebString& cacheName) = 0;
38    virtual void dispatchKeys(CacheStorageKeysCallbacks*) = 0;
39};
40
41} // namespace blink
42
43#endif // WebServiceWorkerCacheStorage_h
44