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

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

Issue 1899163002: BodyStreamBuffer's drainAs* function should lock stream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@body-stream-buffer-test-refactoring
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 0880c42a4e4a2bcf7277af75a01deae7be8da739..6a4c58ef396687d09d3aa7c1dbe51d797ec5c0b4 100644
--- a/third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp
+++ b/third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp
@@ -82,30 +82,36 @@ BodyStreamBuffer::BodyStreamBuffer(PassOwnPtr<FetchDataConsumerHandle> handle)
m_stream->didSourceStart();
}
-PassRefPtr<BlobDataHandle> BodyStreamBuffer::drainAsBlobDataHandle(FetchDataConsumerHandle::Reader::BlobSizePolicy policy)
+PassRefPtr<BlobDataHandle> BodyStreamBuffer::drainAsBlobDataHandle(ExecutionContext* executionContext, FetchDataConsumerHandle::Reader::BlobSizePolicy policy)
{
ASSERT(!isStreamLocked());
- m_stream->setIsDisturbed();
+ ASSERT(!isStreamDisturbed());
if (isStreamClosed() || isStreamErrored())
return nullptr;
RefPtr<BlobDataHandle> blobDataHandle = m_reader->drainAsBlobDataHandle(policy);
if (blobDataHandle) {
+ NonThrowableExceptionState exceptionState;
+ m_stream->getBytesReader(executionContext, exceptionState);
+ m_stream->setIsDisturbed();
close();
return blobDataHandle.release();
}
return nullptr;
}
-PassRefPtr<EncodedFormData> BodyStreamBuffer::drainAsFormData()
+PassRefPtr<EncodedFormData> BodyStreamBuffer::drainAsFormData(ExecutionContext* executionContext)
{
ASSERT(!isStreamLocked());
- m_stream->setIsDisturbed();
+ ASSERT(!isStreamDisturbed());
if (isStreamClosed() || isStreamErrored())
return nullptr;
RefPtr<EncodedFormData> formData = m_reader->drainAsFormData();
if (formData) {
+ NonThrowableExceptionState exceptionState;
+ m_stream->getBytesReader(executionContext, exceptionState);
+ m_stream->setIsDisturbed();
close();
return formData.release();
}
@@ -115,9 +121,10 @@ PassRefPtr<EncodedFormData> BodyStreamBuffer::drainAsFormData()
PassOwnPtr<FetchDataConsumerHandle> BodyStreamBuffer::releaseHandle(ExecutionContext* executionContext)
{
ASSERT(!isStreamLocked());
+ ASSERT(!isStreamDisturbed());
m_reader = nullptr;
m_stream->setIsDisturbed();
- TrackExceptionState exceptionState;
+ NonThrowableExceptionState exceptionState;
m_stream->getBytesReader(executionContext, exceptionState);
if (isStreamClosed())

Powered by Google App Engine
This is Rietveld 408576698