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