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

Side by Side Diff: third_party/WebKit/Source/modules/cachestorage/Cache.cpp

Issue 1899873006: Make Response::body return v8-extra based stream behind flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@notify-locked-released
Patch Set: Created 4 years, 7 months 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 "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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
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->getExecutionContext() || m_resolver->getExecutionContex t()->activeDOMObjectsAreStopped()) 52 if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContex t()->activeDOMObjectsAreStopped())
53 return; 53 return;
54 m_resolver->resolve(Response::create(m_resolver->getScriptState()->getEx ecutionContext(), webResponse)); 54 m_resolver->resolve(Response::create(m_resolver->getScriptState(), webRe sponse));
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->getExecutionContext() || m_resolver->getExecutionContex t()->activeDOMObjectsAreStopped()) 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
(...skipping 11 matching lines...) Expand all
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->getExecutionContext() || m_resolver->getExecutionContex t()->activeDOMObjectsAreStopped()) 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->getScriptState()->getE xecutionContext(), webResponses[i])); 86 responses.append(Response::create(m_resolver->getScriptState(), webR esponses[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->getExecutionContext() || m_resolver->getExecutionContex t()->activeDOMObjectsAreStopped()) 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();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
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->getExecutionContext() || m_resolver->getExecutionContex t()->activeDOMObjectsAreStopped()) 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->getScriptState()->getExe cutionContext(), webRequests[i])); 146 requests.append(Request::create(m_resolver->getScriptState(), webReq uests[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->getExecutionContext() || m_resolver->getExecutionContex t()->activeDOMObjectsAreStopped()) 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();
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
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->getExecutionContext(), loader, new BlobHandleCallbackForPut(i, barrierCallback, requests[i], responses[i])); 587 buffer->startLoading(loader, new BlobHandleCallbackForPut(i, barrier Callback, 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
(...skipping 19 matching lines...) Expand all
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698