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