| 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/cachestorage/Cache.h" | 6 #include "modules/cachestorage/Cache.h" |
| 7 | 7 |
| 8 #include "bindings/core/v8/CallbackPromiseAdapter.h" | 8 #include "bindings/core/v8/CallbackPromiseAdapter.h" |
| 9 #include "bindings/core/v8/ExceptionState.h" | 9 #include "bindings/core/v8/ExceptionState.h" |
| 10 #include "bindings/core/v8/ScriptPromiseResolver.h" | 10 #include "bindings/core/v8/ScriptPromiseResolver.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 | 27 |
| 28 namespace { | 28 namespace { |
| 29 | 29 |
| 30 // FIXME: Consider using CallbackPromiseAdapter. | 30 // FIXME: Consider using CallbackPromiseAdapter. |
| 31 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { | 31 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { |
| 32 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); | 32 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); |
| 33 public: | 33 public: |
| 34 explicit CacheMatchCallbacks(ScriptPromiseResolver* resolver) | 34 explicit CacheMatchCallbacks(ScriptPromiseResolver* resolver) |
| 35 : m_resolver(resolver) { } | 35 : m_resolver(resolver) { } |
| 36 | 36 |
| 37 void onSuccess(WebServiceWorkerResponse* webResponse) override | 37 void onSuccess(const WebServiceWorkerResponse& webResponse) override |
| 38 { | 38 { |
| 39 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 39 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 40 return; | 40 return; |
| 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 // Ownership of |rawReason| must be passed. | 45 void onError(WebServiceWorkerCacheError reason) override |
| 46 void onError(WebServiceWorkerCacheError* rawReason) override | |
| 47 { | 46 { |
| 48 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason); | |
| 49 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 47 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 50 return; | 48 return; |
| 51 if (*reason == WebServiceWorkerCacheErrorNotFound) | 49 if (reason == WebServiceWorkerCacheErrorNotFound) |
| 52 m_resolver->resolve(); | 50 m_resolver->resolve(); |
| 53 else | 51 else |
| 54 m_resolver->reject(CacheStorageError::createException(*reason)); | 52 m_resolver->reject(CacheStorageError::createException(reason)); |
| 55 m_resolver.clear(); | 53 m_resolver.clear(); |
| 56 } | 54 } |
| 57 | 55 |
| 58 private: | 56 private: |
| 59 Persistent<ScriptPromiseResolver> m_resolver; | 57 Persistent<ScriptPromiseResolver> m_resolver; |
| 60 }; | 58 }; |
| 61 | 59 |
| 62 // FIXME: Consider using CallbackPromiseAdapter. | 60 // FIXME: Consider using CallbackPromiseAdapter. |
| 63 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo
nsesCallbacks { | 61 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo
nsesCallbacks { |
| 64 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); | 62 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); |
| 65 public: | 63 public: |
| 66 explicit CacheWithResponsesCallbacks(ScriptPromiseResolver* resolver) | 64 explicit CacheWithResponsesCallbacks(ScriptPromiseResolver* resolver) |
| 67 : m_resolver(resolver) { } | 65 : m_resolver(resolver) { } |
| 68 | 66 |
| 69 void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) override | 67 void onSuccess(const WebVector<WebServiceWorkerResponse>& webResponses) over
ride |
| 70 { | 68 { |
| 71 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 69 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 72 return; | 70 return; |
| 73 HeapVector<Member<Response>> responses; | 71 HeapVector<Member<Response>> responses; |
| 74 for (size_t i = 0; i < webResponses->size(); ++i) | 72 for (size_t i = 0; i < webResponses.size(); ++i) |
| 75 responses.append(Response::create(m_resolver->scriptState()->executi
onContext(), (*webResponses)[i])); | 73 responses.append(Response::create(m_resolver->scriptState()->executi
onContext(), webResponses[i])); |
| 76 m_resolver->resolve(responses); | 74 m_resolver->resolve(responses); |
| 77 m_resolver.clear(); | 75 m_resolver.clear(); |
| 78 } | 76 } |
| 79 | 77 |
| 80 // Ownership of |rawReason| must be passed. | 78 void onError(WebServiceWorkerCacheError reason) override |
| 81 void onError(WebServiceWorkerCacheError* rawReason) override | |
| 82 { | 79 { |
| 83 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason); | |
| 84 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 80 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 85 return; | 81 return; |
| 86 m_resolver->reject(CacheStorageError::createException(*reason)); | 82 m_resolver->reject(CacheStorageError::createException(reason)); |
| 87 m_resolver.clear(); | 83 m_resolver.clear(); |
| 88 } | 84 } |
| 89 | 85 |
| 90 protected: | 86 protected: |
| 91 Persistent<ScriptPromiseResolver> m_resolver; | 87 Persistent<ScriptPromiseResolver> m_resolver; |
| 92 }; | 88 }; |
| 93 | 89 |
| 94 // FIXME: Consider using CallbackPromiseAdapter. | 90 // FIXME: Consider using CallbackPromiseAdapter. |
| 95 class CacheDeleteCallback : public WebServiceWorkerCache::CacheBatchCallbacks { | 91 class CacheDeleteCallback : public WebServiceWorkerCache::CacheBatchCallbacks { |
| 96 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); | 92 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 121 Persistent<ScriptPromiseResolver> m_resolver; | 117 Persistent<ScriptPromiseResolver> m_resolver; |
| 122 }; | 118 }; |
| 123 | 119 |
| 124 // FIXME: Consider using CallbackPromiseAdapter. | 120 // FIXME: Consider using CallbackPromiseAdapter. |
| 125 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques
tsCallbacks { | 121 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques
tsCallbacks { |
| 126 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); | 122 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); |
| 127 public: | 123 public: |
| 128 explicit CacheWithRequestsCallbacks(ScriptPromiseResolver* resolver) | 124 explicit CacheWithRequestsCallbacks(ScriptPromiseResolver* resolver) |
| 129 : m_resolver(resolver) { } | 125 : m_resolver(resolver) { } |
| 130 | 126 |
| 131 void onSuccess(WebVector<WebServiceWorkerRequest>* webRequests) override | 127 void onSuccess(const WebVector<WebServiceWorkerRequest>& webRequests) overri
de |
| 132 { | 128 { |
| 133 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 129 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 134 return; | 130 return; |
| 135 HeapVector<Member<Request>> requests; | 131 HeapVector<Member<Request>> requests; |
| 136 for (size_t i = 0; i < webRequests->size(); ++i) | 132 for (size_t i = 0; i < webRequests.size(); ++i) |
| 137 requests.append(Request::create(m_resolver->scriptState()->execution
Context(), (*webRequests)[i])); | 133 requests.append(Request::create(m_resolver->scriptState()->execution
Context(), webRequests[i])); |
| 138 m_resolver->resolve(requests); | 134 m_resolver->resolve(requests); |
| 139 m_resolver.clear(); | 135 m_resolver.clear(); |
| 140 } | 136 } |
| 141 | 137 |
| 142 // Ownership of |rawReason| must be passed. | 138 void onError(WebServiceWorkerCacheError reason) override |
| 143 void onError(WebServiceWorkerCacheError* rawReason) override | |
| 144 { | 139 { |
| 145 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason); | |
| 146 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 140 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) |
| 147 return; | 141 return; |
| 148 m_resolver->reject(CacheStorageError::createException(*reason)); | 142 m_resolver->reject(CacheStorageError::createException(reason)); |
| 149 m_resolver.clear(); | 143 m_resolver.clear(); |
| 150 } | 144 } |
| 151 | 145 |
| 152 private: | 146 private: |
| 153 Persistent<ScriptPromiseResolver> m_resolver; | 147 Persistent<ScriptPromiseResolver> m_resolver; |
| 154 }; | 148 }; |
| 155 | 149 |
| 156 } // namespace | 150 } // namespace |
| 157 | 151 |
| 158 // TODO(nhiroki): Unfortunately, we have to go through V8 to wait for the fetch | 152 // TODO(nhiroki): Unfortunately, we have to go through V8 to wait for the fetch |
| (...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ
ueryParams(options)); | 525 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ
ueryParams(options)); |
| 532 return promise; | 526 return promise; |
| 533 } | 527 } |
| 534 | 528 |
| 535 WebServiceWorkerCache* Cache::webCache() const | 529 WebServiceWorkerCache* Cache::webCache() const |
| 536 { | 530 { |
| 537 return m_webCache.get(); | 531 return m_webCache.get(); |
| 538 } | 532 } |
| 539 | 533 |
| 540 } // namespace blink | 534 } // namespace blink |
| OLD | NEW |