| 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 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |