Index: third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp |
diff --git a/third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp b/third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp |
index 1c2e04da558ed62ec689bb10c226fd58dd62e337..89eaa7eb04aeb5131f5c00639f7f54e2a50e6648 100644 |
--- a/third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp |
+++ b/third_party/WebKit/Source/modules/fetch/FetchDataLoader.cpp |
@@ -60,15 +60,18 @@ public: |
while (true) { |
const char* buffer; |
size_t available; |
- switch (m_consumer->beginRead(&buffer, &available)) { |
- case BytesConsumer::Result::Ok: |
+ auto result = m_consumer->beginRead(&buffer, &available); |
+ if (result == BytesConsumer::Result::ShouldWait) |
+ return; |
+ if (result == BytesConsumer::Result::Ok) { |
m_blobData->appendBytes(buffer, available); |
- if (m_consumer->endRead(available) != BytesConsumer::Result::Ok) { |
- m_client->didFetchDataLoadFailed(); |
- return; |
- } |
+ result = m_consumer->endRead(available); |
+ } |
+ switch (result) { |
+ case BytesConsumer::Result::Ok: |
break; |
case BytesConsumer::Result::ShouldWait: |
+ NOTREACHED(); |
return; |
case BytesConsumer::Result::Done: { |
auto size = m_blobData->length(); |
@@ -123,8 +126,10 @@ public: |
while (true) { |
const char* buffer; |
size_t available; |
- switch (m_consumer->beginRead(&buffer, &available)) { |
- case BytesConsumer::Result::Ok: |
+ auto result = m_consumer->beginRead(&buffer, &available); |
+ if (result == BytesConsumer::Result::ShouldWait) |
+ return; |
+ if (result == BytesConsumer::Result::Ok) { |
if (available > 0) { |
unsigned bytesAppended = m_rawData->append(buffer, available); |
if (!bytesAppended) { |
@@ -136,12 +141,13 @@ public: |
} |
DCHECK_EQ(bytesAppended, available); |
} |
- if (m_consumer->endRead(available) != BytesConsumer::Result::Ok) { |
- m_client->didFetchDataLoadFailed(); |
- return; |
- } |
+ result = m_consumer->endRead(available); |
+ } |
+ switch (result) { |
+ case BytesConsumer::Result::Ok: |
break; |
case BytesConsumer::Result::ShouldWait: |
+ NOTREACHED(); |
return; |
case BytesConsumer::Result::Done: |
m_client->didFetchDataLoadedArrayBuffer(DOMArrayBuffer::create(m_rawData->toArrayBuffer())); |
@@ -188,16 +194,19 @@ public: |
while (true) { |
const char* buffer; |
size_t available; |
- switch (m_consumer->beginRead(&buffer, &available)) { |
- case BytesConsumer::Result::Ok: |
+ auto result = m_consumer->beginRead(&buffer, &available); |
+ if (result == BytesConsumer::Result::ShouldWait) |
+ return; |
+ if (result == BytesConsumer::Result::Ok) { |
if (available > 0) |
m_builder.append(m_decoder->decode(buffer, available)); |
- if (m_consumer->endRead(available) != BytesConsumer::Result::Ok) { |
- m_client->didFetchDataLoadFailed(); |
- return; |
- } |
+ result = m_consumer->endRead(available); |
+ } |
+ switch (result) { |
+ case BytesConsumer::Result::Ok: |
break; |
case BytesConsumer::Result::ShouldWait: |
+ NOTREACHED(); |
return; |
case BytesConsumer::Result::Done: |
m_builder.append(m_decoder->flush()); |
@@ -255,19 +264,22 @@ public: |
while (true) { |
const char* buffer; |
size_t available; |
- switch (m_consumer->beginRead(&buffer, &available)) { |
- case BytesConsumer::Result::Ok: |
+ auto result = m_consumer->beginRead(&buffer, &available); |
+ if (result == BytesConsumer::Result::ShouldWait) { |
+ if (needToFlush) |
+ m_outStream->flush(); |
+ return; |
+ } |
+ if (result == BytesConsumer::Result::Ok) { |
m_outStream->addData(buffer, available); |
- if (m_consumer->endRead(available) != BytesConsumer::Result::Ok) { |
- m_outStream->abort(); |
- m_client->didFetchDataLoadFailed(); |
- return; |
- } |
needToFlush = true; |
+ result = m_consumer->endRead(available); |
+ } |
+ switch (result) { |
+ case BytesConsumer::Result::Ok: |
break; |
case BytesConsumer::Result::ShouldWait: |
- if (needToFlush) |
- m_outStream->flush(); |
+ NOTREACHED(); |
return; |
case BytesConsumer::Result::Done: |
if (needToFlush) |