Chromium Code Reviews| 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 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 544 #endif // defined(OS_ANDROID) | 544 #endif // defined(OS_ANDROID) |
| 545 | 545 |
| 546 globals_->data_use_ascriber = | 546 globals_->data_use_ascriber = |
| 547 base::MakeUnique<data_use_measurement::ChromeDataUseAscriber>(); | 547 base::MakeUnique<data_use_measurement::ChromeDataUseAscriber>(); |
| 548 | 548 |
| 549 globals_->data_use_aggregator.reset(new data_usage::DataUseAggregator( | 549 globals_->data_use_aggregator.reset(new data_usage::DataUseAggregator( |
| 550 std::unique_ptr<data_usage::DataUseAnnotator>( | 550 std::unique_ptr<data_usage::DataUseAnnotator>( |
| 551 new chrome_browser_data_usage::TabIdAnnotator()), | 551 new chrome_browser_data_usage::TabIdAnnotator()), |
| 552 std::move(data_use_amortizer))); | 552 std::move(data_use_amortizer))); |
| 553 | 553 |
| 554 std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate( | |
| 555 new ChromeNetworkDelegate(extension_event_router_forwarder(), | |
| 556 &system_enable_referrers_)); | |
| 557 // By default, data usage is considered off the record. | |
| 558 chrome_network_delegate->set_data_use_aggregator( | |
| 559 globals_->data_use_aggregator.get(), | |
| 560 true /* is_data_usage_off_the_record */); | |
| 561 | |
| 562 #if defined(OS_ANDROID) | 554 #if defined(OS_ANDROID) |
| 563 globals_->external_data_use_observer.reset( | 555 globals_->external_data_use_observer.reset( |
| 564 new chrome::android::ExternalDataUseObserver( | 556 new chrome::android::ExternalDataUseObserver( |
| 565 globals_->data_use_aggregator.get(), | 557 globals_->data_use_aggregator.get(), |
| 566 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), | 558 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), |
| 567 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI))); | 559 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI))); |
| 568 #endif // defined(OS_ANDROID) | 560 #endif // defined(OS_ANDROID) |
| 569 | 561 |
| 570 globals_->system_network_delegate = | |
| 571 globals_->data_use_ascriber->CreateNetworkDelegate( | |
| 572 std::move(chrome_network_delegate), GetMetricsDataUseForwarder()); | |
| 573 | |
| 574 globals_->host_resolver = CreateGlobalHostResolver(net_log_); | 562 globals_->host_resolver = CreateGlobalHostResolver(net_log_); |
| 575 | 563 |
| 576 std::map<std::string, std::string> network_quality_estimator_params; | 564 std::map<std::string, std::string> network_quality_estimator_params; |
| 577 variations::GetVariationParams(kNetworkQualityEstimatorFieldTrialName, | 565 variations::GetVariationParams(kNetworkQualityEstimatorFieldTrialName, |
| 578 &network_quality_estimator_params); | 566 &network_quality_estimator_params); |
| 579 | 567 |
| 580 if (command_line.HasSwitch(switches::kForceEffectiveConnectionType)) { | 568 if (command_line.HasSwitch(switches::kForceEffectiveConnectionType)) { |
| 581 const std::string force_ect_value = | 569 const std::string force_ect_value = |
| 582 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( | 570 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| 583 switches::kForceEffectiveConnectionType); | 571 switches::kForceEffectiveConnectionType); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 605 UpdateDnsClientEnabled(); | 593 UpdateDnsClientEnabled(); |
| 606 #if defined(OS_CHROMEOS) | 594 #if defined(OS_CHROMEOS) |
| 607 // Creates a CertVerifyProc that doesn't allow any profile-provided certs. | 595 // Creates a CertVerifyProc that doesn't allow any profile-provided certs. |
| 608 globals_->cert_verifier = base::MakeUnique<net::CachingCertVerifier>( | 596 globals_->cert_verifier = base::MakeUnique<net::CachingCertVerifier>( |
| 609 base::MakeUnique<net::MultiThreadedCertVerifier>( | 597 base::MakeUnique<net::MultiThreadedCertVerifier>( |
| 610 new chromeos::CertVerifyProcChromeOS())); | 598 new chromeos::CertVerifyProcChromeOS())); |
| 611 #else | 599 #else |
| 612 globals_->cert_verifier = net::CertVerifier::CreateDefault(); | 600 globals_->cert_verifier = net::CertVerifier::CreateDefault(); |
| 613 #endif | 601 #endif |
| 614 | 602 |
| 615 globals_->transport_security_state.reset(new net::TransportSecurityState()); | |
| 616 | |
| 617 std::vector<scoped_refptr<const net::CTLogVerifier>> ct_logs( | 603 std::vector<scoped_refptr<const net::CTLogVerifier>> ct_logs( |
| 618 net::ct::CreateLogVerifiersForKnownLogs()); | 604 net::ct::CreateLogVerifiersForKnownLogs()); |
| 619 | 605 |
| 620 globals_->ct_logs.assign(ct_logs.begin(), ct_logs.end()); | 606 globals_->ct_logs.assign(ct_logs.begin(), ct_logs.end()); |
| 621 | 607 |
| 622 net::MultiLogCTVerifier* ct_verifier = new net::MultiLogCTVerifier(); | 608 net::MultiLogCTVerifier* ct_verifier = new net::MultiLogCTVerifier(); |
| 623 globals_->cert_transparency_verifier.reset(ct_verifier); | 609 globals_->cert_transparency_verifier.reset(ct_verifier); |
| 624 // Add built-in logs | 610 // Add built-in logs |
| 625 ct_verifier->AddLogs(globals_->ct_logs); | 611 ct_verifier->AddLogs(globals_->ct_logs); |
| 626 | 612 |
| 627 ct_tree_tracker_.reset(new certificate_transparency::TreeStateTracker( | 613 ct_tree_tracker_.reset(new certificate_transparency::TreeStateTracker( |
| 628 globals_->ct_logs, net_log_)); | 614 globals_->ct_logs, net_log_)); |
| 629 // Register the ct_tree_tracker_ as observer for new STHs. | 615 // Register the ct_tree_tracker_ as observer for new STHs. |
| 630 RegisterSTHObserver(ct_tree_tracker_.get()); | 616 RegisterSTHObserver(ct_tree_tracker_.get()); |
| 631 // Register the ct_tree_tracker_ as observer for verified SCTs. | 617 // Register the ct_tree_tracker_ as observer for verified SCTs. |
| 632 globals_->cert_transparency_verifier->SetObserver(ct_tree_tracker_.get()); | 618 globals_->cert_transparency_verifier->SetObserver(ct_tree_tracker_.get()); |
| 633 | 619 |
| 634 globals_->ct_policy_enforcer.reset(new net::CTPolicyEnforcer()); | |
| 635 params_.ct_policy_enforcer = globals_->ct_policy_enforcer.get(); | |
|
Randy Smith (Not in Mondays)
2017/05/11 18:05:42
I spent some time trying to convince myself that t
mmenke
2017/05/11 18:15:31
The last line in this method calls ConstructSystem
Randy Smith (Not in Mondays)
2017/05/11 21:06:10
The above doesn't seem relevant to me, since Profi
mmenke
2017/05/11 21:12:08
We call IOThread::Init when we create the IO threa
| |
| 636 | |
| 637 globals_->ssl_config_service = GetSSLConfigService(); | |
| 638 | |
| 639 CreateDefaultAuthHandlerFactory(); | 620 CreateDefaultAuthHandlerFactory(); |
| 640 globals_->http_server_properties.reset(new net::HttpServerPropertiesImpl()); | |
| 641 // For the ProxyScriptFetcher, we use a direct ProxyService. | 621 // For the ProxyScriptFetcher, we use a direct ProxyService. |
| 642 globals_->proxy_script_fetcher_proxy_service = | 622 globals_->proxy_script_fetcher_proxy_service = |
| 643 net::ProxyService::CreateDirectWithNetLog(net_log_); | 623 net::ProxyService::CreateDirectWithNetLog(net_log_); |
| 644 globals_->dns_probe_service.reset(new chrome_browser_net::DnsProbeService()); | 624 globals_->dns_probe_service.reset(new chrome_browser_net::DnsProbeService()); |
| 645 globals_->host_mapping_rules.reset(new net::HostMappingRules()); | 625 globals_->host_mapping_rules.reset(new net::HostMappingRules()); |
| 646 params_.host_mapping_rules = globals_->host_mapping_rules.get(); | 626 params_.host_mapping_rules = globals_->host_mapping_rules.get(); |
| 647 globals_->http_user_agent_settings.reset( | |
| 648 new net::StaticHttpUserAgentSettings(std::string(), GetUserAgent())); | |
| 649 if (command_line.HasSwitch(switches::kHostRules)) { | 627 if (command_line.HasSwitch(switches::kHostRules)) { |
| 650 TRACE_EVENT_BEGIN0("startup", "IOThread::InitAsync:SetRulesFromString"); | 628 TRACE_EVENT_BEGIN0("startup", "IOThread::InitAsync:SetRulesFromString"); |
| 651 globals_->host_mapping_rules->SetRulesFromString( | 629 globals_->host_mapping_rules->SetRulesFromString( |
| 652 command_line.GetSwitchValueASCII(switches::kHostRules)); | 630 command_line.GetSwitchValueASCII(switches::kHostRules)); |
| 653 TRACE_EVENT_END0("startup", "IOThread::InitAsync:SetRulesFromString"); | 631 TRACE_EVENT_END0("startup", "IOThread::InitAsync:SetRulesFromString"); |
| 654 } | 632 } |
| 655 globals_->enable_brotli = | 633 globals_->enable_brotli = |
| 656 base::FeatureList::IsEnabled(features::kBrotliEncoding); | 634 base::FeatureList::IsEnabled(features::kBrotliEncoding); |
| 657 params_.enable_token_binding = | 635 params_.enable_token_binding = |
| 658 base::FeatureList::IsEnabled(features::kTokenBinding); | 636 base::FeatureList::IsEnabled(features::kTokenBinding); |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 864 globals_->system_request_context_storage = | 842 globals_->system_request_context_storage = |
| 865 base::MakeUnique<net::URLRequestContextStorage>(context); | 843 base::MakeUnique<net::URLRequestContextStorage>(context); |
| 866 net::URLRequestContextStorage* context_storage = | 844 net::URLRequestContextStorage* context_storage = |
| 867 globals_->system_request_context_storage.get(); | 845 globals_->system_request_context_storage.get(); |
| 868 | 846 |
| 869 context->set_network_quality_estimator( | 847 context->set_network_quality_estimator( |
| 870 globals_->network_quality_estimator.get()); | 848 globals_->network_quality_estimator.get()); |
| 871 context->set_enable_brotli(globals_->enable_brotli); | 849 context->set_enable_brotli(globals_->enable_brotli); |
| 872 context->set_name("system"); | 850 context->set_name("system"); |
| 873 | 851 |
| 874 context->set_http_user_agent_settings( | 852 context_storage->set_http_user_agent_settings( |
| 875 globals_->http_user_agent_settings.get()); | 853 base::MakeUnique<net::StaticHttpUserAgentSettings>(std::string(), |
| 876 context->set_network_delegate(globals_->system_network_delegate.get()); | 854 GetUserAgent())); |
| 855 std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate( | |
| 856 new ChromeNetworkDelegate(extension_event_router_forwarder(), | |
| 857 &system_enable_referrers_)); | |
| 858 // By default, data usage is considered off the record. | |
| 859 chrome_network_delegate->set_data_use_aggregator( | |
| 860 globals_->data_use_aggregator.get(), | |
| 861 true /* is_data_usage_off_the_record */); | |
| 862 context_storage->set_network_delegate( | |
| 863 globals_->data_use_ascriber->CreateNetworkDelegate( | |
| 864 std::move(chrome_network_delegate), GetMetricsDataUseForwarder())); | |
| 877 context->set_net_log(net_log_); | 865 context->set_net_log(net_log_); |
| 878 context->set_host_resolver(globals_->host_resolver.get()); | 866 context->set_host_resolver(globals_->host_resolver.get()); |
| 879 | 867 |
| 880 context->set_ssl_config_service(globals_->ssl_config_service.get()); | 868 context_storage->set_ssl_config_service(GetSSLConfigService()); |
| 881 context->set_http_auth_handler_factory( | 869 context->set_http_auth_handler_factory( |
| 882 globals_->http_auth_handler_factory.get()); | 870 globals_->http_auth_handler_factory.get()); |
| 883 | 871 |
| 884 // In-memory cookie store. | 872 // In-memory cookie store. |
| 885 context_storage->set_cookie_store( | 873 context_storage->set_cookie_store( |
| 886 content::CreateCookieStore(content::CookieStoreConfig())); | 874 content::CreateCookieStore(content::CookieStoreConfig())); |
| 887 // In-memory channel ID store. | 875 // In-memory channel ID store. |
| 888 context_storage->set_channel_id_service( | 876 context_storage->set_channel_id_service( |
| 889 base::MakeUnique<net::ChannelIDService>( | 877 base::MakeUnique<net::ChannelIDService>( |
| 890 new net::DefaultChannelIDStore(nullptr))); | 878 new net::DefaultChannelIDStore(nullptr))); |
| 891 context->cookie_store()->SetChannelIDServiceID( | 879 context->cookie_store()->SetChannelIDServiceID( |
| 892 context->channel_id_service()->GetUniqueID()); | 880 context->channel_id_service()->GetUniqueID()); |
| 893 | 881 |
| 894 context->set_transport_security_state( | 882 context_storage->set_transport_security_state( |
| 895 globals_->transport_security_state.get()); | 883 base::MakeUnique<net::TransportSecurityState>()); |
| 896 | 884 |
| 897 context->set_http_server_properties(globals_->http_server_properties.get()); | 885 context_storage->set_http_server_properties( |
| 886 base::MakeUnique<net::HttpServerPropertiesImpl>()); | |
| 898 | 887 |
| 899 context->set_cert_verifier(globals_->cert_verifier.get()); | 888 context->set_cert_verifier(globals_->cert_verifier.get()); |
| 900 context->set_cert_transparency_verifier( | 889 context->set_cert_transparency_verifier( |
| 901 globals_->cert_transparency_verifier.get()); | 890 globals_->cert_transparency_verifier.get()); |
| 902 context->set_ct_policy_enforcer(globals_->ct_policy_enforcer.get()); | 891 context_storage->set_ct_policy_enforcer( |
| 892 base::MakeUnique<net::CTPolicyEnforcer>()); | |
| 903 | 893 |
| 904 TRACE_EVENT_BEGIN0("startup", | 894 TRACE_EVENT_BEGIN0("startup", |
| 905 "IOThread::Init:ProxyScriptFetcherRequestContext"); | 895 "IOThread::Init:ProxyScriptFetcherRequestContext"); |
| 906 globals_->proxy_script_fetcher_context.reset( | 896 globals_->proxy_script_fetcher_context.reset( |
| 907 ConstructProxyScriptFetcherContext(globals_, params_, net_log_)); | 897 ConstructProxyScriptFetcherContext(globals_, params_, net_log_)); |
| 908 TRACE_EVENT_END0("startup", | 898 TRACE_EVENT_END0("startup", |
| 909 "IOThread::Init:ProxyScriptFetcherRequestContext"); | 899 "IOThread::Init:ProxyScriptFetcherRequestContext"); |
| 910 | 900 |
| 911 const base::CommandLine& command_line = | 901 const base::CommandLine& command_line = |
| 912 *base::CommandLine::ForCurrentProcess(); | 902 *base::CommandLine::ForCurrentProcess(); |
| 913 context_storage->set_proxy_service(ProxyServiceFactory::CreateProxyService( | 903 context_storage->set_proxy_service(ProxyServiceFactory::CreateProxyService( |
| 914 net_log_, globals_->proxy_script_fetcher_context.get(), | 904 net_log_, globals_->proxy_script_fetcher_context.get(), |
| 915 globals_->system_network_delegate.get(), | 905 context->network_delegate(), std::move(system_proxy_config_service_), |
| 916 std::move(system_proxy_config_service_), command_line, | 906 command_line, WpadQuickCheckEnabled(), PacHttpsUrlStrippingEnabled())); |
| 917 WpadQuickCheckEnabled(), PacHttpsUrlStrippingEnabled())); | |
| 918 | 907 |
| 919 net::HttpNetworkSession::Params system_params(params_); | 908 net::HttpNetworkSession::Params system_params(params_); |
| 920 net::URLRequestContextBuilder::SetHttpNetworkSessionComponents( | 909 net::URLRequestContextBuilder::SetHttpNetworkSessionComponents( |
| 921 context, &system_params); | 910 context, &system_params); |
| 922 | 911 |
| 923 context_storage->set_http_network_session( | 912 context_storage->set_http_network_session( |
| 924 base::MakeUnique<net::HttpNetworkSession>(system_params)); | 913 base::MakeUnique<net::HttpNetworkSession>(system_params)); |
| 925 context_storage->set_http_transaction_factory( | 914 context_storage->set_http_transaction_factory( |
| 926 base::MakeUnique<net::HttpNetworkLayer>( | 915 base::MakeUnique<net::HttpNetworkLayer>( |
| 927 context_storage->http_network_session())); | 916 context_storage->http_network_session())); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1027 // static | 1016 // static |
| 1028 net::URLRequestContext* IOThread::ConstructProxyScriptFetcherContext( | 1017 net::URLRequestContext* IOThread::ConstructProxyScriptFetcherContext( |
| 1029 IOThread::Globals* globals, | 1018 IOThread::Globals* globals, |
| 1030 const net::HttpNetworkSession::Params& params, | 1019 const net::HttpNetworkSession::Params& params, |
| 1031 net::NetLog* net_log) { | 1020 net::NetLog* net_log) { |
| 1032 net::URLRequestContext* context = new net::URLRequestContext; | 1021 net::URLRequestContext* context = new net::URLRequestContext; |
| 1033 context->set_net_log(net_log); | 1022 context->set_net_log(net_log); |
| 1034 context->set_host_resolver(globals->host_resolver.get()); | 1023 context->set_host_resolver(globals->host_resolver.get()); |
| 1035 context->set_cert_verifier(globals->cert_verifier.get()); | 1024 context->set_cert_verifier(globals->cert_verifier.get()); |
| 1036 context->set_transport_security_state( | 1025 context->set_transport_security_state( |
| 1037 globals->transport_security_state.get()); | 1026 globals->system_request_context->transport_security_state()); |
| 1038 context->set_cert_transparency_verifier( | 1027 context->set_cert_transparency_verifier( |
| 1039 globals->cert_transparency_verifier.get()); | 1028 globals->cert_transparency_verifier.get()); |
| 1040 context->set_ct_policy_enforcer(globals->ct_policy_enforcer.get()); | 1029 context->set_ct_policy_enforcer( |
| 1041 context->set_ssl_config_service(globals->ssl_config_service.get()); | 1030 globals->system_request_context->ct_policy_enforcer()); |
| 1031 context->set_ssl_config_service( | |
| 1032 globals->system_request_context->ssl_config_service()); | |
| 1042 context->set_http_auth_handler_factory( | 1033 context->set_http_auth_handler_factory( |
| 1043 globals->http_auth_handler_factory.get()); | 1034 globals->http_auth_handler_factory.get()); |
| 1044 context->set_proxy_service(globals->proxy_script_fetcher_proxy_service.get()); | 1035 context->set_proxy_service(globals->proxy_script_fetcher_proxy_service.get()); |
| 1045 | 1036 |
| 1046 context->set_job_factory( | 1037 context->set_job_factory( |
| 1047 globals->proxy_script_fetcher_url_request_job_factory.get()); | 1038 globals->proxy_script_fetcher_url_request_job_factory.get()); |
| 1048 | 1039 |
| 1049 context->set_cookie_store(globals->system_request_context->cookie_store()); | 1040 context->set_cookie_store(globals->system_request_context->cookie_store()); |
| 1050 context->set_channel_id_service( | 1041 context->set_channel_id_service( |
| 1051 globals->system_request_context->channel_id_service()); | 1042 globals->system_request_context->channel_id_service()); |
| 1052 context->set_network_delegate(globals->system_network_delegate.get()); | 1043 context->set_network_delegate(context->network_delegate()); |
| 1053 context->set_http_user_agent_settings( | 1044 context->set_http_user_agent_settings( |
| 1054 globals->http_user_agent_settings.get()); | 1045 globals->system_request_context->http_user_agent_settings()); |
| 1055 context->set_http_server_properties(globals->http_server_properties.get()); | 1046 context->set_http_server_properties( |
| 1047 globals->system_request_context->http_server_properties()); | |
| 1056 | 1048 |
| 1057 context->set_enable_brotli(globals->enable_brotli); | 1049 context->set_enable_brotli(globals->enable_brotli); |
| 1058 | 1050 |
| 1059 net::HttpNetworkSession::Params session_params(params); | 1051 net::HttpNetworkSession::Params session_params(params); |
| 1060 net::URLRequestContextBuilder::SetHttpNetworkSessionComponents( | 1052 net::URLRequestContextBuilder::SetHttpNetworkSessionComponents( |
| 1061 context, &session_params); | 1053 context, &session_params); |
| 1062 | 1054 |
| 1063 globals->proxy_script_fetcher_http_network_session.reset( | 1055 globals->proxy_script_fetcher_http_network_session.reset( |
| 1064 new net::HttpNetworkSession(session_params)); | 1056 new net::HttpNetworkSession(session_params)); |
| 1065 globals->proxy_script_fetcher_http_transaction_factory.reset( | 1057 globals->proxy_script_fetcher_http_transaction_factory.reset( |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 1093 | 1085 |
| 1094 // TODO(rtenneti): We should probably use HttpServerPropertiesManager for the | 1086 // TODO(rtenneti): We should probably use HttpServerPropertiesManager for the |
| 1095 // system URLRequestContext too. There's no reason this should be tied to a | 1087 // system URLRequestContext too. There's no reason this should be tied to a |
| 1096 // profile. | 1088 // profile. |
| 1097 return context; | 1089 return context; |
| 1098 } | 1090 } |
| 1099 | 1091 |
| 1100 metrics::UpdateUsagePrefCallbackType IOThread::GetMetricsDataUseForwarder() { | 1092 metrics::UpdateUsagePrefCallbackType IOThread::GetMetricsDataUseForwarder() { |
| 1101 return base::Bind(&UpdateMetricsUsagePrefsOnUIThread); | 1093 return base::Bind(&UpdateMetricsUsagePrefsOnUIThread); |
| 1102 } | 1094 } |
| OLD | NEW |