• 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 CacheStorage_h
6 #define CacheStorage_h
7 
8 #include "bindings/core/v8/ScriptPromise.h"
9 #include "bindings/core/v8/ScriptState.h"
10 #include "bindings/core/v8/ScriptWrappable.h"
11 #include "wtf/Forward.h"
12 #include "wtf/HashMap.h"
13 #include "wtf/Noncopyable.h"
14 
15 namespace blink {
16 
17 class Cache;
18 class WebServiceWorkerCacheStorage;
19 
20 class CacheStorage FINAL : public GarbageCollected<CacheStorage>, public ScriptWrappable {
21     DEFINE_WRAPPERTYPEINFO();
22     WTF_MAKE_NONCOPYABLE(CacheStorage);
23 public:
24     static CacheStorage* create(WebServiceWorkerCacheStorage*);
25 
26     ScriptPromise get(ScriptState*, const String& cacheName);
27     ScriptPromise has(ScriptState*, const String& cacheName);
28     ScriptPromise createFunction(ScriptState*, const String& cacheName);
29     ScriptPromise deleteFunction(ScriptState*, const String& cacheName);
30     ScriptPromise keys(ScriptState*);
31 
32     void trace(Visitor*);
33 
34 private:
35     class Callbacks;
36     class WithCacheCallbacks;
37     class DeleteCallbacks;
38     class KeysCallbacks;
39 
40     friend class WithCacheCallbacks;
41     friend class DeleteCallbacks;
42 
43     explicit CacheStorage(WebServiceWorkerCacheStorage*);
44 
45     WebServiceWorkerCacheStorage* m_webCacheStorage;
46     HeapHashMap<String, Member<Cache> > m_nameToCacheMap;
47 };
48 
49 } // namespace blink
50 
51 #endif // CacheStorage_h
52