 Chromium Code Reviews
 Chromium Code Reviews Issue 1233573002:
  [Fetch API] Remove DrainingBuffer.  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk
    
  
    Issue 1233573002:
  [Fetch API] Remove DrainingBuffer.  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk| 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) | 
| { | 
| } |