OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/io_thread.h" | 5 #include "chrome/browser/io_thread.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/base64.h" | 10 #include "base/base64.h" |
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
775 } | 775 } |
776 | 776 |
777 bool IOThread::WpadQuickCheckEnabled() const { | 777 bool IOThread::WpadQuickCheckEnabled() const { |
778 return quick_check_enabled_.GetValue(); | 778 return quick_check_enabled_.GetValue(); |
779 } | 779 } |
780 | 780 |
781 bool IOThread::PacHttpsUrlStrippingEnabled() const { | 781 bool IOThread::PacHttpsUrlStrippingEnabled() const { |
782 return pac_https_url_stripping_enabled_.GetValue(); | 782 return pac_https_url_stripping_enabled_.GetValue(); |
783 } | 783 } |
784 | 784 |
785 void IOThread::ConstructSystemRequestContext() { | 785 void IOThread::SetUpProxyConfigService( |
| 786 net::URLRequestContextBuilderMojo* builder, |
| 787 std::unique_ptr<net::ProxyConfigService> proxy_config_service) const { |
786 const base::CommandLine& command_line = | 788 const base::CommandLine& command_line = |
787 *base::CommandLine::ForCurrentProcess(); | 789 *base::CommandLine::ForCurrentProcess(); |
| 790 |
| 791 // TODO(eroman): Figure out why this doesn't work in single-process mode. |
| 792 // Should be possible now that a private isolate is used. |
| 793 // http://crbug.com/474654 |
| 794 if (!command_line.HasSwitch(switches::kWinHttpProxyResolver)) { |
| 795 if (command_line.HasSwitch(switches::kSingleProcess)) { |
| 796 LOG(ERROR) << "Cannot use V8 Proxy resolver in single process mode."; |
| 797 } else { |
| 798 builder->set_mojo_proxy_resolver_factory( |
| 799 ChromeMojoProxyResolverFactory::GetInstance()); |
| 800 } |
| 801 } |
| 802 |
| 803 builder->set_pac_quick_check_enabled(WpadQuickCheckEnabled()); |
| 804 builder->set_pac_sanitize_url_policy( |
| 805 PacHttpsUrlStrippingEnabled() |
| 806 ? net::ProxyService::SanitizeUrlPolicy::SAFE |
| 807 : net::ProxyService::SanitizeUrlPolicy::UNSAFE); |
| 808 #if defined(OS_CHROMEOS) |
| 809 builder->set_dhcp_fetcher_factory( |
| 810 base::MakeUnique<chromeos::DhcpProxyScriptFetcherFactoryChromeos>()); |
| 811 #endif |
| 812 builder->set_proxy_config_service(std::move(proxy_config_service)); |
| 813 } |
| 814 |
| 815 void IOThread::ConstructSystemRequestContext() { |
788 net::URLRequestContextBuilderMojo builder; | 816 net::URLRequestContextBuilderMojo builder; |
789 | 817 |
790 builder.set_network_quality_estimator( | 818 builder.set_network_quality_estimator( |
791 globals_->network_quality_estimator.get()); | 819 globals_->network_quality_estimator.get()); |
792 builder.set_enable_brotli(globals_->enable_brotli); | 820 builder.set_enable_brotli(globals_->enable_brotli); |
793 builder.set_name("system"); | 821 builder.set_name("system"); |
794 | 822 |
795 builder.set_user_agent(GetUserAgent()); | 823 builder.set_user_agent(GetUserAgent()); |
796 std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate( | 824 std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate( |
797 new ChromeNetworkDelegate(extension_event_router_forwarder(), | 825 new ChromeNetworkDelegate(extension_event_router_forwarder(), |
(...skipping 14 matching lines...) Expand all Loading... |
812 CreateDefaultAuthHandlerFactory(host_resolver.get())); | 840 CreateDefaultAuthHandlerFactory(host_resolver.get())); |
813 | 841 |
814 builder.set_host_resolver(std::move(host_resolver)); | 842 builder.set_host_resolver(std::move(host_resolver)); |
815 | 843 |
816 #if defined(OS_CHROMEOS) | 844 #if defined(OS_CHROMEOS) |
817 // Creates a CertVerifyProc that doesn't allow any profile-provided certs. | 845 // Creates a CertVerifyProc that doesn't allow any profile-provided certs. |
818 builder.SetCertVerifier(base::MakeUnique<net::CachingCertVerifier>( | 846 builder.SetCertVerifier(base::MakeUnique<net::CachingCertVerifier>( |
819 base::MakeUnique<net::MultiThreadedCertVerifier>( | 847 base::MakeUnique<net::MultiThreadedCertVerifier>( |
820 new chromeos::CertVerifyProcChromeOS()))); | 848 new chromeos::CertVerifyProcChromeOS()))); |
821 #else | 849 #else |
| 850 const base::CommandLine& command_line = |
| 851 *base::CommandLine::ForCurrentProcess(); |
822 builder.SetCertVerifier(IgnoreErrorsCertVerifier::MaybeWrapCertVerifier( | 852 builder.SetCertVerifier(IgnoreErrorsCertVerifier::MaybeWrapCertVerifier( |
823 command_line, net::CertVerifier::CreateDefault())); | 853 command_line, net::CertVerifier::CreateDefault())); |
824 UMA_HISTOGRAM_BOOLEAN( | 854 UMA_HISTOGRAM_BOOLEAN( |
825 "Net.Certificate.IgnoreCertificateErrorsSPKIListPresent", | 855 "Net.Certificate.IgnoreCertificateErrorsSPKIListPresent", |
826 command_line.HasSwitch(switches::kIgnoreCertificateErrorsSPKIList)); | 856 command_line.HasSwitch(switches::kIgnoreCertificateErrorsSPKIList)); |
827 #endif | 857 #endif |
828 | 858 |
829 std::unique_ptr<net::MultiLogCTVerifier> ct_verifier = | 859 std::unique_ptr<net::MultiLogCTVerifier> ct_verifier = |
830 base::MakeUnique<net::MultiLogCTVerifier>(); | 860 base::MakeUnique<net::MultiLogCTVerifier>(); |
831 // Add built-in logs | 861 // Add built-in logs |
832 ct_verifier->AddLogs(globals_->ct_logs); | 862 ct_verifier->AddLogs(globals_->ct_logs); |
833 | 863 |
834 // Register the ct_tree_tracker_ as observer for verified SCTs. | 864 // Register the ct_tree_tracker_ as observer for verified SCTs. |
835 ct_verifier->SetObserver(ct_tree_tracker_.get()); | 865 ct_verifier->SetObserver(ct_tree_tracker_.get()); |
836 | 866 |
837 builder.set_ct_verifier(std::move(ct_verifier)); | 867 builder.set_ct_verifier(std::move(ct_verifier)); |
838 | 868 |
839 // TODO(eroman): Figure out why this doesn't work in single-process mode. | 869 SetUpProxyConfigService(&builder, std::move(system_proxy_config_service_)); |
840 // Should be possible now that a private isolate is used. | |
841 // http://crbug.com/474654 | |
842 if (!command_line.HasSwitch(switches::kWinHttpProxyResolver)) { | |
843 if (command_line.HasSwitch(switches::kSingleProcess)) { | |
844 LOG(ERROR) << "Cannot use V8 Proxy resolver in single process mode."; | |
845 } else { | |
846 builder.set_mojo_proxy_resolver_factory( | |
847 ChromeMojoProxyResolverFactory::GetInstance()); | |
848 } | |
849 } | |
850 | |
851 builder.set_pac_quick_check_enabled(WpadQuickCheckEnabled()); | |
852 builder.set_pac_sanitize_url_policy( | |
853 PacHttpsUrlStrippingEnabled() | |
854 ? net::ProxyService::SanitizeUrlPolicy::SAFE | |
855 : net::ProxyService::SanitizeUrlPolicy::UNSAFE); | |
856 #if defined(OS_CHROMEOS) | |
857 builder.set_dhcp_fetcher_factory( | |
858 base::MakeUnique<chromeos::DhcpProxyScriptFetcherFactoryChromeos>()); | |
859 #endif | |
860 builder.set_proxy_config_service(std::move(system_proxy_config_service_)); | |
861 | 870 |
862 builder.set_http_network_session_params(session_params_); | 871 builder.set_http_network_session_params(session_params_); |
863 | 872 |
864 builder.set_data_enabled(true); | 873 builder.set_data_enabled(true); |
865 builder.set_file_enabled(true); | 874 builder.set_file_enabled(true); |
866 #if !BUILDFLAG(DISABLE_FTP_SUPPORT) | 875 #if !BUILDFLAG(DISABLE_FTP_SUPPORT) |
867 builder.set_ftp_enabled(true); | 876 builder.set_ftp_enabled(true); |
868 #endif | 877 #endif |
869 | 878 |
870 builder.DisableHttpCache(); | 879 builder.DisableHttpCache(); |
(...skipping 29 matching lines...) Expand all Loading... |
900 if (command_line.HasSwitch(switches::kIgnoreUrlFetcherCertRequests)) | 909 if (command_line.HasSwitch(switches::kIgnoreUrlFetcherCertRequests)) |
901 net::URLFetcher::SetIgnoreCertificateRequests(true); | 910 net::URLFetcher::SetIgnoreCertificateRequests(true); |
902 | 911 |
903 params->http_09_on_non_default_ports_enabled = | 912 params->http_09_on_non_default_ports_enabled = |
904 http_09_on_non_default_ports_enabled; | 913 http_09_on_non_default_ports_enabled; |
905 } | 914 } |
906 | 915 |
907 metrics::UpdateUsagePrefCallbackType IOThread::GetMetricsDataUseForwarder() { | 916 metrics::UpdateUsagePrefCallbackType IOThread::GetMetricsDataUseForwarder() { |
908 return base::Bind(&UpdateMetricsUsagePrefsOnUIThread); | 917 return base::Bind(&UpdateMetricsUsagePrefsOnUIThread); |
909 } | 918 } |
OLD | NEW |