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

Side by Side Diff: third_party/WebKit/Source/modules/fetch/FetchManager.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/FetchManager.h" 5 #include "modules/fetch/FetchManager.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/ScriptPromiseResolver.h" 8 #include "bindings/core/v8/ScriptPromiseResolver.h"
9 #include "bindings/core/v8/ScriptState.h" 9 #include "bindings/core/v8/ScriptState.h"
10 #include "bindings/core/v8/V8ThrowException.h" 10 #include "bindings/core/v8/V8ThrowException.h"
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 // opaque redirect response. 283 // opaque redirect response.
284 case WebServiceWorkerResponseTypeError: 284 case WebServiceWorkerResponseTypeError:
285 // When ServiceWorker respond to the request from fetch() with an 285 // When ServiceWorker respond to the request from fetch() with an
286 // error response, FetchManager::Loader::didFail() must be called 286 // error response, FetchManager::Loader::didFail() must be called
287 // instead. 287 // instead.
288 RELEASE_NOTREACHED(); 288 RELEASE_NOTREACHED();
289 break; 289 break;
290 } 290 }
291 } 291 }
292 292
293 ScriptState* scriptState = m_resolver->getScriptState();
293 FetchResponseData* responseData = nullptr; 294 FetchResponseData* responseData = nullptr;
294 CompositeDataConsumerHandle::Updater* updater = nullptr; 295 CompositeDataConsumerHandle::Updater* updater = nullptr;
295 if (m_request->integrity().isEmpty()) 296 if (m_request->integrity().isEmpty())
296 responseData = FetchResponseData::createWithBuffer(new BodyStreamBuffer( createFetchDataConsumerHandleFromWebHandle(std::move(handle)))); 297 responseData = FetchResponseData::createWithBuffer(new BodyStreamBuffer( scriptState, createFetchDataConsumerHandleFromWebHandle(std::move(handle))));
297 else 298 else
298 responseData = FetchResponseData::createWithBuffer(new BodyStreamBuffer( createFetchDataConsumerHandleFromWebHandle(CompositeDataConsumerHandle::create(c reateWaitingDataConsumerHandle(), &updater)))); 299 responseData = FetchResponseData::createWithBuffer(new BodyStreamBuffer( scriptState, createFetchDataConsumerHandleFromWebHandle(CompositeDataConsumerHan dle::create(createWaitingDataConsumerHandle(), &updater))));
299 responseData->setStatus(response.httpStatusCode()); 300 responseData->setStatus(response.httpStatusCode());
300 responseData->setStatusMessage(response.httpStatusText()); 301 responseData->setStatusMessage(response.httpStatusText());
301 for (auto& it : response.httpHeaderFields()) 302 for (auto& it : response.httpHeaderFields())
302 responseData->headerList()->append(it.key, it.value); 303 responseData->headerList()->append(it.key, it.value);
303 responseData->setURL(response.url()); 304 responseData->setURL(response.url());
304 responseData->setMIMEType(response.mimeType()); 305 responseData->setMIMEType(response.mimeType());
305 responseData->setResponseTime(response.responseTime()); 306 responseData->setResponseTime(response.responseTime());
306 307
307 FetchResponseData* taintedResponse = nullptr; 308 FetchResponseData* taintedResponse = nullptr;
308 309
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 request.setHTTPMethod(m_request->method()); 559 request.setHTTPMethod(m_request->method());
559 request.setFetchRequestMode(m_request->mode()); 560 request.setFetchRequestMode(m_request->mode());
560 request.setFetchCredentialsMode(m_request->credentials()); 561 request.setFetchCredentialsMode(m_request->credentials());
561 const Vector<OwnPtr<FetchHeaderList::Header>>& list = m_request->headerList( )->list(); 562 const Vector<OwnPtr<FetchHeaderList::Header>>& list = m_request->headerList( )->list();
562 for (size_t i = 0; i < list.size(); ++i) { 563 for (size_t i = 0; i < list.size(); ++i) {
563 request.addHTTPHeaderField(AtomicString(list[i]->first), AtomicString(li st[i]->second)); 564 request.addHTTPHeaderField(AtomicString(list[i]->first), AtomicString(li st[i]->second));
564 } 565 }
565 566
566 if (m_request->method() != HTTPNames::GET && m_request->method() != HTTPName s::HEAD) { 567 if (m_request->method() != HTTPNames::GET && m_request->method() != HTTPName s::HEAD) {
567 if (m_request->buffer()) 568 if (m_request->buffer())
568 request.setHTTPBody(m_request->buffer()->drainAsFormData(m_execution Context)); 569 request.setHTTPBody(m_request->buffer()->drainAsFormData());
569 if (m_request->attachedCredential()) 570 if (m_request->attachedCredential())
570 request.setAttachedCredential(m_request->attachedCredential()); 571 request.setAttachedCredential(m_request->attachedCredential());
571 } 572 }
572 request.setFetchRedirectMode(m_request->redirect()); 573 request.setFetchRedirectMode(m_request->redirect());
573 request.setUseStreamOnResponse(true); 574 request.setUseStreamOnResponse(true);
574 request.setExternalRequestStateFromRequestorAddressSpace(m_executionContext- >securityContext().addressSpace()); 575 request.setExternalRequestStateFromRequestorAddressSpace(m_executionContext- >securityContext().addressSpace());
575 576
576 // "2. Append `Referer`/empty byte sequence, if |HTTPRequest|'s |referrer| 577 // "2. Append `Referer`/empty byte sequence, if |HTTPRequest|'s |referrer|
577 // is none, and `Referer`/|HTTPRequest|'s referrer, serialized and utf-8 578 // is none, and `Referer`/|HTTPRequest|'s referrer, serialized and utf-8
578 // encoded, otherwise, to HTTPRequest's header list. 579 // encoded, otherwise, to HTTPRequest's header list.
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
738 loader->dispose(); 739 loader->dispose();
739 } 740 }
740 741
741 DEFINE_TRACE(FetchManager) 742 DEFINE_TRACE(FetchManager)
742 { 743 {
743 visitor->trace(m_loaders); 744 visitor->trace(m_loaders);
744 ContextLifecycleObserver::trace(visitor); 745 ContextLifecycleObserver::trace(visitor);
745 } 746 }
746 747
747 } // namespace blink 748 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698