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 |