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

Unified Diff: third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp

Issue 1908213004: [Streams] Remove SetReadableStreamDisturbed from ReadableStream.js (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
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 24361c566fc4b26d0537418886fbc72a535698c3..7e6c231e12edb0459cdb8883d5eb331233aff95d 100644
--- a/third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp
+++ b/third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp
@@ -123,8 +123,7 @@ PassRefPtr<BlobDataHandle> BodyStreamBuffer::drainAsBlobDataHandle(FetchDataCons
RefPtr<BlobDataHandle> blobDataHandle = m_reader->drainAsBlobDataHandle(policy);
if (blobDataHandle) {
- lockAndDisturb();
- close();
+ closeAndLockAndDisturb();
return blobDataHandle.release();
}
return nullptr;
@@ -139,8 +138,7 @@ PassRefPtr<EncodedFormData> BodyStreamBuffer::drainAsFormData()
RefPtr<EncodedFormData> formData = m_reader->drainAsFormData();
if (formData) {
- lockAndDisturb();
- close();
+ closeAndLockAndDisturb();
return formData.release();
}
return nullptr;
@@ -150,16 +148,22 @@ PassOwnPtr<FetchDataConsumerHandle> BodyStreamBuffer::releaseHandle()
{
ASSERT(!isStreamLocked());
ASSERT(!isStreamDisturbed());
- lockAndDisturb();
+ // We need to call these before calling closeAndLockAndDisturb.
+ const bool isClosed = isStreamClosed();
+ const bool isErrored = isStreamErrored();
+ OwnPtr<FetchDataConsumerHandle> handle = m_handle.release();
+
+ closeAndLockAndDisturb();
- if (isStreamClosed())
+ if (isClosed) {
+ // Note that the stream cannot be "draining", because it doesn't have
+ // the internal buffer.
return createFetchDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle());
- if (isStreamErrored())
+ }
+ if (isErrored)
return createFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle());
- ASSERT(m_handle);
- OwnPtr<FetchDataConsumerHandle> handle = m_handle.release();
- close();
+ ASSERT(handle);
return handle.release();
}
@@ -291,23 +295,19 @@ bool BodyStreamBuffer::isStreamDisturbed()
return m_stream->isDisturbed();
}
-void BodyStreamBuffer::setDisturbed()
+void BodyStreamBuffer::closeAndLockAndDisturb()
{
- if (RuntimeEnabledFeatures::responseBodyWithV8ExtraStreamEnabled()) {
- ScriptState::Scope scope(m_scriptState.get());
- ReadableStreamOperations::setDisturbed(m_scriptState.get(), stream());
- } else {
- m_stream->setIsDisturbed();
+ if (isStreamReadable()) {
+ // Note that the stream cannot be "draining", because it doesn't have
+ // the internal buffer.
+ close();
}
-}
-void BodyStreamBuffer::lockAndDisturb()
-{
if (RuntimeEnabledFeatures::responseBodyWithV8ExtraStreamEnabled()) {
ScriptState::Scope scope(m_scriptState.get());
NonThrowableExceptionState exceptionState;
- ReadableStreamOperations::getReader(m_scriptState.get(), stream(), exceptionState);
- ReadableStreamOperations::setDisturbed(m_scriptState.get(), stream());
+ ScriptValue reader = ReadableStreamOperations::getReader(m_scriptState.get(), stream(), exceptionState);
+ ReadableStreamOperations::read(m_scriptState.get(), reader);
} else {
NonThrowableExceptionState exceptionState;
m_stream->getBytesReader(m_scriptState->getExecutionContext(), exceptionState);

Powered by Google App Engine
This is Rietveld 408576698