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 591 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
602 case WebURLRequest::FetchRequestModeCORSWithForcedPreflight: | 602 case WebURLRequest::FetchRequestModeCORSWithForcedPreflight: |
603 threadableLoaderOptions.crossOriginRequestPolicy = UseAccessControl; | 603 threadableLoaderOptions.crossOriginRequestPolicy = UseAccessControl; |
604 break; | 604 break; |
605 case WebURLRequest::FetchRequestModeNavigate: | 605 case WebURLRequest::FetchRequestModeNavigate: |
606 // Using DenyCrossOriginRequests here to reduce the security risk. | 606 // Using DenyCrossOriginRequests here to reduce the security risk. |
607 // "navigate" request is only available in ServiceWorker. | 607 // "navigate" request is only available in ServiceWorker. |
608 threadableLoaderOptions.crossOriginRequestPolicy = DenyCrossOriginReques
ts; | 608 threadableLoaderOptions.crossOriginRequestPolicy = DenyCrossOriginReques
ts; |
609 break; | 609 break; |
610 } | 610 } |
611 InspectorInstrumentation::willStartFetch(executionContext(), this); | 611 InspectorInstrumentation::willStartFetch(executionContext(), this); |
612 m_loader = ThreadableLoader::create(*executionContext(), this, request, thre
adableLoaderOptions, resourceLoaderOptions); | 612 m_loader = ThreadableLoader::create(*executionContext(), this, threadableLoa
derOptions, resourceLoaderOptions); |
613 if (!m_loader) | 613 m_loader->start(request); |
614 performNetworkError("Can't create ThreadableLoader"); | |
615 } | 614 } |
616 | 615 |
617 // performDataFetch() is almost the same as performHTTPFetch(), except for: | 616 // performDataFetch() is almost the same as performHTTPFetch(), except for: |
618 // - We set AllowCrossOriginRequests to allow requests to data: URLs in | 617 // - We set AllowCrossOriginRequests to allow requests to data: URLs in |
619 // 'same-origin' mode. | 618 // 'same-origin' mode. |
620 // - We reject non-GET method. | 619 // - We reject non-GET method. |
621 void FetchManager::Loader::performDataFetch() | 620 void FetchManager::Loader::performDataFetch() |
622 { | 621 { |
623 ASSERT(m_request->url().protocolIsData()); | 622 ASSERT(m_request->url().protocolIsData()); |
624 | 623 |
(...skipping 12 matching lines...) Expand all Loading... |
637 | 636 |
638 ResourceLoaderOptions resourceLoaderOptions; | 637 ResourceLoaderOptions resourceLoaderOptions; |
639 resourceLoaderOptions.dataBufferingPolicy = DoNotBufferData; | 638 resourceLoaderOptions.dataBufferingPolicy = DoNotBufferData; |
640 resourceLoaderOptions.securityOrigin = m_request->origin().get(); | 639 resourceLoaderOptions.securityOrigin = m_request->origin().get(); |
641 | 640 |
642 ThreadableLoaderOptions threadableLoaderOptions; | 641 ThreadableLoaderOptions threadableLoaderOptions; |
643 threadableLoaderOptions.contentSecurityPolicyEnforcement = ContentSecurityPo
licy::shouldBypassMainWorld(executionContext()) ? DoNotEnforceContentSecurityPol
icy : EnforceConnectSrcDirective; | 642 threadableLoaderOptions.contentSecurityPolicyEnforcement = ContentSecurityPo
licy::shouldBypassMainWorld(executionContext()) ? DoNotEnforceContentSecurityPol
icy : EnforceConnectSrcDirective; |
644 threadableLoaderOptions.crossOriginRequestPolicy = AllowCrossOriginRequests; | 643 threadableLoaderOptions.crossOriginRequestPolicy = AllowCrossOriginRequests; |
645 | 644 |
646 InspectorInstrumentation::willStartFetch(executionContext(), this); | 645 InspectorInstrumentation::willStartFetch(executionContext(), this); |
647 m_loader = ThreadableLoader::create(*executionContext(), this, request, thre
adableLoaderOptions, resourceLoaderOptions); | 646 m_loader = ThreadableLoader::create(*executionContext(), this, threadableLoa
derOptions, resourceLoaderOptions); |
648 if (!m_loader) | 647 m_loader->start(request); |
649 performNetworkError("Can't create ThreadableLoader"); | |
650 } | 648 } |
651 | 649 |
652 void FetchManager::Loader::failed(const String& message) | 650 void FetchManager::Loader::failed(const String& message) |
653 { | 651 { |
654 if (m_failed || m_finished) | 652 if (m_failed || m_finished) |
655 return; | 653 return; |
656 m_failed = true; | 654 m_failed = true; |
657 if (!message.isEmpty()) | 655 if (!message.isEmpty()) |
658 executionContext()->addConsoleMessage(ConsoleMessage::create(JSMessageSo
urce, ErrorMessageLevel, message)); | 656 executionContext()->addConsoleMessage(ConsoleMessage::create(JSMessageSo
urce, ErrorMessageLevel, message)); |
659 if (m_resolver) { | 657 if (m_resolver) { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
714 loader->dispose(); | 712 loader->dispose(); |
715 } | 713 } |
716 | 714 |
717 DEFINE_TRACE(FetchManager) | 715 DEFINE_TRACE(FetchManager) |
718 { | 716 { |
719 visitor->trace(m_executionContext); | 717 visitor->trace(m_executionContext); |
720 visitor->trace(m_loaders); | 718 visitor->trace(m_loaders); |
721 } | 719 } |
722 | 720 |
723 } // namespace blink | 721 } // namespace blink |
OLD | NEW |