Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Side by Side Diff: Source/modules/serviceworkers/Cache.cpp

Issue 783423003: Make ScriptPromiseResolver RefCountedWillBeRefCountedGarbageCollected. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/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"
11 #include "bindings/core/v8/V8ThrowException.h" 11 #include "bindings/core/v8/V8ThrowException.h"
12 #include "core/dom/DOMException.h" 12 #include "core/dom/DOMException.h"
13 #include "modules/serviceworkers/BodyStreamBuffer.h" 13 #include "modules/serviceworkers/BodyStreamBuffer.h"
14 #include "modules/serviceworkers/Request.h" 14 #include "modules/serviceworkers/Request.h"
15 #include "modules/serviceworkers/Response.h" 15 #include "modules/serviceworkers/Response.h"
16 #include "public/platform/WebServiceWorkerCache.h" 16 #include "public/platform/WebServiceWorkerCache.h"
17 17
18 namespace blink { 18 namespace blink {
19 19
20 namespace { 20 namespace {
21 21
22 // FIXME: Consider using CallbackPromiseAdapter. 22 // FIXME: Consider using CallbackPromiseAdapter.
23 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { 23 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks {
24 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); 24 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks);
25 public: 25 public:
26 CacheMatchCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) 26 CacheMatchCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver)
27 : m_resolver(resolver) { } 27 : m_resolver(resolver) { }
28 28
29 virtual void onSuccess(WebServiceWorkerResponse* webResponse) override 29 virtual void onSuccess(WebServiceWorkerResponse* webResponse) override
30 { 30 {
31 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio nContext(), *webResponse)); 31 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio nContext(), *webResponse));
32 m_resolver.clear(); 32 m_resolver.clear();
33 } 33 }
34 34
35 virtual void onError(WebServiceWorkerCacheError* reason) override 35 virtual void onError(WebServiceWorkerCacheError* reason) override
36 { 36 {
37 if (*reason == WebServiceWorkerCacheErrorNotFound) 37 if (*reason == WebServiceWorkerCacheErrorNotFound)
38 m_resolver->resolve(); 38 m_resolver->resolve();
39 else 39 else
40 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); 40 m_resolver->reject(Cache::domExceptionForCacheError(*reason));
41 m_resolver.clear(); 41 m_resolver.clear();
42 } 42 }
43 43
44 private: 44 private:
45 RefPtr<ScriptPromiseResolver> m_resolver; 45 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
46 }; 46 };
47 47
48 // FIXME: Consider using CallbackPromiseAdapter. 48 // FIXME: Consider using CallbackPromiseAdapter.
49 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo nsesCallbacks { 49 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo nsesCallbacks {
50 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); 50 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks);
51 public: 51 public:
52 CacheWithResponsesCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) 52 CacheWithResponsesCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> re solver)
53 : m_resolver(resolver) { } 53 : m_resolver(resolver) { }
54 54
55 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov erride 55 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov erride
56 { 56 {
57 HeapVector<Member<Response> > responses; 57 HeapVector<Member<Response> > responses;
58 for (size_t i = 0; i < webResponses->size(); ++i) 58 for (size_t i = 0; i < webResponses->size(); ++i)
59 responses.append(Response::create(m_resolver->scriptState()->executi onContext(), (*webResponses)[i])); 59 responses.append(Response::create(m_resolver->scriptState()->executi onContext(), (*webResponses)[i]));
60 m_resolver->resolve(responses); 60 m_resolver->resolve(responses);
61 m_resolver.clear(); 61 m_resolver.clear();
62 } 62 }
63 63
64 virtual void onError(WebServiceWorkerCacheError* reason) override 64 virtual void onError(WebServiceWorkerCacheError* reason) override
65 { 65 {
66 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); 66 m_resolver->reject(Cache::domExceptionForCacheError(*reason));
67 m_resolver.clear(); 67 m_resolver.clear();
68 } 68 }
69 69
70 protected: 70 protected:
71 RefPtr<ScriptPromiseResolver> m_resolver; 71 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
72 }; 72 };
73 73
74 // FIXME: Consider using CallbackPromiseAdapter. 74 // FIXME: Consider using CallbackPromiseAdapter.
75 class CacheAddOrPutCallbacks : public CacheWithResponsesCallbacks { 75 class CacheAddOrPutCallbacks : public CacheWithResponsesCallbacks {
76 WTF_MAKE_NONCOPYABLE(CacheAddOrPutCallbacks); 76 WTF_MAKE_NONCOPYABLE(CacheAddOrPutCallbacks);
77 public: 77 public:
78 CacheAddOrPutCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) 78 CacheAddOrPutCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolve r)
79 : CacheWithResponsesCallbacks(resolver) { } 79 : CacheWithResponsesCallbacks(resolver) { }
80 80
81 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov erride 81 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov erride
82 { 82 {
83 // FIXME: Since response is ignored, consider simplifying public API. 83 // FIXME: Since response is ignored, consider simplifying public API.
84 m_resolver->resolve(); 84 m_resolver->resolve();
85 m_resolver.clear(); 85 m_resolver.clear();
86 } 86 }
87 }; 87 };
88 88
89 // FIXME: Consider using CallbackPromiseAdapter. 89 // FIXME: Consider using CallbackPromiseAdapter.
90 class CacheDeleteCallback : public WebServiceWorkerCache::CacheWithResponsesCall backs { 90 class CacheDeleteCallback : public WebServiceWorkerCache::CacheWithResponsesCall backs {
91 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); 91 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback);
92 public: 92 public:
93 CacheDeleteCallback(PassRefPtr<ScriptPromiseResolver> resolver) 93 CacheDeleteCallback(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver)
94 : m_resolver(resolver) { } 94 : m_resolver(resolver) { }
95 95
96 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov erride 96 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov erride
97 { 97 {
98 // FIXME: Since response is ignored, consider simplifying public API. 98 // FIXME: Since response is ignored, consider simplifying public API.
99 m_resolver->resolve(true); 99 m_resolver->resolve(true);
100 m_resolver.clear(); 100 m_resolver.clear();
101 } 101 }
102 102
103 virtual void onError(WebServiceWorkerCacheError* reason) override 103 virtual void onError(WebServiceWorkerCacheError* reason) override
104 { 104 {
105 if (*reason == WebServiceWorkerCacheErrorNotFound) 105 if (*reason == WebServiceWorkerCacheErrorNotFound)
106 m_resolver->resolve(false); 106 m_resolver->resolve(false);
107 else 107 else
108 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); 108 m_resolver->reject(Cache::domExceptionForCacheError(*reason));
109 m_resolver.clear(); 109 m_resolver.clear();
110 } 110 }
111 111
112 private: 112 private:
113 RefPtr<ScriptPromiseResolver> m_resolver; 113 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
114 }; 114 };
115 115
116 // FIXME: Consider using CallbackPromiseAdapter. 116 // FIXME: Consider using CallbackPromiseAdapter.
117 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques tsCallbacks { 117 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques tsCallbacks {
118 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); 118 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks);
119 public: 119 public:
120 CacheWithRequestsCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) 120 CacheWithRequestsCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> res olver)
121 : m_resolver(resolver) { } 121 : m_resolver(resolver) { }
122 122
123 virtual void onSuccess(WebVector<WebServiceWorkerRequest>* webRequests) over ride 123 virtual void onSuccess(WebVector<WebServiceWorkerRequest>* webRequests) over ride
124 { 124 {
125 HeapVector<Member<Request> > requests; 125 HeapVector<Member<Request> > requests;
126 for (size_t i = 0; i < webRequests->size(); ++i) 126 for (size_t i = 0; i < webRequests->size(); ++i)
127 requests.append(Request::create(m_resolver->scriptState()->execution Context(), (*webRequests)[i])); 127 requests.append(Request::create(m_resolver->scriptState()->execution Context(), (*webRequests)[i]));
128 m_resolver->resolve(requests); 128 m_resolver->resolve(requests);
129 m_resolver.clear(); 129 m_resolver.clear();
130 } 130 }
131 131
132 virtual void onError(WebServiceWorkerCacheError* reason) override 132 virtual void onError(WebServiceWorkerCacheError* reason) override
133 { 133 {
134 m_resolver->reject(Cache::domExceptionForCacheError(*reason)); 134 m_resolver->reject(Cache::domExceptionForCacheError(*reason));
135 m_resolver.clear(); 135 m_resolver.clear();
136 } 136 }
137 137
138 private: 138 private:
139 RefPtr<ScriptPromiseResolver> m_resolver; 139 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
140 }; 140 };
141 141
142 ScriptPromise rejectAsNotImplemented(ScriptState* scriptState) 142 ScriptPromise rejectAsNotImplemented(ScriptState* scriptState)
143 { 143 {
144 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::crea te(NotSupportedError, "Cache is not implemented")); 144 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::crea te(NotSupportedError, "Cache is not implemented"));
145 } 145 }
146 146
147 } // namespace 147 } // namespace
148 148
149 class Cache::AsyncPutBatch final : public BodyStreamBuffer::BlobHandleCreatorCli ent { 149 class Cache::AsyncPutBatch final : public BodyStreamBuffer::BlobHandleCreatorCli ent {
150 public: 150 public:
151 AsyncPutBatch(PassRefPtr<ScriptPromiseResolver> resolver, Cache* cache, Requ est* request, Response* response) 151 AsyncPutBatch(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver, Cache* cache, Request* request, Response* response)
152 : m_resolver(resolver) 152 : m_resolver(resolver)
153 , m_cache(cache) 153 , m_cache(cache)
154 { 154 {
155 request->populateWebServiceWorkerRequest(m_webRequest); 155 request->populateWebServiceWorkerRequest(m_webRequest);
156 response->populateWebServiceWorkerResponse(m_webResponse); 156 response->populateWebServiceWorkerResponse(m_webResponse);
157 } 157 }
158 ~AsyncPutBatch() override { } 158 ~AsyncPutBatch() override { }
159 void didCreateBlobHandle(PassRefPtr<BlobDataHandle> handle) override 159 void didCreateBlobHandle(PassRefPtr<BlobDataHandle> handle) override
160 { 160 {
161 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t( 1)); 161 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t( 1));
162 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeP ut; 162 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeP ut;
163 batchOperations[0].request = m_webRequest; 163 batchOperations[0].request = m_webRequest;
164 batchOperations[0].response = m_webResponse; 164 batchOperations[0].response = m_webResponse;
165 batchOperations[0].response.setBlobDataHandle(handle); 165 batchOperations[0].response.setBlobDataHandle(handle);
166 m_cache->webCache()->dispatchBatch(new CacheAddOrPutCallbacks(m_resolver ), batchOperations); 166 m_cache->webCache()->dispatchBatch(new CacheAddOrPutCallbacks(m_resolver .get()), batchOperations);
167 cleanup(); 167 cleanup();
168 } 168 }
169 void didFail(PassRefPtrWillBeRawPtr<DOMException> exception) override 169 void didFail(PassRefPtrWillBeRawPtr<DOMException> exception) override
170 { 170 {
171 ScriptState* state = m_resolver->scriptState(); 171 ScriptState* state = m_resolver->scriptState();
172 ScriptState::Scope scope(state); 172 ScriptState::Scope scope(state);
173 m_resolver->reject(V8ThrowException::createTypeError(state->isolate(), e xception->toString())); 173 m_resolver->reject(V8ThrowException::createTypeError(state->isolate(), e xception->toString()));
174 cleanup(); 174 cleanup();
175 } 175 }
176
176 void trace(Visitor* visitor) override 177 void trace(Visitor* visitor) override
177 { 178 {
178 BlobHandleCreatorClient::trace(visitor); 179 BlobHandleCreatorClient::trace(visitor);
180 visitor->trace(m_resolver);
179 visitor->trace(m_cache); 181 visitor->trace(m_cache);
180 } 182 }
181 183
182 private: 184 private:
183 void cleanup() 185 void cleanup()
184 { 186 {
185 m_resolver = nullptr; 187 m_resolver = nullptr;
186 m_cache = nullptr; 188 m_cache = nullptr;
187 } 189 }
188 RefPtr<ScriptPromiseResolver> m_resolver; 190 RefPtrWillBeMember<ScriptPromiseResolver> m_resolver;
189 Member<Cache> m_cache; 191 Member<Cache> m_cache;
190 WebServiceWorkerRequest m_webRequest; 192 WebServiceWorkerRequest m_webRequest;
191 WebServiceWorkerResponse m_webResponse; 193 WebServiceWorkerResponse m_webResponse;
192 }; 194 };
193 195
194 Cache* Cache::create(WebServiceWorkerCache* webCache) 196 Cache* Cache::create(WebServiceWorkerCache* webCache)
195 { 197 {
196 return new Cache(webCache); 198 return new Cache(webCache);
197 } 199 }
198 200
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 } 288 }
287 289
288 Cache::Cache(WebServiceWorkerCache* webCache) 290 Cache::Cache(WebServiceWorkerCache* webCache)
289 : m_webCache(adoptPtr(webCache)) { } 291 : m_webCache(adoptPtr(webCache)) { }
290 292
291 ScriptPromise Cache::matchImpl(ScriptState* scriptState, const Request* request, const CacheQueryOptions& options) 293 ScriptPromise Cache::matchImpl(ScriptState* scriptState, const Request* request, const CacheQueryOptions& options)
292 { 294 {
293 WebServiceWorkerRequest webRequest; 295 WebServiceWorkerRequest webRequest;
294 request->populateWebServiceWorkerRequest(webRequest); 296 request->populateWebServiceWorkerRequest(webRequest);
295 297
296 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 298 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver:: create(scriptState);
297 const ScriptPromise promise = resolver->promise(); 299 const ScriptPromise promise = resolver->promise();
298 m_webCache->dispatchMatch(new CacheMatchCallbacks(resolver), webRequest, toW ebQueryParams(options)); 300 m_webCache->dispatchMatch(new CacheMatchCallbacks(resolver), webRequest, toW ebQueryParams(options));
299 return promise; 301 return promise;
300 } 302 }
301 303
302 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState, const Request* reque st, const CacheQueryOptions& options) 304 ScriptPromise Cache::matchAllImpl(ScriptState* scriptState, const Request* reque st, const CacheQueryOptions& options)
303 { 305 {
304 WebServiceWorkerRequest webRequest; 306 WebServiceWorkerRequest webRequest;
305 request->populateWebServiceWorkerRequest(webRequest); 307 request->populateWebServiceWorkerRequest(webRequest);
306 308
307 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 309 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver:: create(scriptState);
308 const ScriptPromise promise = resolver->promise(); 310 const ScriptPromise promise = resolver->promise();
309 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), webR equest, toWebQueryParams(options)); 311 m_webCache->dispatchMatchAll(new CacheWithResponsesCallbacks(resolver), webR equest, toWebQueryParams(options));
310 return promise; 312 return promise;
311 } 313 }
312 314
313 ScriptPromise Cache::addImpl(ScriptState* scriptState, const Request*) 315 ScriptPromise Cache::addImpl(ScriptState* scriptState, const Request*)
314 { 316 {
315 // FIXME: Implement this. 317 // FIXME: Implement this.
316 return rejectAsNotImplemented(scriptState); 318 return rejectAsNotImplemented(scriptState);
317 } 319 }
(...skipping 19 matching lines...) Expand all
337 } 339 }
338 } 340 }
339 341
340 ScriptPromise Cache::deleteImpl(ScriptState* scriptState, const Request* request , const CacheQueryOptions& options) 342 ScriptPromise Cache::deleteImpl(ScriptState* scriptState, const Request* request , const CacheQueryOptions& options)
341 { 343 {
342 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); 344 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1));
343 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeDelet e; 345 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeDelet e;
344 request->populateWebServiceWorkerRequest(batchOperations[0].request); 346 request->populateWebServiceWorkerRequest(batchOperations[0].request);
345 batchOperations[0].matchParams = toWebQueryParams(options); 347 batchOperations[0].matchParams = toWebQueryParams(options);
346 348
347 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 349 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver:: create(scriptState);
348 const ScriptPromise promise = resolver->promise(); 350 const ScriptPromise promise = resolver->promise();
349 m_webCache->dispatchBatch(new CacheDeleteCallback(resolver), batchOperations ); 351 m_webCache->dispatchBatch(new CacheDeleteCallback(resolver), batchOperations );
350 return promise; 352 return promise;
351 } 353 }
352 354
353 ScriptPromise Cache::putImpl(ScriptState* scriptState, Request* request, Respons e* response) 355 ScriptPromise Cache::putImpl(ScriptState* scriptState, Request* request, Respons e* response)
354 { 356 {
355 KURL url(KURL(), request->url()); 357 KURL url(KURL(), request->url());
356 if (!url.protocolIsInHTTPFamily()) 358 if (!url.protocolIsInHTTPFamily())
357 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Request scheme '" + url.protocol() + "' is unsuppor ted")); 359 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Request scheme '" + url.protocol() + "' is unsuppor ted"));
358 if (request->method() != "GET") 360 if (request->method() != "GET")
359 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Request method '" + request->method() + "' is unsup ported")); 361 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Request method '" + request->method() + "' is unsup ported"));
360 if (request->hasBody() && request->bodyUsed()) 362 if (request->hasBody() && request->bodyUsed())
361 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Request body is already used")); 363 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Request body is already used"));
362 if (response->hasBody() && response->bodyUsed()) 364 if (response->hasBody() && response->bodyUsed())
363 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Response body is already used")); 365 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Response body is already used"));
364 if (response->internalBuffer() && response->streamAccessed()) 366 if (response->internalBuffer() && response->streamAccessed())
365 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Storing the Response which .body is accessed is not supported.")); 367 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Storing the Response which .body is accessed is not supported."));
366 368
367 if (request->hasBody()) 369 if (request->hasBody())
368 request->setBodyUsed(); 370 request->setBodyUsed();
369 if (response->hasBody()) 371 if (response->hasBody())
370 response->setBodyUsed(); 372 response->setBodyUsed();
371 373
372 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 374 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver:: create(scriptState);
373 const ScriptPromise promise = resolver->promise(); 375 const ScriptPromise promise = resolver->promise();
374 if (response->internalBuffer()) { 376 if (response->internalBuffer()) {
375 // If the response body type is stream, read the all data and create the 377 // If the response body type is stream, read the all data and create the
376 // blob handle and dispatch the put batch asynchronously. 378 // blob handle and dispatch the put batch asynchronously.
377 response->internalBuffer()->readAllAndCreateBlobHandle(response->interna lContentTypeForBuffer(), new AsyncPutBatch(resolver, this, request, response)); 379 response->internalBuffer()->readAllAndCreateBlobHandle(response->interna lContentTypeForBuffer(), new AsyncPutBatch(resolver, this, request, response));
378 return promise; 380 return promise;
379 } 381 }
380 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1)); 382 WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1));
381 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypePut; 383 batchOperations[0].operationType = WebServiceWorkerCache::OperationTypePut;
382 request->populateWebServiceWorkerRequest(batchOperations[0].request); 384 request->populateWebServiceWorkerRequest(batchOperations[0].request);
383 response->populateWebServiceWorkerResponse(batchOperations[0].response); 385 response->populateWebServiceWorkerResponse(batchOperations[0].response);
384 386
385 m_webCache->dispatchBatch(new CacheAddOrPutCallbacks(resolver), batchOperati ons); 387 m_webCache->dispatchBatch(new CacheAddOrPutCallbacks(resolver), batchOperati ons);
386 return promise; 388 return promise;
387 } 389 }
388 390
389 ScriptPromise Cache::keysImpl(ScriptState* scriptState) 391 ScriptPromise Cache::keysImpl(ScriptState* scriptState)
390 { 392 {
391 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 393 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver:: create(scriptState);
392 const ScriptPromise promise = resolver->promise(); 394 const ScriptPromise promise = resolver->promise();
393 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, WebSer viceWorkerCache::QueryParams()); 395 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, WebSer viceWorkerCache::QueryParams());
394 return promise; 396 return promise;
395 } 397 }
396 398
397 ScriptPromise Cache::keysImpl(ScriptState* scriptState, const Request* request, const CacheQueryOptions& options) 399 ScriptPromise Cache::keysImpl(ScriptState* scriptState, const Request* request, const CacheQueryOptions& options)
398 { 400 {
399 WebServiceWorkerRequest webRequest; 401 WebServiceWorkerRequest webRequest;
400 request->populateWebServiceWorkerRequest(webRequest); 402 request->populateWebServiceWorkerRequest(webRequest);
401 403
402 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 404 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver:: create(scriptState);
403 const ScriptPromise promise = resolver->promise(); 405 const ScriptPromise promise = resolver->promise();
404 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ ueryParams(options)); 406 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ ueryParams(options));
405 return promise; 407 return promise;
406 } 408 }
407 409
408 WebServiceWorkerCache* Cache::webCache() const 410 WebServiceWorkerCache* Cache::webCache() const
409 { 411 {
410 return m_webCache.get(); 412 return m_webCache.get();
411 } 413 }
412 414
413 } // namespace blink 415 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698