| // 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 <memory> |
| #include "bindings/core/v8/ScriptPromise.h" |
| #include "core/fetch/GlobalFetch.h" |
| #include "modules/ModulesExport.h" |
| #include "modules/cachestorage/CacheQueryOptions.h" |
| #include "platform/bindings/ScriptWrappable.h" |
| #include "platform/wtf/Forward.h" |
| #include "platform/wtf/Noncopyable.h" |
| #include "platform/wtf/Vector.h" |
| #include "platform/wtf/text/WTFString.h" |
| #include "public/platform/modules/serviceworker/WebServiceWorkerCache.h" |
| |
| namespace blink { |
| |
| class ExceptionState; |
| class Response; |
| class Request; |
| class ScriptState; |
| |
| typedef RequestOrUSVString RequestInfo; |
| |
| class MODULES_EXPORT Cache final : public ScriptWrappable { |
| DEFINE_WRAPPERTYPEINFO(); |
| WTF_MAKE_NONCOPYABLE(Cache); |
| |
| public: |
| static Cache* Create(GlobalFetch::ScopedFetcher*, |
| std::unique_ptr<WebServiceWorkerCache>); |
| |
| // 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<RequestInfo>&, |
| ExceptionState&); |
| ScriptPromise Delete(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&); |
| |
| void Trace(blink::Visitor*); |
| |
| private: |
| class BarrierCallbackForPut; |
| class BlobHandleCallbackForPut; |
| class CodeCacheHandleCallbackForPut; |
| class FetchResolvedForAdd; |
| friend class FetchResolvedForAdd; |
| Cache(GlobalFetch::ScopedFetcher*, std::unique_ptr<WebServiceWorkerCache>); |
| |
| ScriptPromise MatchImpl(ScriptState*, |
| const Request*, |
| const CacheQueryOptions&); |
| ScriptPromise MatchAllImpl(ScriptState*); |
| ScriptPromise MatchAllImpl(ScriptState*, |
| const Request*, |
| const CacheQueryOptions&); |
| ScriptPromise AddAllImpl(ScriptState*, |
| const HeapVector<Member<Request>>&, |
| ExceptionState&); |
| ScriptPromise DeleteImpl(ScriptState*, |
| const Request*, |
| const CacheQueryOptions&); |
| ScriptPromise PutImpl(ScriptState*, |
| const HeapVector<Member<Request>>&, |
| const HeapVector<Member<Response>>&); |
| ScriptPromise KeysImpl(ScriptState*); |
| ScriptPromise KeysImpl(ScriptState*, |
| const Request*, |
| const CacheQueryOptions&); |
| |
| WebServiceWorkerCache* WebCache() const; |
| |
| Member<GlobalFetch::ScopedFetcher> scoped_fetcher_; |
| std::unique_ptr<WebServiceWorkerCache> web_cache_; |
| }; |
| |
| } // namespace blink |
| |
| #endif // Cache_h |