Index: third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp |
diff --git a/third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp b/third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp |
index 7e2117973262604b435f2e36a1b94f344ce71c21..5087507c062a1a1fd3a470e002021c751aece7de 100644 |
--- a/third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp |
+++ b/third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp |
@@ -84,13 +84,14 @@ BodyStreamBuffer::BodyStreamBuffer(PassOwnPtr<FetchDataConsumerHandle> handle) |
PassRefPtr<BlobDataHandle> BodyStreamBuffer::drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::BlobSizePolicy policy) |
{ |
- ASSERT(!stream()->isLocked()); |
- m_stream->setIsDisturbed(); |
- if (ReadableStream::Closed == m_stream->stateInternal() || ReadableStream::Errored == m_stream->stateInternal()) |
+ ASSERT(!isStreamLocked()); |
+ ASSERT(!isStreamDisturbed()); |
+ if (isStreamClosed() || isStreamErrored()) |
return nullptr; |
RefPtr<BlobDataHandle> blobDataHandle = m_reader->drainAsBlobDataHandle(policy); |
if (blobDataHandle) { |
+ m_stream->setIsDisturbed(); |
close(); |
return blobDataHandle.release(); |
} |
@@ -99,13 +100,14 @@ PassRefPtr<BlobDataHandle> BodyStreamBuffer::drainAsBlobDataHandle(FetchDataCons |
PassRefPtr<EncodedFormData> BodyStreamBuffer::drainAsFormData() |
{ |
- ASSERT(!stream()->isLocked()); |
- m_stream->setIsDisturbed(); |
- if (ReadableStream::Closed == m_stream->stateInternal() || ReadableStream::Errored == m_stream->stateInternal()) |
+ ASSERT(!isStreamLocked()); |
+ ASSERT(!isStreamDisturbed()); |
+ if (isStreamClosed() || isStreamErrored()) |
return nullptr; |
RefPtr<EncodedFormData> formData = m_reader->drainAsFormData(); |
if (formData) { |
+ m_stream->setIsDisturbed(); |
close(); |
return formData.release(); |
} |
@@ -114,15 +116,16 @@ PassRefPtr<EncodedFormData> BodyStreamBuffer::drainAsFormData() |
PassOwnPtr<FetchDataConsumerHandle> BodyStreamBuffer::releaseHandle(ExecutionContext* executionContext) |
{ |
- ASSERT(!stream()->isLocked()); |
+ ASSERT(!isStreamLocked()); |
+ ASSERT(!isStreamDisturbed()); |
m_reader = nullptr; |
m_stream->setIsDisturbed(); |
TrackExceptionState exceptionState; |
m_stream->getBytesReader(executionContext, exceptionState); |
- if (ReadableStream::Closed == m_stream->stateInternal()) |
+ if (isStreamClosed()) |
return createFetchDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle()); |
- if (ReadableStream::Errored == m_stream->stateInternal()) |
+ if (isStreamErrored()) |
return createFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle()); |
ASSERT(m_handle); |
@@ -141,7 +144,7 @@ void BodyStreamBuffer::startLoading(ExecutionContext* executionContext, FetchDat |
bool BodyStreamBuffer::hasPendingActivity() const |
{ |
- return m_loader || (m_stream->isLocked() && m_stream->stateInternal() == ReadableStream::Readable); |
+ return m_loader || (isStreamLocked() && isStreamReadable()); |
} |
void BodyStreamBuffer::stop() |
@@ -190,6 +193,31 @@ void BodyStreamBuffer::didGetReadable() |
processData(); |
} |
+bool BodyStreamBuffer::isStreamReadable() const |
+{ |
+ return m_stream->stateInternal() == ReadableStream::Readable; |
+} |
+ |
+bool BodyStreamBuffer::isStreamClosed() const |
+{ |
+ return m_stream->stateInternal() == ReadableStream::Closed; |
+} |
+ |
+bool BodyStreamBuffer::isStreamErrored() const |
+{ |
+ return m_stream->stateInternal() == ReadableStream::Errored; |
+} |
+ |
+bool BodyStreamBuffer::isStreamLocked() const |
+{ |
+ return m_stream->isLocked(); |
+} |
+ |
+bool BodyStreamBuffer::isStreamDisturbed() const |
+{ |
+ return m_stream->isDisturbed(); |
+} |
+ |
void BodyStreamBuffer::close() |
{ |
m_reader = nullptr; |