| 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 |