| 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 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 // dependencies and (2) make IOThread more flexible for testing. | 311 // dependencies and (2) make IOThread more flexible for testing. |
| 312 IOThread::IOThread( | 312 IOThread::IOThread( |
| 313 PrefService* local_state, | 313 PrefService* local_state, |
| 314 policy::PolicyService* policy_service, | 314 policy::PolicyService* policy_service, |
| 315 net_log::ChromeNetLog* net_log, | 315 net_log::ChromeNetLog* net_log, |
| 316 extensions::EventRouterForwarder* extension_event_router_forwarder) | 316 extensions::EventRouterForwarder* extension_event_router_forwarder) |
| 317 : net_log_(net_log), | 317 : net_log_(net_log), |
| 318 #if defined(ENABLE_EXTENSIONS) | 318 #if defined(ENABLE_EXTENSIONS) |
| 319 extension_event_router_forwarder_(extension_event_router_forwarder), | 319 extension_event_router_forwarder_(extension_event_router_forwarder), |
| 320 #endif | 320 #endif |
| 321 globals_(nullptr), | 321 globals_(NULL), |
| 322 is_quic_allowed_by_policy_(true), | 322 is_quic_allowed_by_policy_(true), |
| 323 http_09_on_non_default_ports_enabled_(false), | |
| 324 creation_time_(base::TimeTicks::Now()), | 323 creation_time_(base::TimeTicks::Now()), |
| 325 weak_factory_(this) { | 324 weak_factory_(this) { |
| 326 scoped_refptr<base::SingleThreadTaskRunner> io_thread_proxy = | 325 scoped_refptr<base::SingleThreadTaskRunner> io_thread_proxy = |
| 327 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO); | 326 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO); |
| 328 auth_schemes_ = local_state->GetString(prefs::kAuthSchemes); | 327 auth_schemes_ = local_state->GetString(prefs::kAuthSchemes); |
| 329 negotiate_disable_cname_lookup_.Init( | 328 negotiate_disable_cname_lookup_.Init( |
| 330 prefs::kDisableAuthNegotiateCnameLookup, local_state, | 329 prefs::kDisableAuthNegotiateCnameLookup, local_state, |
| 331 base::Bind(&IOThread::UpdateNegotiateDisableCnameLookup, | 330 base::Bind(&IOThread::UpdateNegotiateDisableCnameLookup, |
| 332 base::Unretained(this))); | 331 base::Unretained(this))); |
| 333 negotiate_disable_cname_lookup_.MoveToThread(io_thread_proxy); | 332 negotiate_disable_cname_lookup_.MoveToThread(io_thread_proxy); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 pac_https_url_stripping_enabled_.Init(prefs::kPacHttpsUrlStrippingEnabled, | 387 pac_https_url_stripping_enabled_.Init(prefs::kPacHttpsUrlStrippingEnabled, |
| 389 local_state); | 388 local_state); |
| 390 pac_https_url_stripping_enabled_.MoveToThread(io_thread_proxy); | 389 pac_https_url_stripping_enabled_.MoveToThread(io_thread_proxy); |
| 391 | 390 |
| 392 const base::Value* value = policy_service->GetPolicies( | 391 const base::Value* value = policy_service->GetPolicies( |
| 393 policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, | 392 policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, |
| 394 std::string())).GetValue(policy::key::kQuicAllowed); | 393 std::string())).GetValue(policy::key::kQuicAllowed); |
| 395 if (value) | 394 if (value) |
| 396 value->GetAsBoolean(&is_quic_allowed_by_policy_); | 395 value->GetAsBoolean(&is_quic_allowed_by_policy_); |
| 397 | 396 |
| 398 value = policy_service | |
| 399 ->GetPolicies(policy::PolicyNamespace( | |
| 400 policy::POLICY_DOMAIN_CHROME, std::string())) | |
| 401 .GetValue(policy::key::kHttp09OnNonDefaultPortsEnabled); | |
| 402 if (value) | |
| 403 value->GetAsBoolean(&http_09_on_non_default_ports_enabled_); | |
| 404 | |
| 405 // Some unit tests use IOThread but do not initialize MetricsService. In that | 397 // Some unit tests use IOThread but do not initialize MetricsService. In that |
| 406 // case it is fine not to have |metrics_data_use_forwarder_|. | 398 // case it is fine not to have |metrics_data_use_forwarder_|. |
| 407 if (g_browser_process->metrics_service()) { | 399 if (g_browser_process->metrics_service()) { |
| 408 // Callback for updating data use prefs should be obtained on UI thread. | 400 // Callback for updating data use prefs should be obtained on UI thread. |
| 409 metrics_data_use_forwarder_ = | 401 metrics_data_use_forwarder_ = |
| 410 g_browser_process->metrics_service()->GetDataUseForwardingCallback(); | 402 g_browser_process->metrics_service()->GetDataUseForwardingCallback(); |
| 411 } | 403 } |
| 412 | 404 |
| 413 chrome_browser_net::SetGlobalSTHDistributor( | 405 chrome_browser_net::SetGlobalSTHDistributor( |
| 414 std::unique_ptr<net::ct::STHDistributor>(new net::ct::STHDistributor())); | 406 std::unique_ptr<net::ct::STHDistributor>(new net::ct::STHDistributor())); |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 608 // Check for OS support of TCP FastOpen, and turn it on for all connections if | 600 // Check for OS support of TCP FastOpen, and turn it on for all connections if |
| 609 // indicated by user. | 601 // indicated by user. |
| 610 // TODO(rch): Make the client socket factory a per-network session instance, | 602 // TODO(rch): Make the client socket factory a per-network session instance, |
| 611 // constructed from a NetworkSession::Params, to allow us to move this option | 603 // constructed from a NetworkSession::Params, to allow us to move this option |
| 612 // to IOThread::Globals & HttpNetworkSession::Params. | 604 // to IOThread::Globals & HttpNetworkSession::Params. |
| 613 bool always_enable_tfo_if_supported = | 605 bool always_enable_tfo_if_supported = |
| 614 command_line.HasSwitch(switches::kEnableTcpFastOpen); | 606 command_line.HasSwitch(switches::kEnableTcpFastOpen); |
| 615 net::CheckSupportAndMaybeEnableTCPFastOpen(always_enable_tfo_if_supported); | 607 net::CheckSupportAndMaybeEnableTCPFastOpen(always_enable_tfo_if_supported); |
| 616 | 608 |
| 617 ConfigureParamsFromFieldTrialsAndCommandLine( | 609 ConfigureParamsFromFieldTrialsAndCommandLine( |
| 618 command_line, is_quic_allowed_by_policy_, | 610 command_line, is_quic_allowed_by_policy_, ¶ms_); |
| 619 http_09_on_non_default_ports_enabled_, ¶ms_); | |
| 620 | 611 |
| 621 TRACE_EVENT_BEGIN0("startup", | 612 TRACE_EVENT_BEGIN0("startup", |
| 622 "IOThread::Init:ProxyScriptFetcherRequestContext"); | 613 "IOThread::Init:ProxyScriptFetcherRequestContext"); |
| 623 globals_->proxy_script_fetcher_context.reset( | 614 globals_->proxy_script_fetcher_context.reset( |
| 624 ConstructProxyScriptFetcherContext(globals_, params_, net_log_)); | 615 ConstructProxyScriptFetcherContext(globals_, params_, net_log_)); |
| 625 TRACE_EVENT_END0("startup", | 616 TRACE_EVENT_END0("startup", |
| 626 "IOThread::Init:ProxyScriptFetcherRequestContext"); | 617 "IOThread::Init:ProxyScriptFetcherRequestContext"); |
| 627 | 618 |
| 628 #if defined(OS_MACOSX) | 619 #if defined(OS_MACOSX) |
| 629 // Start observing Keychain events. This needs to be done on the UI thread, | 620 // Start observing Keychain events. This needs to be done on the UI thread, |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 888 context->set_http_transaction_factory( | 879 context->set_http_transaction_factory( |
| 889 globals->system_http_transaction_factory.get()); | 880 globals->system_http_transaction_factory.get()); |
| 890 | 881 |
| 891 return context; | 882 return context; |
| 892 } | 883 } |
| 893 | 884 |
| 894 // static | 885 // static |
| 895 void IOThread::ConfigureParamsFromFieldTrialsAndCommandLine( | 886 void IOThread::ConfigureParamsFromFieldTrialsAndCommandLine( |
| 896 const base::CommandLine& command_line, | 887 const base::CommandLine& command_line, |
| 897 bool is_quic_allowed_by_policy, | 888 bool is_quic_allowed_by_policy, |
| 898 bool http_09_on_non_default_ports_enabled, | |
| 899 net::HttpNetworkSession::Params* params) { | 889 net::HttpNetworkSession::Params* params) { |
| 900 std::string quic_user_agent_id = chrome::GetChannelString(); | 890 std::string quic_user_agent_id = chrome::GetChannelString(); |
| 901 if (!quic_user_agent_id.empty()) | 891 if (!quic_user_agent_id.empty()) |
| 902 quic_user_agent_id.push_back(' '); | 892 quic_user_agent_id.push_back(' '); |
| 903 quic_user_agent_id.append( | 893 quic_user_agent_id.append( |
| 904 version_info::GetProductNameAndVersionForUserAgent()); | 894 version_info::GetProductNameAndVersionForUserAgent()); |
| 905 quic_user_agent_id.push_back(' '); | 895 quic_user_agent_id.push_back(' '); |
| 906 quic_user_agent_id.append(content::BuildOSCpuInfo()); | 896 quic_user_agent_id.append(content::BuildOSCpuInfo()); |
| 907 | 897 |
| 908 bool is_quic_force_disabled = !is_quic_allowed_by_policy || | 898 bool is_quic_force_disabled = !is_quic_allowed_by_policy || |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 985 if (command_line.HasSwitch(switches::kIgnoreCertificateErrors)) | 975 if (command_line.HasSwitch(switches::kIgnoreCertificateErrors)) |
| 986 params->ignore_certificate_errors = true; | 976 params->ignore_certificate_errors = true; |
| 987 if (command_line.HasSwitch(switches::kTestingFixedHttpPort)) { | 977 if (command_line.HasSwitch(switches::kTestingFixedHttpPort)) { |
| 988 params->testing_fixed_http_port = | 978 params->testing_fixed_http_port = |
| 989 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpPort); | 979 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpPort); |
| 990 } | 980 } |
| 991 if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) { | 981 if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) { |
| 992 params->testing_fixed_https_port = | 982 params->testing_fixed_https_port = |
| 993 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort); | 983 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort); |
| 994 } | 984 } |
| 995 | |
| 996 params->http_09_on_non_default_ports_enabled = | |
| 997 http_09_on_non_default_ports_enabled; | |
| 998 } | 985 } |
| 999 | 986 |
| 1000 // static | 987 // static |
| 1001 net::URLRequestContext* IOThread::ConstructProxyScriptFetcherContext( | 988 net::URLRequestContext* IOThread::ConstructProxyScriptFetcherContext( |
| 1002 IOThread::Globals* globals, | 989 IOThread::Globals* globals, |
| 1003 const net::HttpNetworkSession::Params& params, | 990 const net::HttpNetworkSession::Params& params, |
| 1004 net::NetLog* net_log) { | 991 net::NetLog* net_log) { |
| 1005 net::URLRequestContext* context = new net::URLRequestContext; | 992 net::URLRequestContext* context = new net::URLRequestContext; |
| 1006 context->set_net_log(net_log); | 993 context->set_net_log(net_log); |
| 1007 context->set_host_resolver(globals->host_resolver.get()); | 994 context->set_host_resolver(globals->host_resolver.get()); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1069 // TODO(rtenneti): We should probably use HttpServerPropertiesManager for the | 1056 // TODO(rtenneti): We should probably use HttpServerPropertiesManager for the |
| 1070 // system URLRequestContext too. There's no reason this should be tied to a | 1057 // system URLRequestContext too. There's no reason this should be tied to a |
| 1071 // profile. | 1058 // profile. |
| 1072 return context; | 1059 return context; |
| 1073 } | 1060 } |
| 1074 | 1061 |
| 1075 const metrics::UpdateUsagePrefCallbackType& | 1062 const metrics::UpdateUsagePrefCallbackType& |
| 1076 IOThread::GetMetricsDataUseForwarder() { | 1063 IOThread::GetMetricsDataUseForwarder() { |
| 1077 return metrics_data_use_forwarder_; | 1064 return metrics_data_use_forwarder_; |
| 1078 } | 1065 } |
| OLD | NEW |