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

Unified Diff: Source/modules/fetch/FetchResponseData.cpp

Issue 1233573002: [Fetch API] Remove DrainingBuffer. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: Source/modules/fetch/FetchResponseData.cpp
diff --git a/Source/modules/fetch/FetchResponseData.cpp b/Source/modules/fetch/FetchResponseData.cpp
index a5054184f1e2e22928bd57fb541f1434ddc80f4b..59a0fa1d9b9f1cff8d8465f96626c8a66d0201e5 100644
--- a/Source/modules/fetch/FetchResponseData.cpp
+++ b/Source/modules/fetch/FetchResponseData.cpp
@@ -167,23 +167,25 @@ FetchResponseData* FetchResponseData::clone(ExecutionContext* executionContext)
break;
case DefaultType: {
ASSERT(!m_internalResponse);
- if (!m_buffer)
- return newResponse;
-
- OwnPtr<WebDataConsumerHandle> handle1;
- OwnPtr<WebDataConsumerHandle> handle2;
- DataConsumerTee::create(executionContext, m_buffer->releaseHandle(), &handle1, &handle2);
- m_buffer = BodyStreamBuffer::create(createFetchDataConsumerHandleFromWebHandle(handle1.release()));
- newResponse->m_buffer = BodyStreamBuffer::create(createFetchDataConsumerHandleFromWebHandle(handle2.release()));
+ if (m_buffer->hasBody()) {
+ OwnPtr<WebDataConsumerHandle> handle1, handle2;
+ // TODO(yhirano): unlock the buffer appropriately.
+ DataConsumerTee::create(executionContext, m_buffer->lock(executionContext), &handle1, &handle2);
+ m_buffer = new BodyStreamBuffer(createFetchDataConsumerHandleFromWebHandle(handle1.release()));
+ newResponse->m_buffer = new BodyStreamBuffer(createFetchDataConsumerHandleFromWebHandle(handle2.release()));
+ } else {
+ m_buffer = new BodyStreamBuffer;
+ newResponse->m_buffer = new BodyStreamBuffer;
hiroshige 2015/07/24 12:47:03 Do we need these two lines? (I'm not sure about th
yhirano 2015/07/29 08:45:02 Done.
+ }
break;
}
case ErrorType:
ASSERT(!m_internalResponse);
- ASSERT(!m_buffer);
+ ASSERT(!m_buffer->hasBody());
break;
case OpaqueType:
ASSERT(m_internalResponse);
- ASSERT(!m_buffer);
+ ASSERT(!m_buffer->hasBody());
ASSERT(m_internalResponse->m_type == DefaultType);
newResponse->m_internalResponse = m_internalResponse->clone(executionContext);
break;
@@ -214,6 +216,7 @@ FetchResponseData::FetchResponseData(Type type, unsigned short status, AtomicStr
, m_status(status)
, m_statusMessage(statusMessage)
, m_headerList(FetchHeaderList::create())
+ , m_buffer(new BodyStreamBuffer)
{
}

Powered by Google App Engine
This is Rietveld 408576698