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

Side by Side Diff: Source/modules/fetch/FetchDataLoader.cpp

Issue 1217943007: Call Client methods synchronously in FetchDataLoader if the first read is Done or error (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix unittests. Created 5 years, 5 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
« no previous file with comments | « Source/modules/fetch/FetchDataLoader.h ('k') | Source/modules/fetch/FetchDataLoaderTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/fetch/FetchDataLoader.h" 6 #include "modules/fetch/FetchDataLoader.h"
7 7
8 #include "wtf/ArrayBufferBuilder.h" 8 #include "wtf/ArrayBufferBuilder.h"
9 #include "wtf/text/WTFString.h" 9 #include "wtf/text/WTFString.h"
10 10
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 } else { 45 } else {
46 m_client->didFetchDataLoadedBlobHandle(blobHandle); 46 m_client->didFetchDataLoadedBlobHandle(blobHandle);
47 } 47 }
48 m_client.clear(); 48 m_client.clear();
49 return; 49 return;
50 } 50 }
51 51
52 // We read data from |m_reader| and create a new blob. 52 // We read data from |m_reader| and create a new blob.
53 m_blobData = BlobData::create(); 53 m_blobData = BlobData::create();
54 m_blobData->setContentType(m_mimeType); 54 m_blobData->setContentType(m_mimeType);
55 didGetReadable();
55 } 56 }
56 57
57 void didGetReadable() override 58 void didGetReadable() override
58 { 59 {
59 ASSERT(m_client); 60 ASSERT(m_client);
60 ASSERT(m_reader); 61 ASSERT(m_reader);
61 62
62 while (true) { 63 while (true) {
63 const void* buffer; 64 const void* buffer;
64 size_t available; 65 size_t available;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 130
130 protected: 131 protected:
131 void start(FetchDataConsumerHandle* handle, FetchDataLoader::Client* client) override 132 void start(FetchDataConsumerHandle* handle, FetchDataLoader::Client* client) override
132 { 133 {
133 ASSERT(!m_client); 134 ASSERT(!m_client);
134 ASSERT(!m_rawData); 135 ASSERT(!m_rawData);
135 ASSERT(!m_reader); 136 ASSERT(!m_reader);
136 m_client = client; 137 m_client = client;
137 m_rawData = adoptPtr(new ArrayBufferBuilder()); 138 m_rawData = adoptPtr(new ArrayBufferBuilder());
138 m_reader = handle->obtainReader(this); 139 m_reader = handle->obtainReader(this);
140 didGetReadable();
139 } 141 }
140 142
141 void didGetReadable() override 143 void didGetReadable() override
142 { 144 {
143 ASSERT(m_client); 145 ASSERT(m_client);
144 ASSERT(m_rawData); 146 ASSERT(m_rawData);
145 ASSERT(m_reader); 147 ASSERT(m_reader);
146 148
147 while (true) { 149 while (true) {
148 const void* buffer; 150 const void* buffer;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 visitor->trace(m_outStream); 229 visitor->trace(m_outStream);
228 } 230 }
229 231
230 protected: 232 protected:
231 void start(FetchDataConsumerHandle* handle, FetchDataLoader::Client* client) override 233 void start(FetchDataConsumerHandle* handle, FetchDataLoader::Client* client) override
232 { 234 {
233 ASSERT(!m_client); 235 ASSERT(!m_client);
234 ASSERT(!m_reader); 236 ASSERT(!m_reader);
235 m_client = client; 237 m_client = client;
236 m_reader = handle->obtainReader(this); 238 m_reader = handle->obtainReader(this);
239 didGetReadable();
237 } 240 }
238 241
239 void didGetReadable() override 242 void didGetReadable() override
240 { 243 {
241 ASSERT(m_client); 244 ASSERT(m_client);
242 ASSERT(m_reader); 245 ASSERT(m_reader);
243 246
244 bool needToFlush = false; 247 bool needToFlush = false;
245 while (true) { 248 while (true) {
246 const void* buffer; 249 const void* buffer;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 { 323 {
321 return new FetchDataLoaderAsArrayBufferOrString(FetchDataLoaderAsArrayBuffer OrString::LoadAsString); 324 return new FetchDataLoaderAsArrayBufferOrString(FetchDataLoaderAsArrayBuffer OrString::LoadAsString);
322 } 325 }
323 326
324 FetchDataLoader* FetchDataLoader::createLoaderAsStream(Stream* outStream) 327 FetchDataLoader* FetchDataLoader::createLoaderAsStream(Stream* outStream)
325 { 328 {
326 return new FetchDataLoaderAsStream(outStream); 329 return new FetchDataLoaderAsStream(outStream);
327 } 330 }
328 331
329 } // namespace blink 332 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/fetch/FetchDataLoader.h ('k') | Source/modules/fetch/FetchDataLoaderTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698