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