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

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
« no previous file with comments | « Source/modules/fetch/FetchRequestData.cpp ('k') | Source/modules/fetch/Request.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/fetch/FetchResponseData.cpp
diff --git a/Source/modules/fetch/FetchResponseData.cpp b/Source/modules/fetch/FetchResponseData.cpp
index a5054184f1e2e22928bd57fb541f1434ddc80f4b..4c5cac22455a9c501c5f6d0a8a9c431e2fadadfe 100644
--- a/Source/modules/fetch/FetchResponseData.cpp
+++ b/Source/modules/fetch/FetchResponseData.cpp
@@ -167,23 +167,24 @@ 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;
+ }
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 +215,7 @@ FetchResponseData::FetchResponseData(Type type, unsigned short status, AtomicStr
, m_status(status)
, m_statusMessage(statusMessage)
, m_headerList(FetchHeaderList::create())
+ , m_buffer(new BodyStreamBuffer)
{
}
« no previous file with comments | « Source/modules/fetch/FetchRequestData.cpp ('k') | Source/modules/fetch/Request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698