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 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 request.addHTTPHeaderField(AtomicString(list[i]->first), AtomicString(li
st[i]->second)); | 531 request.addHTTPHeaderField(AtomicString(list[i]->first), AtomicString(li
st[i]->second)); |
532 } | 532 } |
533 | 533 |
534 if (m_request->method() != HTTPNames::GET && m_request->method() != HTTPName
s::HEAD) { | 534 if (m_request->method() != HTTPNames::GET && m_request->method() != HTTPName
s::HEAD) { |
535 if (m_request->buffer()) { | 535 if (m_request->buffer()) { |
536 request.setHTTPBody(m_request->buffer()->drainAsFormData()); | 536 request.setHTTPBody(m_request->buffer()->drainAsFormData()); |
537 } | 537 } |
538 } | 538 } |
539 request.setFetchRedirectMode(m_request->redirect()); | 539 request.setFetchRedirectMode(m_request->redirect()); |
540 request.setUseStreamOnResponse(true); | 540 request.setUseStreamOnResponse(true); |
| 541 request.setIsExternalRequest(executionContext()->securityContext().isHostedI
nReservedIPRange()); |
541 | 542 |
542 // "2. Append `Referer`/empty byte sequence, if |HTTPRequest|'s |referrer| | 543 // "2. Append `Referer`/empty byte sequence, if |HTTPRequest|'s |referrer| |
543 // is none, and `Referer`/|HTTPRequest|'s referrer, serialized and utf-8 | 544 // is none, and `Referer`/|HTTPRequest|'s referrer, serialized and utf-8 |
544 // encoded, otherwise, to HTTPRequest's header list. | 545 // encoded, otherwise, to HTTPRequest's header list. |
545 // | 546 // |
546 // The following code also invokes "determine request's referrer" which is | 547 // The following code also invokes "determine request's referrer" which is |
547 // written in "Main fetch" operation. | 548 // written in "Main fetch" operation. |
548 ASSERT(m_request->getReferrerPolicy() == ReferrerPolicyDefault); | 549 ASSERT(m_request->getReferrerPolicy() == ReferrerPolicyDefault); |
549 // Request's referrer policy is always default, so use the client's one. | 550 // Request's referrer policy is always default, so use the client's one. |
550 // TODO(yhirano): Fix here when we introduce requet's referrer policy. | 551 // TODO(yhirano): Fix here when we introduce requet's referrer policy. |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 if (m_request->method() != HTTPNames::GET) { | 627 if (m_request->method() != HTTPNames::GET) { |
627 performNetworkError("Only 'GET' method is allowed for data URLs in Fetch
API."); | 628 performNetworkError("Only 'GET' method is allowed for data URLs in Fetch
API."); |
628 return; | 629 return; |
629 } | 630 } |
630 | 631 |
631 ResourceRequest request(m_request->url()); | 632 ResourceRequest request(m_request->url()); |
632 request.setRequestContext(m_request->context()); | 633 request.setRequestContext(m_request->context()); |
633 request.setUseStreamOnResponse(true); | 634 request.setUseStreamOnResponse(true); |
634 request.setHTTPMethod(m_request->method()); | 635 request.setHTTPMethod(m_request->method()); |
635 request.setFetchRedirectMode(WebURLRequest::FetchRedirectModeError); | 636 request.setFetchRedirectMode(WebURLRequest::FetchRedirectModeError); |
| 637 // We intentionally skip 'setIsExternalRequest', as 'data:' can never be ext
ernal. |
636 | 638 |
637 ResourceLoaderOptions resourceLoaderOptions; | 639 ResourceLoaderOptions resourceLoaderOptions; |
638 resourceLoaderOptions.dataBufferingPolicy = DoNotBufferData; | 640 resourceLoaderOptions.dataBufferingPolicy = DoNotBufferData; |
639 resourceLoaderOptions.securityOrigin = m_request->origin().get(); | 641 resourceLoaderOptions.securityOrigin = m_request->origin().get(); |
640 | 642 |
641 ThreadableLoaderOptions threadableLoaderOptions; | 643 ThreadableLoaderOptions threadableLoaderOptions; |
642 threadableLoaderOptions.contentSecurityPolicyEnforcement = ContentSecurityPo
licy::shouldBypassMainWorld(executionContext()) ? DoNotEnforceContentSecurityPol
icy : EnforceContentSecurityPolicy; | 644 threadableLoaderOptions.contentSecurityPolicyEnforcement = ContentSecurityPo
licy::shouldBypassMainWorld(executionContext()) ? DoNotEnforceContentSecurityPol
icy : EnforceContentSecurityPolicy; |
643 threadableLoaderOptions.crossOriginRequestPolicy = AllowCrossOriginRequests; | 645 threadableLoaderOptions.crossOriginRequestPolicy = AllowCrossOriginRequests; |
644 | 646 |
645 InspectorInstrumentation::willStartFetch(executionContext(), this); | 647 InspectorInstrumentation::willStartFetch(executionContext(), this); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
712 loader->dispose(); | 714 loader->dispose(); |
713 } | 715 } |
714 | 716 |
715 DEFINE_TRACE(FetchManager) | 717 DEFINE_TRACE(FetchManager) |
716 { | 718 { |
717 visitor->trace(m_executionContext); | 719 visitor->trace(m_executionContext); |
718 visitor->trace(m_loaders); | 720 visitor->trace(m_loaders); |
719 } | 721 } |
720 | 722 |
721 } // namespace blink | 723 } // namespace blink |
OLD | NEW |