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 |