blob: 3d6f394084884887dd3ac520bed36cbc58760dfa [file] [log] [blame]
// 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.
#ifndef WebServiceWorkerCacheStorage_h
#define WebServiceWorkerCacheStorage_h
#include "WebCommon.h"
#include "public/platform/WebCallbacks.h"
#include "public/platform/WebServiceWorkerCache.h"
#include "public/platform/WebServiceWorkerCacheError.h"
#include "public/platform/WebString.h"
#include "public/platform/WebVector.h"
namespace blink {
class WebServiceWorkerCache;
// An interface to the CacheStorage API, implemented by the embedder and passed in to Blink. Blink's implementation
// of the ServiceWorker spec will call these methods to create/open caches, and expect callbacks from the embedder
// after operations complete.
class WebServiceWorkerCacheStorage {
public:
typedef WebCallbacks<void, WebServiceWorkerCacheError> CacheStorageCallbacks;
typedef WebCallbacks<WebServiceWorkerCache, WebServiceWorkerCacheError> CacheStorageWithCacheCallbacks;
typedef WebCallbacks<WebVector<WebString>, WebServiceWorkerCacheError> CacheStorageKeysCallbacks;
typedef WebCallbacks<WebServiceWorkerResponse, WebServiceWorkerCacheError> CacheStorageMatchCallbacks;
virtual ~WebServiceWorkerCacheStorage() { }
// Ownership of the CacheStorage*Callbacks methods passes to the WebServiceWorkerCacheStorage instance, which
// will delete it after calling onSuccess or onFailure.
// dispatchOpen() can return a WebServiceWorkerCache object. These
// objects are owned by Blink and should be destroyed when they are no
// longer needed.
virtual void dispatchHas(CacheStorageCallbacks*, const WebString& cacheName) = 0;
virtual void dispatchOpen(CacheStorageWithCacheCallbacks*, const WebString& cacheName) = 0;
virtual void dispatchDelete(CacheStorageCallbacks*, const WebString& cacheName) = 0;
virtual void dispatchKeys(CacheStorageKeysCallbacks*) = 0;
virtual void dispatchMatch(CacheStorageMatchCallbacks*, const WebServiceWorkerRequest&, const WebServiceWorkerCache::QueryParams&) = 0;
};
} // namespace blink
#endif // WebServiceWorkerCacheStorage_h