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 "modules/cachestorage/Cache.h" | 5 #include "modules/cachestorage/Cache.h" |
6 | 6 |
7 #include "bindings/core/v8/CallbackPromiseAdapter.h" | 7 #include "bindings/core/v8/CallbackPromiseAdapter.h" |
8 #include "bindings/core/v8/ExceptionState.h" | 8 #include "bindings/core/v8/ExceptionState.h" |
9 #include "bindings/core/v8/ScriptPromiseResolver.h" | 9 #include "bindings/core/v8/ScriptPromiseResolver.h" |
10 #include "bindings/core/v8/ScriptState.h" | 10 #include "bindings/core/v8/ScriptState.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 | 42 |
43 // FIXME: Consider using CallbackPromiseAdapter. | 43 // FIXME: Consider using CallbackPromiseAdapter. |
44 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { | 44 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { |
45 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); | 45 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); |
46 public: | 46 public: |
47 explicit CacheMatchCallbacks(ScriptPromiseResolver* resolver) | 47 explicit CacheMatchCallbacks(ScriptPromiseResolver* resolver) |
48 : m_resolver(resolver) { } | 48 : m_resolver(resolver) { } |
49 | 49 |
50 void onSuccess(const WebServiceWorkerResponse& webResponse) override | 50 void onSuccess(const WebServiceWorkerResponse& webResponse) override |
51 { | 51 { |
52 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 52 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex
t()->activeDOMObjectsAreStopped()) |
53 return; | 53 return; |
54 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio
nContext(), webResponse)); | 54 m_resolver->resolve(Response::create(m_resolver->getScriptState()->getEx
ecutionContext(), webResponse)); |
55 m_resolver.clear(); | 55 m_resolver.clear(); |
56 } | 56 } |
57 | 57 |
58 void onError(WebServiceWorkerCacheError reason) override | 58 void onError(WebServiceWorkerCacheError reason) override |
59 { | 59 { |
60 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 60 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex
t()->activeDOMObjectsAreStopped()) |
61 return; | 61 return; |
62 if (reason == WebServiceWorkerCacheErrorNotFound) | 62 if (reason == WebServiceWorkerCacheErrorNotFound) |
63 m_resolver->resolve(); | 63 m_resolver->resolve(); |
64 else | 64 else |
65 m_resolver->reject(CacheStorageError::createException(reason)); | 65 m_resolver->reject(CacheStorageError::createException(reason)); |
66 m_resolver.clear(); | 66 m_resolver.clear(); |
67 } | 67 } |
68 | 68 |
69 private: | 69 private: |
70 Persistent<ScriptPromiseResolver> m_resolver; | 70 Persistent<ScriptPromiseResolver> m_resolver; |
71 }; | 71 }; |
72 | 72 |
73 // FIXME: Consider using CallbackPromiseAdapter. | 73 // FIXME: Consider using CallbackPromiseAdapter. |
74 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo
nsesCallbacks { | 74 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo
nsesCallbacks { |
75 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); | 75 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); |
76 public: | 76 public: |
77 explicit CacheWithResponsesCallbacks(ScriptPromiseResolver* resolver) | 77 explicit CacheWithResponsesCallbacks(ScriptPromiseResolver* resolver) |
78 : m_resolver(resolver) { } | 78 : m_resolver(resolver) { } |
79 | 79 |
80 void onSuccess(const WebVector<WebServiceWorkerResponse>& webResponses) over
ride | 80 void onSuccess(const WebVector<WebServiceWorkerResponse>& webResponses) over
ride |
81 { | 81 { |
82 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 82 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex
t()->activeDOMObjectsAreStopped()) |
83 return; | 83 return; |
84 HeapVector<Member<Response>> responses; | 84 HeapVector<Member<Response>> responses; |
85 for (size_t i = 0; i < webResponses.size(); ++i) | 85 for (size_t i = 0; i < webResponses.size(); ++i) |
86 responses.append(Response::create(m_resolver->scriptState()->executi
onContext(), webResponses[i])); | 86 responses.append(Response::create(m_resolver->getScriptState()->getE
xecutionContext(), webResponses[i])); |
87 m_resolver->resolve(responses); | 87 m_resolver->resolve(responses); |
88 m_resolver.clear(); | 88 m_resolver.clear(); |
89 } | 89 } |
90 | 90 |
91 void onError(WebServiceWorkerCacheError reason) override | 91 void onError(WebServiceWorkerCacheError reason) override |
92 { | 92 { |
93 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 93 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex
t()->activeDOMObjectsAreStopped()) |
94 return; | 94 return; |
95 m_resolver->reject(CacheStorageError::createException(reason)); | 95 m_resolver->reject(CacheStorageError::createException(reason)); |
96 m_resolver.clear(); | 96 m_resolver.clear(); |
97 } | 97 } |
98 | 98 |
99 protected: | 99 protected: |
100 Persistent<ScriptPromiseResolver> m_resolver; | 100 Persistent<ScriptPromiseResolver> m_resolver; |
101 }; | 101 }; |
102 | 102 |
103 // FIXME: Consider using CallbackPromiseAdapter. | 103 // FIXME: Consider using CallbackPromiseAdapter. |
104 class CacheDeleteCallback : public WebServiceWorkerCache::CacheBatchCallbacks { | 104 class CacheDeleteCallback : public WebServiceWorkerCache::CacheBatchCallbacks { |
105 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); | 105 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); |
106 public: | 106 public: |
107 explicit CacheDeleteCallback(ScriptPromiseResolver* resolver) | 107 explicit CacheDeleteCallback(ScriptPromiseResolver* resolver) |
108 : m_resolver(resolver) { } | 108 : m_resolver(resolver) { } |
109 | 109 |
110 void onSuccess() override | 110 void onSuccess() override |
111 { | 111 { |
112 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 112 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex
t()->activeDOMObjectsAreStopped()) |
113 return; | 113 return; |
114 m_resolver->resolve(true); | 114 m_resolver->resolve(true); |
115 m_resolver.clear(); | 115 m_resolver.clear(); |
116 } | 116 } |
117 | 117 |
118 void onError(WebServiceWorkerCacheError reason) override | 118 void onError(WebServiceWorkerCacheError reason) override |
119 { | 119 { |
120 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 120 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex
t()->activeDOMObjectsAreStopped()) |
121 return; | 121 return; |
122 if (reason == WebServiceWorkerCacheErrorNotFound) | 122 if (reason == WebServiceWorkerCacheErrorNotFound) |
123 m_resolver->resolve(false); | 123 m_resolver->resolve(false); |
124 else | 124 else |
125 m_resolver->reject(CacheStorageError::createException(reason)); | 125 m_resolver->reject(CacheStorageError::createException(reason)); |
126 m_resolver.clear(); | 126 m_resolver.clear(); |
127 } | 127 } |
128 | 128 |
129 private: | 129 private: |
130 Persistent<ScriptPromiseResolver> m_resolver; | 130 Persistent<ScriptPromiseResolver> m_resolver; |
131 }; | 131 }; |
132 | 132 |
133 // FIXME: Consider using CallbackPromiseAdapter. | 133 // FIXME: Consider using CallbackPromiseAdapter. |
134 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques
tsCallbacks { | 134 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques
tsCallbacks { |
135 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); | 135 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); |
136 public: | 136 public: |
137 explicit CacheWithRequestsCallbacks(ScriptPromiseResolver* resolver) | 137 explicit CacheWithRequestsCallbacks(ScriptPromiseResolver* resolver) |
138 : m_resolver(resolver) { } | 138 : m_resolver(resolver) { } |
139 | 139 |
140 void onSuccess(const WebVector<WebServiceWorkerRequest>& webRequests) overri
de | 140 void onSuccess(const WebVector<WebServiceWorkerRequest>& webRequests) overri
de |
141 { | 141 { |
142 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 142 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex
t()->activeDOMObjectsAreStopped()) |
143 return; | 143 return; |
144 HeapVector<Member<Request>> requests; | 144 HeapVector<Member<Request>> requests; |
145 for (size_t i = 0; i < webRequests.size(); ++i) | 145 for (size_t i = 0; i < webRequests.size(); ++i) |
146 requests.append(Request::create(m_resolver->scriptState()->execution
Context(), webRequests[i])); | 146 requests.append(Request::create(m_resolver->getScriptState()->getExe
cutionContext(), webRequests[i])); |
147 m_resolver->resolve(requests); | 147 m_resolver->resolve(requests); |
148 m_resolver.clear(); | 148 m_resolver.clear(); |
149 } | 149 } |
150 | 150 |
151 void onError(WebServiceWorkerCacheError reason) override | 151 void onError(WebServiceWorkerCacheError reason) override |
152 { | 152 { |
153 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 153 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex
t()->activeDOMObjectsAreStopped()) |
154 return; | 154 return; |
155 m_resolver->reject(CacheStorageError::createException(reason)); | 155 m_resolver->reject(CacheStorageError::createException(reason)); |
156 m_resolver.clear(); | 156 m_resolver.clear(); |
157 } | 157 } |
158 | 158 |
159 private: | 159 private: |
160 Persistent<ScriptPromiseResolver> m_resolver; | 160 Persistent<ScriptPromiseResolver> m_resolver; |
161 }; | 161 }; |
162 | 162 |
163 // Used for UMA. Append only. | 163 // Used for UMA. Append only. |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 public: | 223 public: |
224 static v8::Local<v8::Function> create(ScriptState* scriptState, Cache* cache
, const HeapVector<Member<Request>>& requests) | 224 static v8::Local<v8::Function> create(ScriptState* scriptState, Cache* cache
, const HeapVector<Member<Request>>& requests) |
225 { | 225 { |
226 FetchResolvedForAdd* self = new FetchResolvedForAdd(scriptState, cache,
requests); | 226 FetchResolvedForAdd* self = new FetchResolvedForAdd(scriptState, cache,
requests); |
227 return self->bindToV8Function(); | 227 return self->bindToV8Function(); |
228 } | 228 } |
229 | 229 |
230 ScriptValue call(ScriptValue value) override | 230 ScriptValue call(ScriptValue value) override |
231 { | 231 { |
232 NonThrowableExceptionState exceptionState; | 232 NonThrowableExceptionState exceptionState; |
233 HeapVector<Member<Response>> responses = toMemberNativeArray<Response, V
8Response>(value.v8Value(), m_requests.size(), scriptState()->isolate(), excepti
onState); | 233 HeapVector<Member<Response>> responses = toMemberNativeArray<Response, V
8Response>(value.v8Value(), m_requests.size(), getScriptState()->isolate(), exce
ptionState); |
234 | 234 |
235 for (const auto& response : responses) { | 235 for (const auto& response : responses) { |
236 if (!response->ok()) { | 236 if (!response->ok()) { |
237 ScriptPromise rejection = ScriptPromise::reject(scriptState(), V
8ThrowException::createTypeError(scriptState()->isolate(), "Request failed")); | 237 ScriptPromise rejection = ScriptPromise::reject(getScriptState()
, V8ThrowException::createTypeError(getScriptState()->isolate(), "Request failed
")); |
238 return ScriptValue(scriptState(), rejection.v8Value()); | 238 return ScriptValue(getScriptState(), rejection.v8Value()); |
239 } | 239 } |
240 if (varyHeaderContainsAsterisk(response)) { | 240 if (varyHeaderContainsAsterisk(response)) { |
241 ScriptPromise rejection = ScriptPromise::reject(scriptState(), V
8ThrowException::createTypeError(scriptState()->isolate(), "Vary header contains
*")); | 241 ScriptPromise rejection = ScriptPromise::reject(getScriptState()
, V8ThrowException::createTypeError(getScriptState()->isolate(), "Vary header co
ntains *")); |
242 return ScriptValue(scriptState(), rejection.v8Value()); | 242 return ScriptValue(getScriptState(), rejection.v8Value()); |
243 } | 243 } |
244 } | 244 } |
245 | 245 |
246 for (const auto& response : responses) | 246 for (const auto& response : responses) |
247 RecordResponseTypeForAdd(response); | 247 RecordResponseTypeForAdd(response); |
248 | 248 |
249 ScriptPromise putPromise = m_cache->putImpl(scriptState(), m_requests, r
esponses); | 249 ScriptPromise putPromise = m_cache->putImpl(getScriptState(), m_requests
, responses); |
250 return ScriptValue(scriptState(), putPromise.v8Value()); | 250 return ScriptValue(getScriptState(), putPromise.v8Value()); |
251 } | 251 } |
252 | 252 |
253 DEFINE_INLINE_VIRTUAL_TRACE() | 253 DEFINE_INLINE_VIRTUAL_TRACE() |
254 { | 254 { |
255 visitor->trace(m_cache); | 255 visitor->trace(m_cache); |
256 visitor->trace(m_requests); | 256 visitor->trace(m_requests); |
257 ScriptFunction::trace(visitor); | 257 ScriptFunction::trace(visitor); |
258 } | 258 } |
259 | 259 |
260 private: | 260 private: |
(...skipping 17 matching lines...) Expand all Loading... |
278 { | 278 { |
279 ASSERT(0 < m_numberOfRemainingOperations); | 279 ASSERT(0 < m_numberOfRemainingOperations); |
280 m_batchOperations.resize(numberOfOperations); | 280 m_batchOperations.resize(numberOfOperations); |
281 } | 281 } |
282 | 282 |
283 void onSuccess(size_t index, const WebServiceWorkerCache::BatchOperation& ba
tchOperation) | 283 void onSuccess(size_t index, const WebServiceWorkerCache::BatchOperation& ba
tchOperation) |
284 { | 284 { |
285 ASSERT(index < m_batchOperations.size()); | 285 ASSERT(index < m_batchOperations.size()); |
286 if (m_completed) | 286 if (m_completed) |
287 return; | 287 return; |
288 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 288 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex
t()->activeDOMObjectsAreStopped()) |
289 return; | 289 return; |
290 m_batchOperations[index] = batchOperation; | 290 m_batchOperations[index] = batchOperation; |
291 if (--m_numberOfRemainingOperations != 0) | 291 if (--m_numberOfRemainingOperations != 0) |
292 return; | 292 return; |
293 m_cache->webCache()->dispatchBatch(new CallbackPromiseAdapter<void, Cach
eStorageError>(m_resolver), m_batchOperations); | 293 m_cache->webCache()->dispatchBatch(new CallbackPromiseAdapter<void, Cach
eStorageError>(m_resolver), m_batchOperations); |
294 } | 294 } |
295 | 295 |
296 void onError(const String& errorMessage) | 296 void onError(const String& errorMessage) |
297 { | 297 { |
298 if (m_completed) | 298 if (m_completed) |
299 return; | 299 return; |
300 m_completed = true; | 300 m_completed = true; |
301 if (!m_resolver->executionContext() || m_resolver->executionContext()->a
ctiveDOMObjectsAreStopped()) | 301 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex
t()->activeDOMObjectsAreStopped()) |
302 return; | 302 return; |
303 ScriptState* state = m_resolver->scriptState(); | 303 ScriptState* state = m_resolver->getScriptState(); |
304 ScriptState::Scope scope(state); | 304 ScriptState::Scope scope(state); |
305 m_resolver->reject(V8ThrowException::createTypeError(state->isolate(), e
rrorMessage)); | 305 m_resolver->reject(V8ThrowException::createTypeError(state->isolate(), e
rrorMessage)); |
306 } | 306 } |
307 | 307 |
308 DEFINE_INLINE_VIRTUAL_TRACE() | 308 DEFINE_INLINE_VIRTUAL_TRACE() |
309 { | 309 { |
310 visitor->trace(m_cache); | 310 visitor->trace(m_cache); |
311 visitor->trace(m_resolver); | 311 visitor->trace(m_resolver); |
312 } | 312 } |
313 | 313 |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 | 480 |
481 DEFINE_TRACE(Cache) | 481 DEFINE_TRACE(Cache) |
482 { | 482 { |
483 visitor->trace(m_scopedFetcher); | 483 visitor->trace(m_scopedFetcher); |
484 } | 484 } |
485 | 485 |
486 ScriptPromise Cache::matchImpl(ScriptState* scriptState, const Request* request,
const CacheQueryOptions& options) | 486 ScriptPromise Cache::matchImpl(ScriptState* scriptState, const Request* request,
const CacheQueryOptions& options) |
487 { | 487 { |
488 WebServiceWorkerRequest webRequest; | 488 WebServiceWorkerRequest webRequest; |
489 request->populateWebServiceWorkerRequest(webRequest); | 489 request->populateWebServiceWorkerRequest(webRequest); |
490 checkCacheQueryOptions(options, scriptState->executionContext()); | 490 checkCacheQueryOptions(options, scriptState->getExecutionContext()); |
491 | 491 |
492 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; | 492 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; |
493 const ScriptPromise promise = resolver->promise(); | 493 const ScriptPromise promise = resolver->promise(); |
494 m_webCache->dispatchMatch(new CacheMatchCallbacks(resolver), webRequest, toW
ebQueryParams(options)); | 494 m_webCache->dispatchMatch(new CacheMatchCallbacks(resolver), webRequest, toW
ebQueryParams(options)); |
495 return promise; | 495 return promise; |
496 } | 496 } |
497 | 497 |
498 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState) | 498 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState) |
499 { | 499 { |
500 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; | 500 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; |
501 const ScriptPromise promise = resolver->promise(); | 501 const ScriptPromise promise = resolver->promise(); |
502 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), WebS
erviceWorkerRequest(), WebServiceWorkerCache::QueryParams()); | 502 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), WebS
erviceWorkerRequest(), WebServiceWorkerCache::QueryParams()); |
503 return promise; | 503 return promise; |
504 } | 504 } |
505 | 505 |
506 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState, const Request* reque
st, const CacheQueryOptions& options) | 506 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState, const Request* reque
st, const CacheQueryOptions& options) |
507 { | 507 { |
508 WebServiceWorkerRequest webRequest; | 508 WebServiceWorkerRequest webRequest; |
509 request->populateWebServiceWorkerRequest(webRequest); | 509 request->populateWebServiceWorkerRequest(webRequest); |
510 checkCacheQueryOptions(options, scriptState->executionContext()); | 510 checkCacheQueryOptions(options, scriptState->getExecutionContext()); |
511 | 511 |
512 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; | 512 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; |
513 const ScriptPromise promise = resolver->promise(); | 513 const ScriptPromise promise = resolver->promise(); |
514 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), webR
equest, toWebQueryParams(options)); | 514 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), webR
equest, toWebQueryParams(options)); |
515 return promise; | 515 return promise; |
516 } | 516 } |
517 | 517 |
518 ScriptPromise Cache::addAllImpl(ScriptState* scriptState, const HeapVector<Membe
r<Request>>& requests, ExceptionState& exceptionState) | 518 ScriptPromise Cache::addAllImpl(ScriptState* scriptState, const HeapVector<Membe
r<Request>>& requests, ExceptionState& exceptionState) |
519 { | 519 { |
520 if (requests.isEmpty()) | 520 if (requests.isEmpty()) |
(...skipping 14 matching lines...) Expand all Loading... |
535 } | 535 } |
536 | 536 |
537 return ScriptPromise::all(scriptState, promises).then(FetchResolvedForAdd::c
reate(scriptState, this, requests)); | 537 return ScriptPromise::all(scriptState, promises).then(FetchResolvedForAdd::c
reate(scriptState, this, requests)); |
538 } | 538 } |
539 | 539 |
540 ScriptPromise Cache::deleteImpl(ScriptState* scriptState, const Request* request
, const CacheQueryOptions& options) | 540 ScriptPromise Cache::deleteImpl(ScriptState* scriptState, const Request* request
, const CacheQueryOptions& options) |
541 { | 541 { |
542 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); | 542 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); |
543 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeDelet
e; | 543 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeDelet
e; |
544 request->populateWebServiceWorkerRequest(batchOperations[0].request); | 544 request->populateWebServiceWorkerRequest(batchOperations[0].request); |
545 checkCacheQueryOptions(options, scriptState->executionContext()); | 545 checkCacheQueryOptions(options, scriptState->getExecutionContext()); |
546 batchOperations[0].matchParams = toWebQueryParams(options); | 546 batchOperations[0].matchParams = toWebQueryParams(options); |
547 | 547 |
548 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; | 548 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; |
549 const ScriptPromise promise = resolver->promise(); | 549 const ScriptPromise promise = resolver->promise(); |
550 m_webCache->dispatchBatch(new CacheDeleteCallback(resolver), batchOperations
); | 550 m_webCache->dispatchBatch(new CacheDeleteCallback(resolver), batchOperations
); |
551 return promise; | 551 return promise; |
552 } | 552 } |
553 | 553 |
554 ScriptPromise Cache::putImpl(ScriptState* scriptState, const HeapVector<Member<R
equest>>& requests, const HeapVector<Member<Response>>& responses) | 554 ScriptPromise Cache::putImpl(ScriptState* scriptState, const HeapVector<Member<R
equest>>& requests, const HeapVector<Member<Response>>& responses) |
555 { | 555 { |
(...skipping 21 matching lines...) Expand all Loading... |
577 if (responses[i]->isBodyLocked() || responses[i]->bodyUsed()) { | 577 if (responses[i]->isBodyLocked() || responses[i]->bodyUsed()) { |
578 barrierCallback->onError("Response body is already used"); | 578 barrierCallback->onError("Response body is already used"); |
579 return promise; | 579 return promise; |
580 } | 580 } |
581 | 581 |
582 BodyStreamBuffer* buffer = responses[i]->internalBodyBuffer(); | 582 BodyStreamBuffer* buffer = responses[i]->internalBodyBuffer(); |
583 if (buffer) { | 583 if (buffer) { |
584 // If the response has body, read the all data and create | 584 // If the response has body, read the all data and create |
585 // the blob handle and dispatch the put batch asynchronously. | 585 // the blob handle and dispatch the put batch asynchronously. |
586 FetchDataLoader* loader = FetchDataLoader::createLoaderAsBlobHandle(
responses[i]->internalMIMEType()); | 586 FetchDataLoader* loader = FetchDataLoader::createLoaderAsBlobHandle(
responses[i]->internalMIMEType()); |
587 buffer->startLoading(scriptState->executionContext(), loader, new Bl
obHandleCallbackForPut(i, barrierCallback, requests[i], responses[i])); | 587 buffer->startLoading(scriptState->getExecutionContext(), loader, new
BlobHandleCallbackForPut(i, barrierCallback, requests[i], responses[i])); |
588 continue; | 588 continue; |
589 } | 589 } |
590 | 590 |
591 WebServiceWorkerCache::BatchOperation batchOperation; | 591 WebServiceWorkerCache::BatchOperation batchOperation; |
592 batchOperation.operationType = WebServiceWorkerCache::OperationTypePut; | 592 batchOperation.operationType = WebServiceWorkerCache::OperationTypePut; |
593 requests[i]->populateWebServiceWorkerRequest(batchOperation.request); | 593 requests[i]->populateWebServiceWorkerRequest(batchOperation.request); |
594 responses[i]->populateWebServiceWorkerResponse(batchOperation.response); | 594 responses[i]->populateWebServiceWorkerResponse(batchOperation.response); |
595 barrierCallback->onSuccess(i, batchOperation); | 595 barrierCallback->onSuccess(i, batchOperation); |
596 } | 596 } |
597 | 597 |
598 return promise; | 598 return promise; |
599 } | 599 } |
600 | 600 |
601 ScriptPromise Cache::keysImpl(ScriptState* scriptState) | 601 ScriptPromise Cache::keysImpl(ScriptState* scriptState) |
602 { | 602 { |
603 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; | 603 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; |
604 const ScriptPromise promise = resolver->promise(); | 604 const ScriptPromise promise = resolver->promise(); |
605 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, WebSer
viceWorkerCache::QueryParams()); | 605 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, WebSer
viceWorkerCache::QueryParams()); |
606 return promise; | 606 return promise; |
607 } | 607 } |
608 | 608 |
609 ScriptPromise Cache::keysImpl(ScriptState* scriptState, const Request* request,
const CacheQueryOptions& options) | 609 ScriptPromise Cache::keysImpl(ScriptState* scriptState, const Request* request,
const CacheQueryOptions& options) |
610 { | 610 { |
611 WebServiceWorkerRequest webRequest; | 611 WebServiceWorkerRequest webRequest; |
612 request->populateWebServiceWorkerRequest(webRequest); | 612 request->populateWebServiceWorkerRequest(webRequest); |
613 checkCacheQueryOptions(options, scriptState->executionContext()); | 613 checkCacheQueryOptions(options, scriptState->getExecutionContext()); |
614 | 614 |
615 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; | 615 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState)
; |
616 const ScriptPromise promise = resolver->promise(); | 616 const ScriptPromise promise = resolver->promise(); |
617 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ
ueryParams(options)); | 617 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ
ueryParams(options)); |
618 return promise; | 618 return promise; |
619 } | 619 } |
620 | 620 |
621 WebServiceWorkerCache* Cache::webCache() const | 621 WebServiceWorkerCache* Cache::webCache() const |
622 { | 622 { |
623 return m_webCache.get(); | 623 return m_webCache.get(); |
624 } | 624 } |
625 | 625 |
626 } // namespace blink | 626 } // namespace blink |
OLD | NEW |