| 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 17 matching lines...) Expand all Loading... |
| 28 return webQueryParams; | 28 return webQueryParams; |
| 29 } | 29 } |
| 30 | 30 |
| 31 // FIXME: Consider using CallbackPromiseAdapter. | 31 // FIXME: Consider using CallbackPromiseAdapter. |
| 32 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { | 32 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { |
| 33 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); | 33 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); |
| 34 public: | 34 public: |
| 35 CacheMatchCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) | 35 CacheMatchCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) |
| 36 : m_resolver(resolver) { } | 36 : m_resolver(resolver) { } |
| 37 | 37 |
| 38 virtual void onSuccess(WebServiceWorkerResponse* webResponse) OVERRIDE | 38 virtual void onSuccess(WebServiceWorkerResponse* webResponse) override |
| 39 { | 39 { |
| 40 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio
nContext(), *webResponse)); | 40 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio
nContext(), *webResponse)); |
| 41 m_resolver.clear(); | 41 m_resolver.clear(); |
| 42 } | 42 } |
| 43 | 43 |
| 44 virtual void onError(WebServiceWorkerCacheError* reason) OVERRIDE | 44 virtual void onError(WebServiceWorkerCacheError* reason) override |
| 45 { | 45 { |
| 46 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); | 46 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); |
| 47 m_resolver.clear(); | 47 m_resolver.clear(); |
| 48 } | 48 } |
| 49 | 49 |
| 50 private: | 50 private: |
| 51 RefPtr<ScriptPromiseResolver> m_resolver; | 51 RefPtr<ScriptPromiseResolver> m_resolver; |
| 52 }; | 52 }; |
| 53 | 53 |
| 54 // FIXME: Consider using CallbackPromiseAdapter. | 54 // FIXME: Consider using CallbackPromiseAdapter. |
| 55 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo
nsesCallbacks { | 55 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo
nsesCallbacks { |
| 56 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); | 56 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); |
| 57 public: | 57 public: |
| 58 CacheWithResponsesCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) | 58 CacheWithResponsesCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) |
| 59 : m_resolver(resolver) { } | 59 : m_resolver(resolver) { } |
| 60 | 60 |
| 61 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) OV
ERRIDE | 61 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov
erride |
| 62 { | 62 { |
| 63 HeapVector<Member<Response> > responses; | 63 HeapVector<Member<Response> > responses; |
| 64 for (size_t i = 0; i < webResponses->size(); ++i) | 64 for (size_t i = 0; i < webResponses->size(); ++i) |
| 65 responses.append(Response::create(m_resolver->scriptState()->executi
onContext(), (*webResponses)[i])); | 65 responses.append(Response::create(m_resolver->scriptState()->executi
onContext(), (*webResponses)[i])); |
| 66 m_resolver->resolve(responses); | 66 m_resolver->resolve(responses); |
| 67 m_resolver.clear(); | 67 m_resolver.clear(); |
| 68 } | 68 } |
| 69 | 69 |
| 70 virtual void onError(WebServiceWorkerCacheError* reason) OVERRIDE | 70 virtual void onError(WebServiceWorkerCacheError* reason) override |
| 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 CacheWithOneResponseCallbacks : public CacheWithResponsesCallbacks { |
| 82 WTF_MAKE_NONCOPYABLE(CacheWithOneResponseCallbacks); | 82 WTF_MAKE_NONCOPYABLE(CacheWithOneResponseCallbacks); |
| 83 public: | 83 public: |
| 84 CacheWithOneResponseCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) | 84 CacheWithOneResponseCallbacks(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 ASSERT(webResponses->size() == 1); |
| 90 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio
nContext(), (*webResponses)[0])); | 90 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio
nContext(), (*webResponses)[0])); |
| 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 m_resolver->resolve(true); | 104 m_resolver->resolve(true); |
| 105 m_resolver.clear(); | 105 m_resolver.clear(); |
| 106 } | 106 } |
| 107 | 107 |
| 108 virtual void onError(WebServiceWorkerCacheError* reason) OVERRIDE | 108 virtual void onError(WebServiceWorkerCacheError* reason) override |
| 109 { | 109 { |
| 110 if (*reason == WebServiceWorkerCacheErrorNotFound) | 110 if (*reason == WebServiceWorkerCacheErrorNotFound) |
| 111 m_resolver->resolve(false); | 111 m_resolver->resolve(false); |
| 112 else | 112 else |
| 113 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); | 113 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); |
| 114 m_resolver.clear(); | 114 m_resolver.clear(); |
| 115 } | 115 } |
| 116 | 116 |
| 117 private: | 117 private: |
| 118 RefPtr<ScriptPromiseResolver> m_resolver; | 118 RefPtr<ScriptPromiseResolver> m_resolver; |
| 119 }; | 119 }; |
| 120 | 120 |
| 121 // FIXME: Consider using CallbackPromiseAdapter. | 121 // FIXME: Consider using CallbackPromiseAdapter. |
| 122 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques
tsCallbacks { | 122 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques
tsCallbacks { |
| 123 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); | 123 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); |
| 124 public: | 124 public: |
| 125 CacheWithRequestsCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) | 125 CacheWithRequestsCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) |
| 126 : m_resolver(resolver) { } | 126 : m_resolver(resolver) { } |
| 127 | 127 |
| 128 virtual void onSuccess(WebVector<WebServiceWorkerRequest>* webRequests) OVER
RIDE | 128 virtual void onSuccess(WebVector<WebServiceWorkerRequest>* webRequests) over
ride |
| 129 { | 129 { |
| 130 HeapVector<Member<Request> > requests; | 130 HeapVector<Member<Request> > requests; |
| 131 for (size_t i = 0; i < webRequests->size(); ++i) | 131 for (size_t i = 0; i < webRequests->size(); ++i) |
| 132 requests.append(Request::create(m_resolver->scriptState()->execution
Context(), (*webRequests)[i])); | 132 requests.append(Request::create(m_resolver->scriptState()->execution
Context(), (*webRequests)[i])); |
| 133 m_resolver->resolve(requests); | 133 m_resolver->resolve(requests); |
| 134 m_resolver.clear(); | 134 m_resolver.clear(); |
| 135 } | 135 } |
| 136 | 136 |
| 137 virtual void onError(WebServiceWorkerCacheError* reason) OVERRIDE | 137 virtual void onError(WebServiceWorkerCacheError* reason) override |
| 138 { | 138 { |
| 139 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); | 139 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); |
| 140 m_resolver.clear(); | 140 m_resolver.clear(); |
| 141 } | 141 } |
| 142 | 142 |
| 143 private: | 143 private: |
| 144 RefPtr<ScriptPromiseResolver> m_resolver; | 144 RefPtr<ScriptPromiseResolver> m_resolver; |
| 145 }; | 145 }; |
| 146 | 146 |
| 147 ScriptPromise rejectForCacheError(ScriptState* scriptState, WebServiceWorkerCach
eError error) | 147 ScriptPromise rejectForCacheError(ScriptState* scriptState, WebServiceWorkerCach
eError error) |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 WebServiceWorkerRequest webRequest; | 395 WebServiceWorkerRequest webRequest; |
| 396 request->populateWebServiceWorkerRequest(webRequest); | 396 request->populateWebServiceWorkerRequest(webRequest); |
| 397 | 397 |
| 398 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); | 398 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip
tState); |
| 399 const ScriptPromise promise = resolver->promise(); | 399 const ScriptPromise promise = resolver->promise(); |
| 400 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ
ueryParams(options)); | 400 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ
ueryParams(options)); |
| 401 return promise; | 401 return promise; |
| 402 } | 402 } |
| 403 | 403 |
| 404 } // namespace blink | 404 } // namespace blink |
| OLD | NEW |