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