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 |