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