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 <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 // operators to do feature detection rather than UA-sniffing. As such, this | 132 // operators to do feature detection rather than UA-sniffing. As such, this |
133 // trial runs continuously. | 133 // trial runs continuously. |
134 // * A SPDY/4 experiment, for SPDY/4 (aka HTTP/2) vs SPDY/3.1 comparisons and | 134 // * A SPDY/4 experiment, for SPDY/4 (aka HTTP/2) vs SPDY/3.1 comparisons and |
135 // eventual SPDY/4 deployment. | 135 // eventual SPDY/4 deployment. |
136 const char kSpdyFieldTrialName[] = "SPDY"; | 136 const char kSpdyFieldTrialName[] = "SPDY"; |
137 const char kSpdyFieldTrialHoldbackGroupNamePrefix[] = "SpdyDisabled"; | 137 const char kSpdyFieldTrialHoldbackGroupNamePrefix[] = "SpdyDisabled"; |
138 const char kSpdyFieldTrialSpdy31GroupNamePrefix[] = "Spdy31Enabled"; | 138 const char kSpdyFieldTrialSpdy31GroupNamePrefix[] = "Spdy31Enabled"; |
139 const char kSpdyFieldTrialSpdy4GroupNamePrefix[] = "Spdy4Enabled"; | 139 const char kSpdyFieldTrialSpdy4GroupNamePrefix[] = "Spdy4Enabled"; |
140 const char kSpdyFieldTrialParametrizedPrefix[] = "Parametrized"; | 140 const char kSpdyFieldTrialParametrizedPrefix[] = "Parametrized"; |
141 | 141 |
142 // Field trial for Cache-Control: stale-while-revalidate directive. | |
143 const char kStaleWhileRevalidateFieldTrialName[] = "StaleWhileRevalidate"; | |
144 | |
145 #if defined(OS_MACOSX) && !defined(OS_IOS) | 142 #if defined(OS_MACOSX) && !defined(OS_IOS) |
146 void ObserveKeychainEvents() { | 143 void ObserveKeychainEvents() { |
147 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 144 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
148 net::CertDatabase::GetInstance()->SetMessageLoopForKeychainEvents(); | 145 net::CertDatabase::GetInstance()->SetMessageLoopForKeychainEvents(); |
149 } | 146 } |
150 #endif | 147 #endif |
151 | 148 |
152 // Used for the "system" URLRequestContext. | 149 // Used for the "system" URLRequestContext. |
153 class SystemURLRequestContext : public net::URLRequestContext { | 150 class SystemURLRequestContext : public net::URLRequestContext { |
154 public: | 151 public: |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 const std::string& GetVariationParam( | 284 const std::string& GetVariationParam( |
288 const std::map<std::string, std::string>& params, | 285 const std::map<std::string, std::string>& params, |
289 const std::string& key) { | 286 const std::string& key) { |
290 std::map<std::string, std::string>::const_iterator it = params.find(key); | 287 std::map<std::string, std::string>::const_iterator it = params.find(key); |
291 if (it == params.end()) | 288 if (it == params.end()) |
292 return base::EmptyString(); | 289 return base::EmptyString(); |
293 | 290 |
294 return it->second; | 291 return it->second; |
295 } | 292 } |
296 | 293 |
297 // Return true if stale-while-revalidate support should be enabled. | |
298 bool IsStaleWhileRevalidateEnabled(const base::CommandLine& command_line) { | |
299 if (command_line.HasSwitch(switches::kEnableStaleWhileRevalidate)) | |
300 return true; | |
301 const std::string group_name = | |
302 base::FieldTrialList::FindFullName(kStaleWhileRevalidateFieldTrialName); | |
303 return group_name == "Enabled"; | |
304 } | |
305 | |
306 // Parse kUseSpdy command line flag options, which may contain the following: | 294 // Parse kUseSpdy command line flag options, which may contain the following: |
307 // | 295 // |
308 // "off" : Disables SPDY support entirely. | 296 // "off" : Disables SPDY support entirely. |
309 // "no-ping" : Disables SPDY ping connection testing. | 297 // "no-ping" : Disables SPDY ping connection testing. |
310 // "exclude=<host>" : Disables SPDY support for the host <host>. | 298 // "exclude=<host>" : Disables SPDY support for the host <host>. |
311 // "no-compress" : Disables SPDY header compression. | 299 // "no-compress" : Disables SPDY header compression. |
312 // "no-alt-protocols : Disables alternate protocol support. | 300 // "no-alt-protocols : Disables alternate protocol support. |
313 // "init-max-streams=<limit>" : Specifies the maximum number of concurrent | 301 // "init-max-streams=<limit>" : Specifies the maximum number of concurrent |
314 // streams for a SPDY session, unless the | 302 // streams for a SPDY session, unless the |
315 // specifies a different value via SETTINGS. | 303 // specifies a different value via SETTINGS. |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 | 462 |
475 IOThread::Globals:: | 463 IOThread::Globals:: |
476 SystemRequestContextLeakChecker::~SystemRequestContextLeakChecker() { | 464 SystemRequestContextLeakChecker::~SystemRequestContextLeakChecker() { |
477 if (globals_->system_request_context.get()) | 465 if (globals_->system_request_context.get()) |
478 globals_->system_request_context->AssertNoURLRequests(); | 466 globals_->system_request_context->AssertNoURLRequests(); |
479 } | 467 } |
480 | 468 |
481 IOThread::Globals::Globals() | 469 IOThread::Globals::Globals() |
482 : system_request_context_leak_checker(this), | 470 : system_request_context_leak_checker(this), |
483 ignore_certificate_errors(false), | 471 ignore_certificate_errors(false), |
484 use_stale_while_revalidate(false), | |
485 testing_fixed_http_port(0), | 472 testing_fixed_http_port(0), |
486 testing_fixed_https_port(0), | 473 testing_fixed_https_port(0), |
487 enable_user_alternate_protocol_ports(false) { | 474 enable_user_alternate_protocol_ports(false) { |
488 } | 475 } |
489 | 476 |
490 IOThread::Globals::~Globals() {} | 477 IOThread::Globals::~Globals() {} |
491 | 478 |
492 // |local_state| is passed in explicitly in order to (1) reduce implicit | 479 // |local_state| is passed in explicitly in order to (1) reduce implicit |
493 // dependencies and (2) make IOThread more flexible for testing. | 480 // dependencies and (2) make IOThread more flexible for testing. |
494 IOThread::IOThread( | 481 IOThread::IOThread( |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
792 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 779 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
793 "466432 IOThread::InitAsync::CommandLineConfiguration")); | 780 "466432 IOThread::InitAsync::CommandLineConfiguration")); |
794 if (command_line.HasSwitch(switches::kHostRules)) { | 781 if (command_line.HasSwitch(switches::kHostRules)) { |
795 TRACE_EVENT_BEGIN0("startup", "IOThread::InitAsync:SetRulesFromString"); | 782 TRACE_EVENT_BEGIN0("startup", "IOThread::InitAsync:SetRulesFromString"); |
796 globals_->host_mapping_rules->SetRulesFromString( | 783 globals_->host_mapping_rules->SetRulesFromString( |
797 command_line.GetSwitchValueASCII(switches::kHostRules)); | 784 command_line.GetSwitchValueASCII(switches::kHostRules)); |
798 TRACE_EVENT_END0("startup", "IOThread::InitAsync:SetRulesFromString"); | 785 TRACE_EVENT_END0("startup", "IOThread::InitAsync:SetRulesFromString"); |
799 } | 786 } |
800 if (command_line.HasSwitch(switches::kIgnoreCertificateErrors)) | 787 if (command_line.HasSwitch(switches::kIgnoreCertificateErrors)) |
801 globals_->ignore_certificate_errors = true; | 788 globals_->ignore_certificate_errors = true; |
802 globals_->use_stale_while_revalidate = | |
803 IsStaleWhileRevalidateEnabled(command_line); | |
804 if (command_line.HasSwitch(switches::kTestingFixedHttpPort)) { | 789 if (command_line.HasSwitch(switches::kTestingFixedHttpPort)) { |
805 globals_->testing_fixed_http_port = | 790 globals_->testing_fixed_http_port = |
806 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpPort); | 791 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpPort); |
807 } | 792 } |
808 if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) { | 793 if (command_line.HasSwitch(switches::kTestingFixedHttpsPort)) { |
809 globals_->testing_fixed_https_port = | 794 globals_->testing_fixed_https_port = |
810 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort); | 795 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort); |
811 } | 796 } |
812 // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432 | 797 // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432 |
813 // is fixed. | 798 // is fixed. |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1110 params->cert_policy_enforcer = globals.cert_policy_enforcer.get(); | 1095 params->cert_policy_enforcer = globals.cert_policy_enforcer.get(); |
1111 params->channel_id_service = globals.system_channel_id_service.get(); | 1096 params->channel_id_service = globals.system_channel_id_service.get(); |
1112 params->transport_security_state = globals.transport_security_state.get(); | 1097 params->transport_security_state = globals.transport_security_state.get(); |
1113 params->ssl_config_service = globals.ssl_config_service.get(); | 1098 params->ssl_config_service = globals.ssl_config_service.get(); |
1114 params->http_auth_handler_factory = globals.http_auth_handler_factory.get(); | 1099 params->http_auth_handler_factory = globals.http_auth_handler_factory.get(); |
1115 params->http_server_properties = | 1100 params->http_server_properties = |
1116 globals.http_server_properties->GetWeakPtr(); | 1101 globals.http_server_properties->GetWeakPtr(); |
1117 params->network_delegate = globals.system_network_delegate.get(); | 1102 params->network_delegate = globals.system_network_delegate.get(); |
1118 params->host_mapping_rules = globals.host_mapping_rules.get(); | 1103 params->host_mapping_rules = globals.host_mapping_rules.get(); |
1119 params->ignore_certificate_errors = globals.ignore_certificate_errors; | 1104 params->ignore_certificate_errors = globals.ignore_certificate_errors; |
1120 params->use_stale_while_revalidate = globals.use_stale_while_revalidate; | |
1121 params->testing_fixed_http_port = globals.testing_fixed_http_port; | 1105 params->testing_fixed_http_port = globals.testing_fixed_http_port; |
1122 params->testing_fixed_https_port = globals.testing_fixed_https_port; | 1106 params->testing_fixed_https_port = globals.testing_fixed_https_port; |
1123 globals.enable_tcp_fast_open_for_ssl.CopyToIfSet( | 1107 globals.enable_tcp_fast_open_for_ssl.CopyToIfSet( |
1124 ¶ms->enable_tcp_fast_open_for_ssl); | 1108 ¶ms->enable_tcp_fast_open_for_ssl); |
1125 | 1109 |
1126 globals.initial_max_spdy_concurrent_streams.CopyToIfSet( | 1110 globals.initial_max_spdy_concurrent_streams.CopyToIfSet( |
1127 ¶ms->spdy_initial_max_concurrent_streams); | 1111 ¶ms->spdy_initial_max_concurrent_streams); |
1128 globals.enable_spdy_compression.CopyToIfSet( | 1112 globals.enable_spdy_compression.CopyToIfSet( |
1129 ¶ms->enable_spdy_compression); | 1113 ¶ms->enable_spdy_compression); |
1130 globals.enable_spdy_ping_based_connection_checking.CopyToIfSet( | 1114 globals.enable_spdy_ping_based_connection_checking.CopyToIfSet( |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1595 net::QuicVersionVector supported_versions = net::QuicSupportedVersions(); | 1579 net::QuicVersionVector supported_versions = net::QuicSupportedVersions(); |
1596 for (size_t i = 0; i < supported_versions.size(); ++i) { | 1580 for (size_t i = 0; i < supported_versions.size(); ++i) { |
1597 net::QuicVersion version = supported_versions[i]; | 1581 net::QuicVersion version = supported_versions[i]; |
1598 if (net::QuicVersionToString(version) == quic_version) { | 1582 if (net::QuicVersionToString(version) == quic_version) { |
1599 return version; | 1583 return version; |
1600 } | 1584 } |
1601 } | 1585 } |
1602 | 1586 |
1603 return net::QUIC_VERSION_UNSUPPORTED; | 1587 return net::QUIC_VERSION_UNSUPPORTED; |
1604 } | 1588 } |
OLD | NEW |