| 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 "modules/fetch/FetchResponseData.h" | 5 #include "modules/fetch/FetchResponseData.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/ScriptState.h" | |
| 8 #include "core/dom/DOMArrayBuffer.h" | 7 #include "core/dom/DOMArrayBuffer.h" |
| 9 #include "core/fetch/CrossOriginAccessControl.h" | 8 #include "core/fetch/CrossOriginAccessControl.h" |
| 10 #include "core/fetch/FetchUtils.h" | 9 #include "core/fetch/FetchUtils.h" |
| 11 #include "modules/fetch/BodyStreamBuffer.h" | 10 #include "modules/fetch/BodyStreamBuffer.h" |
| 12 #include "modules/fetch/DataConsumerHandleUtil.h" | 11 #include "modules/fetch/DataConsumerHandleUtil.h" |
| 13 #include "modules/fetch/DataConsumerTee.h" | 12 #include "modules/fetch/DataConsumerTee.h" |
| 14 #include "modules/fetch/FetchHeaderList.h" | 13 #include "modules/fetch/FetchHeaderList.h" |
| 15 #include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h" | 14 #include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h" |
| 16 | 15 |
| 17 namespace blink { | 16 namespace blink { |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 } | 153 } |
| 155 | 154 |
| 156 String FetchResponseData::internalMIMEType() const | 155 String FetchResponseData::internalMIMEType() const |
| 157 { | 156 { |
| 158 if (m_internalResponse) { | 157 if (m_internalResponse) { |
| 159 return m_internalResponse->mimeType(); | 158 return m_internalResponse->mimeType(); |
| 160 } | 159 } |
| 161 return m_mimeType; | 160 return m_mimeType; |
| 162 } | 161 } |
| 163 | 162 |
| 164 FetchResponseData* FetchResponseData::clone(ScriptState* scriptState) | 163 FetchResponseData* FetchResponseData::clone(ExecutionContext* executionContext) |
| 165 { | 164 { |
| 166 FetchResponseData* newResponse = create(); | 165 FetchResponseData* newResponse = create(); |
| 167 newResponse->m_type = m_type; | 166 newResponse->m_type = m_type; |
| 168 if (m_terminationReason) { | 167 if (m_terminationReason) { |
| 169 newResponse->m_terminationReason = adoptPtr(new TerminationReason); | 168 newResponse->m_terminationReason = adoptPtr(new TerminationReason); |
| 170 *newResponse->m_terminationReason = *m_terminationReason; | 169 *newResponse->m_terminationReason = *m_terminationReason; |
| 171 } | 170 } |
| 172 newResponse->m_url = m_url; | 171 newResponse->m_url = m_url; |
| 173 newResponse->m_status = m_status; | 172 newResponse->m_status = m_status; |
| 174 newResponse->m_statusMessage = m_statusMessage; | 173 newResponse->m_statusMessage = m_statusMessage; |
| 175 newResponse->m_headerList = m_headerList->clone(); | 174 newResponse->m_headerList = m_headerList->clone(); |
| 176 newResponse->m_mimeType = m_mimeType; | 175 newResponse->m_mimeType = m_mimeType; |
| 177 newResponse->m_responseTime = m_responseTime; | 176 newResponse->m_responseTime = m_responseTime; |
| 178 newResponse->m_cacheStorageCacheName = m_cacheStorageCacheName; | 177 newResponse->m_cacheStorageCacheName = m_cacheStorageCacheName; |
| 179 | 178 |
| 180 switch (m_type) { | 179 switch (m_type) { |
| 181 case BasicType: | 180 case BasicType: |
| 182 case CORSType: | 181 case CORSType: |
| 183 ASSERT(m_internalResponse); | 182 ASSERT(m_internalResponse); |
| 184 ASSERT(m_buffer == m_internalResponse->m_buffer); | 183 ASSERT(m_buffer == m_internalResponse->m_buffer); |
| 185 ASSERT(m_internalResponse->m_type == DefaultType); | 184 ASSERT(m_internalResponse->m_type == DefaultType); |
| 186 newResponse->m_internalResponse = m_internalResponse->clone(scriptState)
; | 185 newResponse->m_internalResponse = m_internalResponse->clone(executionCon
text); |
| 187 m_buffer = m_internalResponse->m_buffer; | 186 m_buffer = m_internalResponse->m_buffer; |
| 188 newResponse->m_buffer = newResponse->m_internalResponse->m_buffer; | 187 newResponse->m_buffer = newResponse->m_internalResponse->m_buffer; |
| 189 break; | 188 break; |
| 190 case DefaultType: { | 189 case DefaultType: { |
| 191 ASSERT(!m_internalResponse); | 190 ASSERT(!m_internalResponse); |
| 192 if (m_buffer) { | 191 if (m_buffer) { |
| 193 OwnPtr<WebDataConsumerHandle> handle1, handle2; | 192 OwnPtr<WebDataConsumerHandle> handle1, handle2; |
| 194 DataConsumerTee::create(scriptState->getExecutionContext(), m_buffer
->releaseHandle(), &handle1, &handle2); | 193 DataConsumerTee::create(executionContext, m_buffer->releaseHandle(ex
ecutionContext), &handle1, &handle2); |
| 195 m_buffer = new BodyStreamBuffer(scriptState, createFetchDataConsumer
HandleFromWebHandle(handle1.release())); | 194 m_buffer = new BodyStreamBuffer(createFetchDataConsumerHandleFromWeb
Handle(handle1.release())); |
| 196 newResponse->m_buffer = new BodyStreamBuffer(scriptState, createFetc
hDataConsumerHandleFromWebHandle(handle2.release())); | 195 newResponse->m_buffer = new BodyStreamBuffer(createFetchDataConsumer
HandleFromWebHandle(handle2.release())); |
| 197 } | 196 } |
| 198 break; | 197 break; |
| 199 } | 198 } |
| 200 case ErrorType: | 199 case ErrorType: |
| 201 ASSERT(!m_internalResponse); | 200 ASSERT(!m_internalResponse); |
| 202 ASSERT(!m_buffer); | 201 ASSERT(!m_buffer); |
| 203 break; | 202 break; |
| 204 case OpaqueType: | 203 case OpaqueType: |
| 205 case OpaqueRedirectType: | 204 case OpaqueRedirectType: |
| 206 ASSERT(m_internalResponse); | 205 ASSERT(m_internalResponse); |
| 207 ASSERT(!m_buffer); | 206 ASSERT(!m_buffer); |
| 208 ASSERT(m_internalResponse->m_type == DefaultType); | 207 ASSERT(m_internalResponse->m_type == DefaultType); |
| 209 newResponse->m_internalResponse = m_internalResponse->clone(scriptState)
; | 208 newResponse->m_internalResponse = m_internalResponse->clone(executionCon
text); |
| 210 break; | 209 break; |
| 211 } | 210 } |
| 212 return newResponse; | 211 return newResponse; |
| 213 } | 212 } |
| 214 | 213 |
| 215 void FetchResponseData::populateWebServiceWorkerResponse(WebServiceWorkerRespons
e& response) | 214 void FetchResponseData::populateWebServiceWorkerResponse(WebServiceWorkerRespons
e& response) |
| 216 { | 215 { |
| 217 if (m_internalResponse) { | 216 if (m_internalResponse) { |
| 218 m_internalResponse->populateWebServiceWorkerResponse(response); | 217 m_internalResponse->populateWebServiceWorkerResponse(response); |
| 219 response.setResponseType(fetchTypeToWebType(m_type)); | 218 response.setResponseType(fetchTypeToWebType(m_type)); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 } | 253 } |
| 255 | 254 |
| 256 DEFINE_TRACE(FetchResponseData) | 255 DEFINE_TRACE(FetchResponseData) |
| 257 { | 256 { |
| 258 visitor->trace(m_headerList); | 257 visitor->trace(m_headerList); |
| 259 visitor->trace(m_internalResponse); | 258 visitor->trace(m_internalResponse); |
| 260 visitor->trace(m_buffer); | 259 visitor->trace(m_buffer); |
| 261 } | 260 } |
| 262 | 261 |
| 263 } // namespace blink | 262 } // namespace blink |
| OLD | NEW |