| 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/ScriptPromiseResolver.h" | 8 #include "bindings/core/v8/ScriptPromiseResolver.h" |
| 9 #include "bindings/core/v8/ScriptState.h" | 9 #include "bindings/core/v8/ScriptState.h" |
| 10 #include "bindings/core/v8/V8ThrowException.h" | 10 #include "bindings/core/v8/V8ThrowException.h" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 { | 71 { |
| 72 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); | 72 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); |
| 73 m_resolver.clear(); | 73 m_resolver.clear(); |
| 74 } | 74 } |
| 75 | 75 |
| 76 protected: | 76 protected: |
| 77 RefPtr<ScriptPromiseResolver> m_resolver; | 77 RefPtr<ScriptPromiseResolver> m_resolver; |
| 78 }; | 78 }; |
| 79 | 79 |
| 80 // FIXME: Consider using CallbackPromiseAdapter. | 80 // FIXME: Consider using CallbackPromiseAdapter. |
| 81 class CacheWithOneResponseCallbacks : public CacheWithResponsesCallbacks { | 81 class CacheAddOrPutCallbacks : public CacheWithResponsesCallbacks { |
| 82 WTF_MAKE_NONCOPYABLE(CacheWithOneResponseCallbacks); | 82 WTF_MAKE_NONCOPYABLE(CacheAddOrPutCallbacks); |
| 83 public: | 83 public: |
| 84 CacheWithOneResponseCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) | 84 CacheAddOrPutCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) |
| 85 : CacheWithResponsesCallbacks(resolver) { } | 85 : CacheWithResponsesCallbacks(resolver) { } |
| 86 | 86 |
| 87 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride | 87 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride |
| 88 { | 88 { |
| 89 ASSERT(webResponses->size() == 1); | 89 // FIXME: Since response is ignored, consider simplifying public API. |
| 90 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio
nContext(), (*webResponses)[0])); | 90 m_resolver->resolve(); |
| 91 m_resolver.clear(); | 91 m_resolver.clear(); |
| 92 } | 92 } |
| 93 }; | 93 }; |
| 94 | 94 |
| 95 // FIXME: Consider using CallbackPromiseAdapter. | 95 // FIXME: Consider using CallbackPromiseAdapter. |
| 96 class CacheDeleteCallback : public WebServiceWorkerCache::CacheWithResponsesCall
backs { | 96 class CacheDeleteCallback : public WebServiceWorkerCache::CacheWithResponsesCall
backs { |
| 97 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); | 97 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); |
| 98 public: | 98 public: |
| 99 CacheDeleteCallback(PassRefPtr<ScriptPromiseResolver> resolver) | 99 CacheDeleteCallback(PassRefPtr<ScriptPromiseResolver> resolver) |
| 100 : m_resolver(resolver) { } | 100 : m_resolver(resolver) { } |
| 101 | 101 |
| 102 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride | 102 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride |
| 103 { | 103 { |
| 104 // FIXME: Since response is ignored, consider simplifying public API. |
| 104 m_resolver->resolve(true); | 105 m_resolver->resolve(true); |
| 105 m_resolver.clear(); | 106 m_resolver.clear(); |
| 106 } | 107 } |
| 107 | 108 |
| 108 virtual void onError(WebServiceWorkerCacheError* reason) override | 109 virtual void onError(WebServiceWorkerCacheError* reason) override |
| 109 { | 110 { |
| 110 if (*reason == WebServiceWorkerCacheErrorNotFound) | 111 if (*reason == WebServiceWorkerCacheErrorNotFound) |
| 111 m_resolver->resolve(false); | 112 m_resolver->resolve(false); |
| 112 else | 113 else |
| 113 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); | 114 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 if (request->method() != "GET") | 378 if (request->method() != "GET") |
| 378 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr
ror("Request method '" + request->method() + "' is unsupported", scriptState->is
olate())); | 379 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr
ror("Request method '" + request->method() + "' is unsupported", scriptState->is
olate())); |
| 379 | 380 |
| 380 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); | 381 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); |
| 381 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypePut; | 382 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypePut; |
| 382 request->populateWebServiceWorkerRequest(batchOperations[0].request); | 383 request->populateWebServiceWorkerRequest(batchOperations[0].request); |
| 383 response->populateWebServiceWorkerResponse(batchOperations[0].response); | 384 response->populateWebServiceWorkerResponse(batchOperations[0].response); |
| 384 | 385 |
| 385 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); | 386 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); |
| 386 const ScriptPromise promise = resolver->promise(); | 387 const ScriptPromise promise = resolver->promise(); |
| 387 m_webCache->dispatchBatch(new CacheWithOneResponseCallbacks(resolver), batch
Operations); | 388 m_webCache->dispatchBatch(new CacheAddOrPutCallbacks(resolver), batchOperati
ons); |
| 388 return promise; | 389 return promise; |
| 389 } | 390 } |
| 390 | 391 |
| 391 ScriptPromise Cache::keysImpl(ScriptState* scriptState) | 392 ScriptPromise Cache::keysImpl(ScriptState* scriptState) |
| 392 { | 393 { |
| 393 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); | 394 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); |
| 394 const ScriptPromise promise = resolver->promise(); | 395 const ScriptPromise promise = resolver->promise(); |
| 395 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, WebSer
viceWorkerCache::QueryParams()); | 396 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, WebSer
viceWorkerCache::QueryParams()); |
| 396 return promise; | 397 return promise; |
| 397 } | 398 } |
| 398 | 399 |
| 399 ScriptPromise Cache::keysImpl(ScriptState* scriptState, Request* request, const
CacheQueryOptions& options) | 400 ScriptPromise Cache::keysImpl(ScriptState* scriptState, Request* request, const
CacheQueryOptions& options) |
| 400 { | 401 { |
| 401 WebServiceWorkerRequest webRequest; | 402 WebServiceWorkerRequest webRequest; |
| 402 request->populateWebServiceWorkerRequest(webRequest); | 403 request->populateWebServiceWorkerRequest(webRequest); |
| 403 | 404 |
| 404 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); | 405 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); |
| 405 const ScriptPromise promise = resolver->promise(); | 406 const ScriptPromise promise = resolver->promise(); |
| 406 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ
ueryParams(options)); | 407 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ
ueryParams(options)); |
| 407 return promise; | 408 return promise; |
| 408 } | 409 } |
| 409 | 410 |
| 410 } // namespace blink | 411 } // namespace blink |
| OLD | NEW |