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