// 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 Cache_h #define Cache_h #include "bindings/core/v8/ScriptPromise.h" #include "bindings/core/v8/ScriptWrappable.h" #include "bindings/modules/v8/UnionTypesModules.h" #include "modules/ModulesExport.h" #include "modules/cachestorage/CacheQueryOptions.h" #include "modules/fetch/GlobalFetch.h" #include "public/platform/modules/serviceworker/WebServiceWorkerCache.h" #include "public/platform/modules/serviceworker/WebServiceWorkerCacheError.h" #include "wtf/Forward.h" #include "wtf/Noncopyable.h" #include "wtf/OwnPtr.h" #include "wtf/Vector.h" #include "wtf/text/WTFString.h" namespace blink { class ExceptionState; class Response; class Request; class ScriptState; typedef RequestOrUSVString RequestInfo; class MODULES_EXPORT Cache final : public GarbageCollectedFinalized, public ScriptWrappable { DEFINE_WRAPPERTYPEINFO(); WTF_MAKE_NONCOPYABLE(Cache); public: static Cache* create(WeakPtrWillBeRawPtr, PassOwnPtr); // From Cache.idl: ScriptPromise match(ScriptState*, const RequestInfo&, const CacheQueryOptions&, ExceptionState&); ScriptPromise matchAll(ScriptState*, ExceptionState&); ScriptPromise matchAll(ScriptState*, const RequestInfo&, const CacheQueryOptions&, ExceptionState&); ScriptPromise add(ScriptState*, const RequestInfo&, ExceptionState&); ScriptPromise addAll(ScriptState*, const HeapVector&, ExceptionState&); ScriptPromise deleteFunction(ScriptState*, const RequestInfo&, const CacheQueryOptions&, ExceptionState&); ScriptPromise put(ScriptState*, const RequestInfo&, Response*, ExceptionState&); ScriptPromise keys(ScriptState*, ExceptionState&); ScriptPromise keys(ScriptState*, const RequestInfo&, const CacheQueryOptions&, ExceptionState&); static WebServiceWorkerCache::QueryParams toWebQueryParams(const CacheQueryOptions&); DECLARE_TRACE(); private: class BarrierCallbackForPut; class BlobHandleCallbackForPut; class FetchResolvedForAdd; friend class FetchResolvedForAdd; Cache(WeakPtrWillBeRawPtr, PassOwnPtr); ScriptPromise matchImpl(ScriptState*, const Request*, const CacheQueryOptions&); ScriptPromise matchAllImpl(ScriptState*); ScriptPromise matchAllImpl(ScriptState*, const Request*, const CacheQueryOptions&); ScriptPromise addAllImpl(ScriptState*, const HeapVector>&, ExceptionState&); ScriptPromise deleteImpl(ScriptState*, const Request*, const CacheQueryOptions&); ScriptPromise putImpl(ScriptState*, const HeapVector>&, const HeapVector>&); ScriptPromise keysImpl(ScriptState*); ScriptPromise keysImpl(ScriptState*, const Request*, const CacheQueryOptions&); WebServiceWorkerCache* webCache() const; WeakPtrWillBeMember m_scopedFetcher; OwnPtr m_webCache; }; } // namespace blink #endif // Cache_h