Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: third_party/WebKit/Source/modules/fetch/FetchResponseData.cpp

Issue 1899873006: Make Response::body return v8-extra based stream behind flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@notify-locked-released
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/fetch/FetchResponseData.h ('k') | third_party/WebKit/Source/modules/fetch/GlobalFetch.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698