| 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 |