| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "modules/serviceworkers/Cache.h" | 6 #include "modules/serviceworkers/Cache.h" |
| 7 | 7 |
| 8 #include "bindings/core/v8/ExceptionState.h" | 8 #include "bindings/core/v8/ExceptionState.h" |
| 9 #include "bindings/core/v8/ScriptPromiseResolver.h" | 9 #include "bindings/core/v8/ScriptPromiseResolver.h" |
| 10 #include "bindings/core/v8/ScriptState.h" | 10 #include "bindings/core/v8/ScriptState.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 webQueryParams.ignoreVary = options.ignoreVary(); | 26 webQueryParams.ignoreVary = options.ignoreVary(); |
| 27 webQueryParams.prefixMatch = options.prefixMatch(); | 27 webQueryParams.prefixMatch = options.prefixMatch(); |
| 28 webQueryParams.cacheName = options.cacheName(); | 28 webQueryParams.cacheName = options.cacheName(); |
| 29 return webQueryParams; | 29 return webQueryParams; |
| 30 } | 30 } |
| 31 | 31 |
| 32 // FIXME: Consider using CallbackPromiseAdapter. | 32 // FIXME: Consider using CallbackPromiseAdapter. |
| 33 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { | 33 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { |
| 34 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); | 34 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); |
| 35 public: | 35 public: |
| 36 CacheMatchCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) | 36 CacheMatchCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver) |
| 37 : m_resolver(resolver) { } | 37 : m_resolver(resolver) { } |
| 38 | 38 |
| 39 virtual void onSuccess(WebServiceWorkerResponse* webResponse) override | 39 virtual void onSuccess(WebServiceWorkerResponse* webResponse) override |
| 40 { | 40 { |
| 41 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio
nContext(), *webResponse)); | 41 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio
nContext(), *webResponse)); |
| 42 m_resolver.clear(); | 42 m_resolver.clear(); |
| 43 } | 43 } |
| 44 | 44 |
| 45 virtual void onError(WebServiceWorkerCacheError* reason) override | 45 virtual void onError(WebServiceWorkerCacheError* reason) override |
| 46 { | 46 { |
| 47 if (*reason == WebServiceWorkerCacheErrorNotFound) | 47 if (*reason == WebServiceWorkerCacheErrorNotFound) |
| 48 m_resolver->resolve(); | 48 m_resolver->resolve(); |
| 49 else | 49 else |
| 50 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); | 50 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); |
| 51 m_resolver.clear(); | 51 m_resolver.clear(); |
| 52 } | 52 } |
| 53 | 53 |
| 54 private: | 54 private: |
| 55 RefPtr<ScriptPromiseResolver> m_resolver; | 55 RefPtrWillBeCrossThreadPersistent<ScriptPromiseResolver> m_resolver; |
| 56 }; | 56 }; |
| 57 | 57 |
| 58 // FIXME: Consider using CallbackPromiseAdapter. | 58 // FIXME: Consider using CallbackPromiseAdapter. |
| 59 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo
nsesCallbacks { | 59 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo
nsesCallbacks { |
| 60 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); | 60 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); |
| 61 public: | 61 public: |
| 62 CacheWithResponsesCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) | 62 CacheWithResponsesCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> re
solver) |
| 63 : m_resolver(resolver) { } | 63 : m_resolver(resolver) { } |
| 64 | 64 |
| 65 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride | 65 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride |
| 66 { | 66 { |
| 67 HeapVector<Member<Response> > responses; | 67 HeapVector<Member<Response> > responses; |
| 68 for (size_t i = 0; i < webResponses->size(); ++i) | 68 for (size_t i = 0; i < webResponses->size(); ++i) |
| 69 responses.append(Response::create(m_resolver->scriptState()->executi
onContext(), (*webResponses)[i])); | 69 responses.append(Response::create(m_resolver->scriptState()->executi
onContext(), (*webResponses)[i])); |
| 70 m_resolver->resolve(responses); | 70 m_resolver->resolve(responses); |
| 71 m_resolver.clear(); | 71 m_resolver.clear(); |
| 72 } | 72 } |
| 73 | 73 |
| 74 virtual void onError(WebServiceWorkerCacheError* reason) override | 74 virtual void onError(WebServiceWorkerCacheError* reason) override |
| 75 { | 75 { |
| 76 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); | 76 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); |
| 77 m_resolver.clear(); | 77 m_resolver.clear(); |
| 78 } | 78 } |
| 79 | 79 |
| 80 protected: | 80 protected: |
| 81 RefPtr<ScriptPromiseResolver> m_resolver; | 81 RefPtrWillBeCrossThreadPersistent<ScriptPromiseResolver> m_resolver; |
| 82 }; | 82 }; |
| 83 | 83 |
| 84 // FIXME: Consider using CallbackPromiseAdapter. | 84 // FIXME: Consider using CallbackPromiseAdapter. |
| 85 class CacheAddOrPutCallbacks : public CacheWithResponsesCallbacks { | 85 class CacheAddOrPutCallbacks : public CacheWithResponsesCallbacks { |
| 86 WTF_MAKE_NONCOPYABLE(CacheAddOrPutCallbacks); | 86 WTF_MAKE_NONCOPYABLE(CacheAddOrPutCallbacks); |
| 87 public: | 87 public: |
| 88 CacheAddOrPutCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) | 88 CacheAddOrPutCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolve
r) |
| 89 : CacheWithResponsesCallbacks(resolver) { } | 89 : CacheWithResponsesCallbacks(resolver) { } |
| 90 | 90 |
| 91 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride | 91 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride |
| 92 { | 92 { |
| 93 // FIXME: Since response is ignored, consider simplifying public API. | 93 // FIXME: Since response is ignored, consider simplifying public API. |
| 94 m_resolver->resolve(); | 94 m_resolver->resolve(); |
| 95 m_resolver.clear(); | 95 m_resolver.clear(); |
| 96 } | 96 } |
| 97 }; | 97 }; |
| 98 | 98 |
| 99 // FIXME: Consider using CallbackPromiseAdapter. | 99 // FIXME: Consider using CallbackPromiseAdapter. |
| 100 class CacheDeleteCallback : public WebServiceWorkerCache::CacheWithResponsesCall
backs { | 100 class CacheDeleteCallback : public WebServiceWorkerCache::CacheWithResponsesCall
backs { |
| 101 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); | 101 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); |
| 102 public: | 102 public: |
| 103 CacheDeleteCallback(PassRefPtr<ScriptPromiseResolver> resolver) | 103 CacheDeleteCallback(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver) |
| 104 : m_resolver(resolver) { } | 104 : m_resolver(resolver) { } |
| 105 | 105 |
| 106 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride | 106 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride |
| 107 { | 107 { |
| 108 // FIXME: Since response is ignored, consider simplifying public API. | 108 // FIXME: Since response is ignored, consider simplifying public API. |
| 109 m_resolver->resolve(true); | 109 m_resolver->resolve(true); |
| 110 m_resolver.clear(); | 110 m_resolver.clear(); |
| 111 } | 111 } |
| 112 | 112 |
| 113 virtual void onError(WebServiceWorkerCacheError* reason) override | 113 virtual void onError(WebServiceWorkerCacheError* reason) override |
| 114 { | 114 { |
| 115 if (*reason == WebServiceWorkerCacheErrorNotFound) | 115 if (*reason == WebServiceWorkerCacheErrorNotFound) |
| 116 m_resolver->resolve(false); | 116 m_resolver->resolve(false); |
| 117 else | 117 else |
| 118 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); | 118 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); |
| 119 m_resolver.clear(); | 119 m_resolver.clear(); |
| 120 } | 120 } |
| 121 | 121 |
| 122 private: | 122 private: |
| 123 RefPtr<ScriptPromiseResolver> m_resolver; | 123 RefPtrWillBeCrossThreadPersistent<ScriptPromiseResolver> m_resolver; |
| 124 }; | 124 }; |
| 125 | 125 |
| 126 // FIXME: Consider using CallbackPromiseAdapter. | 126 // FIXME: Consider using CallbackPromiseAdapter. |
| 127 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques
tsCallbacks { | 127 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques
tsCallbacks { |
| 128 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); | 128 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); |
| 129 public: | 129 public: |
| 130 CacheWithRequestsCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) | 130 CacheWithRequestsCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> res
olver) |
| 131 : m_resolver(resolver) { } | 131 : m_resolver(resolver) { } |
| 132 | 132 |
| 133 virtual void onSuccess(WebVector<WebServiceWorkerRequest>* webRequests) over
ride | 133 virtual void onSuccess(WebVector<WebServiceWorkerRequest>* webRequests) over
ride |
| 134 { | 134 { |
| 135 HeapVector<Member<Request> > requests; | 135 HeapVector<Member<Request> > requests; |
| 136 for (size_t i = 0; i < webRequests->size(); ++i) | 136 for (size_t i = 0; i < webRequests->size(); ++i) |
| 137 requests.append(Request::create(m_resolver->scriptState()->execution
Context(), (*webRequests)[i])); | 137 requests.append(Request::create(m_resolver->scriptState()->execution
Context(), (*webRequests)[i])); |
| 138 m_resolver->resolve(requests); | 138 m_resolver->resolve(requests); |
| 139 m_resolver.clear(); | 139 m_resolver.clear(); |
| 140 } | 140 } |
| 141 | 141 |
| 142 virtual void onError(WebServiceWorkerCacheError* reason) override | 142 virtual void onError(WebServiceWorkerCacheError* reason) override |
| 143 { | 143 { |
| 144 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); | 144 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); |
| 145 m_resolver.clear(); | 145 m_resolver.clear(); |
| 146 } | 146 } |
| 147 | 147 |
| 148 private: | 148 private: |
| 149 RefPtr<ScriptPromiseResolver> m_resolver; | 149 RefPtrWillBeCrossThreadPersistent<ScriptPromiseResolver> m_resolver; |
| 150 }; | 150 }; |
| 151 | 151 |
| 152 ScriptPromise rejectAsNotImplemented(ScriptState* scriptState) | 152 ScriptPromise rejectAsNotImplemented(ScriptState* scriptState) |
| 153 { | 153 { |
| 154 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::crea
te(NotSupportedError, "Cache is not implemented")); | 154 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::crea
te(NotSupportedError, "Cache is not implemented")); |
| 155 } | 155 } |
| 156 | 156 |
| 157 } // namespace | 157 } // namespace |
| 158 | 158 |
| 159 Cache* Cache::create(WebServiceWorkerCache* webCache) | 159 Cache* Cache::create(WebServiceWorkerCache* webCache) |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 } | 239 } |
| 240 | 240 |
| 241 Cache::Cache(WebServiceWorkerCache* webCache) | 241 Cache::Cache(WebServiceWorkerCache* webCache) |
| 242 : m_webCache(adoptPtr(webCache)) { } | 242 : m_webCache(adoptPtr(webCache)) { } |
| 243 | 243 |
| 244 ScriptPromise Cache::matchImpl(ScriptState* scriptState, const Request* request,
const CacheQueryOptions& options) | 244 ScriptPromise Cache::matchImpl(ScriptState* scriptState, const Request* request,
const CacheQueryOptions& options) |
| 245 { | 245 { |
| 246 WebServiceWorkerRequest webRequest; | 246 WebServiceWorkerRequest webRequest; |
| 247 request->populateWebServiceWorkerRequest(webRequest); | 247 request->populateWebServiceWorkerRequest(webRequest); |
| 248 | 248 |
| 249 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); | 249 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::
create(scriptState); |
| 250 const ScriptPromise promise = resolver->promise(); | 250 const ScriptPromise promise = resolver->promise(); |
| 251 m_webCache->dispatchMatch(new CacheMatchCallbacks(resolver), webRequest, toW
ebQueryParams(options)); | 251 m_webCache->dispatchMatch(new CacheMatchCallbacks(resolver), webRequest, toW
ebQueryParams(options)); |
| 252 return promise; | 252 return promise; |
| 253 } | 253 } |
| 254 | 254 |
| 255 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState, const Request* reque
st, const CacheQueryOptions& options) | 255 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState, const Request* reque
st, const CacheQueryOptions& options) |
| 256 { | 256 { |
| 257 WebServiceWorkerRequest webRequest; | 257 WebServiceWorkerRequest webRequest; |
| 258 request->populateWebServiceWorkerRequest(webRequest); | 258 request->populateWebServiceWorkerRequest(webRequest); |
| 259 | 259 |
| 260 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); | 260 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::
create(scriptState); |
| 261 const ScriptPromise promise = resolver->promise(); | 261 const ScriptPromise promise = resolver->promise(); |
| 262 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), webR
equest, toWebQueryParams(options)); | 262 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), webR
equest, toWebQueryParams(options)); |
| 263 return promise; | 263 return promise; |
| 264 } | 264 } |
| 265 | 265 |
| 266 ScriptPromise Cache::addImpl(ScriptState* scriptState, const Request*) | 266 ScriptPromise Cache::addImpl(ScriptState* scriptState, const Request*) |
| 267 { | 267 { |
| 268 // FIXME: Implement this. | 268 // FIXME: Implement this. |
| 269 return rejectAsNotImplemented(scriptState); | 269 return rejectAsNotImplemented(scriptState); |
| 270 } | 270 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 290 } | 290 } |
| 291 } | 291 } |
| 292 | 292 |
| 293 ScriptPromise Cache::deleteImpl(ScriptState* scriptState, const Request* request
, const CacheQueryOptions& options) | 293 ScriptPromise Cache::deleteImpl(ScriptState* scriptState, const Request* request
, const CacheQueryOptions& options) |
| 294 { | 294 { |
| 295 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); | 295 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); |
| 296 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeDelet
e; | 296 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeDelet
e; |
| 297 request->populateWebServiceWorkerRequest(batchOperations[0].request); | 297 request->populateWebServiceWorkerRequest(batchOperations[0].request); |
| 298 batchOperations[0].matchParams = toWebQueryParams(options); | 298 batchOperations[0].matchParams = toWebQueryParams(options); |
| 299 | 299 |
| 300 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); | 300 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::
create(scriptState); |
| 301 const ScriptPromise promise = resolver->promise(); | 301 const ScriptPromise promise = resolver->promise(); |
| 302 m_webCache->dispatchBatch(new CacheDeleteCallback(resolver), batchOperations
); | 302 m_webCache->dispatchBatch(new CacheDeleteCallback(resolver), batchOperations
); |
| 303 return promise; | 303 return promise; |
| 304 } | 304 } |
| 305 | 305 |
| 306 ScriptPromise Cache::putImpl(ScriptState* scriptState, Request* request, Respons
e* response) | 306 ScriptPromise Cache::putImpl(ScriptState* scriptState, Request* request, Respons
e* response) |
| 307 { | 307 { |
| 308 KURL url(KURL(), request->url()); | 308 KURL url(KURL(), request->url()); |
| 309 if (!url.protocolIsInHTTPFamily()) | 309 if (!url.protocolIsInHTTPFamily()) |
| 310 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr
ror(scriptState->isolate(), "Request scheme '" + url.protocol() + "' is unsuppor
ted")); | 310 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr
ror(scriptState->isolate(), "Request scheme '" + url.protocol() + "' is unsuppor
ted")); |
| 311 if (request->method() != "GET") | 311 if (request->method() != "GET") |
| 312 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr
ror(scriptState->isolate(), "Request method '" + request->method() + "' is unsup
ported")); | 312 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr
ror(scriptState->isolate(), "Request method '" + request->method() + "' is unsup
ported")); |
| 313 if (request->hasBody() && request->bodyUsed()) | 313 if (request->hasBody() && request->bodyUsed()) |
| 314 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr
ror(scriptState->isolate(), "Request body is already used")); | 314 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr
ror(scriptState->isolate(), "Request body is already used")); |
| 315 if (response->hasBody() && response->bodyUsed()) | 315 if (response->hasBody() && response->bodyUsed()) |
| 316 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr
ror(scriptState->isolate(), "Response body is already used")); | 316 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr
ror(scriptState->isolate(), "Response body is already used")); |
| 317 | 317 |
| 318 if (request->hasBody()) | 318 if (request->hasBody()) |
| 319 request->setBodyUsed(); | 319 request->setBodyUsed(); |
| 320 if (response->hasBody()) | 320 if (response->hasBody()) |
| 321 response->setBodyUsed(); | 321 response->setBodyUsed(); |
| 322 | 322 |
| 323 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); | 323 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); |
| 324 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypePut; | 324 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypePut; |
| 325 request->populateWebServiceWorkerRequest(batchOperations[0].request); | 325 request->populateWebServiceWorkerRequest(batchOperations[0].request); |
| 326 response->populateWebServiceWorkerResponse(batchOperations[0].response); | 326 response->populateWebServiceWorkerResponse(batchOperations[0].response); |
| 327 | 327 |
| 328 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); | 328 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::
create(scriptState); |
| 329 const ScriptPromise promise = resolver->promise(); | 329 const ScriptPromise promise = resolver->promise(); |
| 330 m_webCache->dispatchBatch(new CacheAddOrPutCallbacks(resolver), batchOperati
ons); | 330 m_webCache->dispatchBatch(new CacheAddOrPutCallbacks(resolver), batchOperati
ons); |
| 331 return promise; | 331 return promise; |
| 332 } | 332 } |
| 333 | 333 |
| 334 ScriptPromise Cache::keysImpl(ScriptState* scriptState) | 334 ScriptPromise Cache::keysImpl(ScriptState* scriptState) |
| 335 { | 335 { |
| 336 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); | 336 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::
create(scriptState); |
| 337 const ScriptPromise promise = resolver->promise(); | 337 const ScriptPromise promise = resolver->promise(); |
| 338 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, WebSer
viceWorkerCache::QueryParams()); | 338 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, WebSer
viceWorkerCache::QueryParams()); |
| 339 return promise; | 339 return promise; |
| 340 } | 340 } |
| 341 | 341 |
| 342 ScriptPromise Cache::keysImpl(ScriptState* scriptState, const Request* request,
const CacheQueryOptions& options) | 342 ScriptPromise Cache::keysImpl(ScriptState* scriptState, const Request* request,
const CacheQueryOptions& options) |
| 343 { | 343 { |
| 344 WebServiceWorkerRequest webRequest; | 344 WebServiceWorkerRequest webRequest; |
| 345 request->populateWebServiceWorkerRequest(webRequest); | 345 request->populateWebServiceWorkerRequest(webRequest); |
| 346 | 346 |
| 347 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); | 347 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::
create(scriptState); |
| 348 const ScriptPromise promise = resolver->promise(); | 348 const ScriptPromise promise = resolver->promise(); |
| 349 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ
ueryParams(options)); | 349 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ
ueryParams(options)); |
| 350 return promise; | 350 return promise; |
| 351 } | 351 } |
| 352 | 352 |
| 353 } // namespace blink | 353 } // namespace blink |
| OLD | NEW |