 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| OLD | NEW | 
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "config.h" | 5 #include "config.h" | 
| 6 #include "modules/fetch/FetchResponseData.h" | 6 #include "modules/fetch/FetchResponseData.h" | 
| 7 | 7 | 
| 8 #include "core/dom/DOMArrayBuffer.h" | 8 #include "core/dom/DOMArrayBuffer.h" | 
| 9 #include "core/fetch/CrossOriginAccessControl.h" | 9 #include "core/fetch/CrossOriginAccessControl.h" | 
| 10 #include "modules/fetch/BodyStreamBuffer.h" | 10 #include "modules/fetch/BodyStreamBuffer.h" | 
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 160 case CORSType: | 160 case CORSType: | 
| 161 ASSERT(m_internalResponse); | 161 ASSERT(m_internalResponse); | 
| 162 ASSERT(m_buffer == m_internalResponse->m_buffer); | 162 ASSERT(m_buffer == m_internalResponse->m_buffer); | 
| 163 ASSERT(m_internalResponse->m_type == DefaultType); | 163 ASSERT(m_internalResponse->m_type == DefaultType); | 
| 164 newResponse->m_internalResponse = m_internalResponse->clone(executionCon text); | 164 newResponse->m_internalResponse = m_internalResponse->clone(executionCon text); | 
| 165 m_buffer = m_internalResponse->m_buffer; | 165 m_buffer = m_internalResponse->m_buffer; | 
| 166 newResponse->m_buffer = newResponse->m_internalResponse->m_buffer; | 166 newResponse->m_buffer = newResponse->m_internalResponse->m_buffer; | 
| 167 break; | 167 break; | 
| 168 case DefaultType: { | 168 case DefaultType: { | 
| 169 ASSERT(!m_internalResponse); | 169 ASSERT(!m_internalResponse); | 
| 170 if (!m_buffer) | 170 if (m_buffer->hasBody()) { | 
| 171 return newResponse; | 171 OwnPtr<WebDataConsumerHandle> handle1, handle2; | 
| 172 | 172 // TODO(yhirano): unlock the buffer appropriately. | 
| 173 OwnPtr<WebDataConsumerHandle> handle1; | 173 DataConsumerTee::create(executionContext, m_buffer->lock(executionCo ntext), &handle1, &handle2); | 
| 174 OwnPtr<WebDataConsumerHandle> handle2; | 174 m_buffer = new BodyStreamBuffer(createFetchDataConsumerHandleFromWeb Handle(handle1.release())); | 
| 175 DataConsumerTee::create(executionContext, m_buffer->releaseHandle(), &ha ndle1, &handle2); | 175 newResponse->m_buffer = new BodyStreamBuffer(createFetchDataConsumer HandleFromWebHandle(handle2.release())); | 
| 176 m_buffer = BodyStreamBuffer::create(createFetchDataConsumerHandleFromWeb Handle(handle1.release())); | 176 } else { | 
| 177 newResponse->m_buffer = BodyStreamBuffer::create(createFetchDataConsumer HandleFromWebHandle(handle2.release())); | 177 m_buffer = new BodyStreamBuffer; | 
| 178 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.
 | |
| 179 } | |
| 178 break; | 180 break; | 
| 179 } | 181 } | 
| 180 case ErrorType: | 182 case ErrorType: | 
| 181 ASSERT(!m_internalResponse); | 183 ASSERT(!m_internalResponse); | 
| 182 ASSERT(!m_buffer); | 184 ASSERT(!m_buffer->hasBody()); | 
| 183 break; | 185 break; | 
| 184 case OpaqueType: | 186 case OpaqueType: | 
| 185 ASSERT(m_internalResponse); | 187 ASSERT(m_internalResponse); | 
| 186 ASSERT(!m_buffer); | 188 ASSERT(!m_buffer->hasBody()); | 
| 187 ASSERT(m_internalResponse->m_type == DefaultType); | 189 ASSERT(m_internalResponse->m_type == DefaultType); | 
| 188 newResponse->m_internalResponse = m_internalResponse->clone(executionCon text); | 190 newResponse->m_internalResponse = m_internalResponse->clone(executionCon text); | 
| 189 break; | 191 break; | 
| 190 } | 192 } | 
| 191 return newResponse; | 193 return newResponse; | 
| 192 } | 194 } | 
| 193 | 195 | 
| 194 void FetchResponseData::populateWebServiceWorkerResponse(WebServiceWorkerRespons e& response) | 196 void FetchResponseData::populateWebServiceWorkerResponse(WebServiceWorkerRespons e& response) | 
| 195 { | 197 { | 
| 196 if (m_internalResponse) { | 198 if (m_internalResponse) { | 
| (...skipping 10 matching lines...) Expand all Loading... | |
| 207 const FetchHeaderList::Header* header = headerList()->list()[i].get(); | 209 const FetchHeaderList::Header* header = headerList()->list()[i].get(); | 
| 208 response.appendHeader(header->first, header->second); | 210 response.appendHeader(header->first, header->second); | 
| 209 } | 211 } | 
| 210 } | 212 } | 
| 211 | 213 | 
| 212 FetchResponseData::FetchResponseData(Type type, unsigned short status, AtomicStr ing statusMessage) | 214 FetchResponseData::FetchResponseData(Type type, unsigned short status, AtomicStr ing statusMessage) | 
| 213 : m_type(type) | 215 : m_type(type) | 
| 214 , m_status(status) | 216 , m_status(status) | 
| 215 , m_statusMessage(statusMessage) | 217 , m_statusMessage(statusMessage) | 
| 216 , m_headerList(FetchHeaderList::create()) | 218 , m_headerList(FetchHeaderList::create()) | 
| 219 , m_buffer(new BodyStreamBuffer) | |
| 217 { | 220 { | 
| 218 } | 221 } | 
| 219 | 222 | 
| 220 void FetchResponseData::replaceBodyStreamBuffer(BodyStreamBuffer* buffer) | 223 void FetchResponseData::replaceBodyStreamBuffer(BodyStreamBuffer* buffer) | 
| 221 { | 224 { | 
| 222 if (m_type == BasicType || m_type == CORSType) { | 225 if (m_type == BasicType || m_type == CORSType) { | 
| 223 ASSERT(m_internalResponse); | 226 ASSERT(m_internalResponse); | 
| 224 m_internalResponse->m_buffer = buffer; | 227 m_internalResponse->m_buffer = buffer; | 
| 225 m_buffer = buffer; | 228 m_buffer = buffer; | 
| 226 } else if (m_type == DefaultType) { | 229 } else if (m_type == DefaultType) { | 
| 227 ASSERT(!m_internalResponse); | 230 ASSERT(!m_internalResponse); | 
| 228 m_buffer = buffer; | 231 m_buffer = buffer; | 
| 229 } | 232 } | 
| 230 } | 233 } | 
| 231 | 234 | 
| 232 DEFINE_TRACE(FetchResponseData) | 235 DEFINE_TRACE(FetchResponseData) | 
| 233 { | 236 { | 
| 234 visitor->trace(m_headerList); | 237 visitor->trace(m_headerList); | 
| 235 visitor->trace(m_internalResponse); | 238 visitor->trace(m_internalResponse); | 
| 236 visitor->trace(m_buffer); | 239 visitor->trace(m_buffer); | 
| 237 } | 240 } | 
| 238 | 241 | 
| 239 } // namespace blink | 242 } // namespace blink | 
| OLD | NEW |