Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(339)

Side by Side Diff: chrome/browser/io_thread.cc

Issue 605733006: Land Recent QUIC Changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert Patch Set 3 Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/io_thread.h ('k') | chrome/browser/io_thread_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 namespace { 115 namespace {
116 116
117 const char kTCPFastOpenFieldTrialName[] = "TCPFastOpen"; 117 const char kTCPFastOpenFieldTrialName[] = "TCPFastOpen";
118 const char kTCPFastOpenHttpsEnabledGroupName[] = "HttpsEnabled"; 118 const char kTCPFastOpenHttpsEnabledGroupName[] = "HttpsEnabled";
119 119
120 const char kQuicFieldTrialName[] = "QUIC"; 120 const char kQuicFieldTrialName[] = "QUIC";
121 const char kQuicFieldTrialEnabledGroupName[] = "Enabled"; 121 const char kQuicFieldTrialEnabledGroupName[] = "Enabled";
122 const char kQuicFieldTrialHttpsEnabledGroupName[] = "HttpsEnabled"; 122 const char kQuicFieldTrialHttpsEnabledGroupName[] = "HttpsEnabled";
123 const char kQuicFieldTrialPacketLengthSuffix[] = "BytePackets"; 123 const char kQuicFieldTrialPacketLengthSuffix[] = "BytePackets";
124 const char kQuicFieldTrialPacingSuffix[] = "WithPacing"; 124 const char kQuicFieldTrialPacingSuffix[] = "WithPacing";
125 const char kQuicFieldTrialTimeBasedLossDetectionSuffix[] =
126 "WithTimeBasedLossDetection";
127 125
128 // The SPDY trial composes two different trial plus control groups: 126 // The SPDY trial composes two different trial plus control groups:
129 // * A "holdback" group with SPDY disabled, and corresponding control 127 // * A "holdback" group with SPDY disabled, and corresponding control
130 // (SPDY/3.1). The primary purpose of the holdback group is to encourage site 128 // (SPDY/3.1). The primary purpose of the holdback group is to encourage site
131 // operators to do feature detection rather than UA-sniffing. As such, this 129 // operators to do feature detection rather than UA-sniffing. As such, this
132 // trial runs continuously. 130 // trial runs continuously.
133 // * A SPDY/4 experiment, for SPDY/4 (aka HTTP/2) vs SPDY/3.1 comparisons and 131 // * A SPDY/4 experiment, for SPDY/4 (aka HTTP/2) vs SPDY/3.1 comparisons and
134 // eventual SPDY/4 deployment. 132 // eventual SPDY/4 deployment.
135 const char kSpdyFieldTrialName[] = "SPDY"; 133 const char kSpdyFieldTrialName[] = "SPDY";
136 const char kSpdyFieldTrialHoldbackGroupName[] = "SpdyDisabled"; 134 const char kSpdyFieldTrialHoldbackGroupName[] = "SpdyDisabled";
(...skipping 871 matching lines...) Expand 10 before | Expand all | Expand 10 after
1008 globals.force_spdy_always.CopyToIfSet(&params->force_spdy_always); 1006 globals.force_spdy_always.CopyToIfSet(&params->force_spdy_always);
1009 params->forced_spdy_exclusions = globals.forced_spdy_exclusions; 1007 params->forced_spdy_exclusions = globals.forced_spdy_exclusions;
1010 globals.use_alternate_protocols.CopyToIfSet( 1008 globals.use_alternate_protocols.CopyToIfSet(
1011 &params->use_alternate_protocols); 1009 &params->use_alternate_protocols);
1012 globals.alternate_protocol_probability_threshold.CopyToIfSet( 1010 globals.alternate_protocol_probability_threshold.CopyToIfSet(
1013 &params->alternate_protocol_probability_threshold); 1011 &params->alternate_protocol_probability_threshold);
1014 globals.enable_websocket_over_spdy.CopyToIfSet( 1012 globals.enable_websocket_over_spdy.CopyToIfSet(
1015 &params->enable_websocket_over_spdy); 1013 &params->enable_websocket_over_spdy);
1016 1014
1017 globals.enable_quic.CopyToIfSet(&params->enable_quic); 1015 globals.enable_quic.CopyToIfSet(&params->enable_quic);
1018 globals.enable_quic_time_based_loss_detection.CopyToIfSet(
1019 &params->enable_quic_time_based_loss_detection);
1020 globals.quic_always_require_handshake_confirmation.CopyToIfSet( 1016 globals.quic_always_require_handshake_confirmation.CopyToIfSet(
1021 &params->quic_always_require_handshake_confirmation); 1017 &params->quic_always_require_handshake_confirmation);
1022 globals.quic_disable_connection_pooling.CopyToIfSet( 1018 globals.quic_disable_connection_pooling.CopyToIfSet(
1023 &params->quic_disable_connection_pooling); 1019 &params->quic_disable_connection_pooling);
1024 globals.enable_quic_port_selection.CopyToIfSet( 1020 globals.enable_quic_port_selection.CopyToIfSet(
1025 &params->enable_quic_port_selection); 1021 &params->enable_quic_port_selection);
1026 globals.quic_max_packet_length.CopyToIfSet(&params->quic_max_packet_length); 1022 globals.quic_max_packet_length.CopyToIfSet(&params->quic_max_packet_length);
1027 globals.quic_user_agent_id.CopyToIfSet(&params->quic_user_agent_id); 1023 globals.quic_user_agent_id.CopyToIfSet(&params->quic_user_agent_id);
1028 globals.quic_supported_versions.CopyToIfSet( 1024 globals.quic_supported_versions.CopyToIfSet(
1029 &params->quic_supported_versions); 1025 &params->quic_supported_versions);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1162 1158
1163 // static 1159 // static
1164 void IOThread::ConfigureQuicGlobals( 1160 void IOThread::ConfigureQuicGlobals(
1165 const base::CommandLine& command_line, 1161 const base::CommandLine& command_line,
1166 base::StringPiece quic_trial_group, 1162 base::StringPiece quic_trial_group,
1167 const VariationParameters& quic_trial_params, 1163 const VariationParameters& quic_trial_params,
1168 IOThread::Globals* globals) { 1164 IOThread::Globals* globals) {
1169 bool enable_quic = ShouldEnableQuic(command_line, quic_trial_group); 1165 bool enable_quic = ShouldEnableQuic(command_line, quic_trial_group);
1170 globals->enable_quic.set(enable_quic); 1166 globals->enable_quic.set(enable_quic);
1171 if (enable_quic) { 1167 if (enable_quic) {
1172 globals->enable_quic_time_based_loss_detection.set(
1173 ShouldEnableQuicTimeBasedLossDetection(command_line, quic_trial_group,
1174 quic_trial_params));
1175 globals->quic_always_require_handshake_confirmation.set( 1168 globals->quic_always_require_handshake_confirmation.set(
1176 ShouldQuicAlwaysRequireHandshakeConfirmation(quic_trial_params)); 1169 ShouldQuicAlwaysRequireHandshakeConfirmation(quic_trial_params));
1177 globals->quic_disable_connection_pooling.set( 1170 globals->quic_disable_connection_pooling.set(
1178 ShouldQuicDisableConnectionPooling(quic_trial_params)); 1171 ShouldQuicDisableConnectionPooling(quic_trial_params));
1179 globals->enable_quic_port_selection.set( 1172 globals->enable_quic_port_selection.set(
1180 ShouldEnableQuicPortSelection(command_line)); 1173 ShouldEnableQuicPortSelection(command_line));
1181 globals->quic_connection_options = 1174 globals->quic_connection_options =
1182 GetQuicConnectionOptions(command_line, quic_trial_params); 1175 GetQuicConnectionOptions(command_line, quic_trial_params);
1183 if (ShouldEnableQuicPacing(command_line, quic_trial_group, 1176 if (ShouldEnableQuicPacing(command_line, quic_trial_group,
1184 quic_trial_params)) { 1177 quic_trial_params)) {
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1327 if (base::StringToDouble( 1320 if (base::StringToDouble(
1328 GetVariationParam(quic_trial_params, 1321 GetVariationParam(quic_trial_params,
1329 "alternate_protocol_probability_threshold"), 1322 "alternate_protocol_probability_threshold"),
1330 &value)) { 1323 &value)) {
1331 return value; 1324 return value;
1332 } 1325 }
1333 return -1; 1326 return -1;
1334 } 1327 }
1335 1328
1336 // static 1329 // static
1337 bool IOThread::ShouldEnableQuicTimeBasedLossDetection(
1338 const CommandLine& command_line,
1339 base::StringPiece quic_trial_group,
1340 const VariationParameters& quic_trial_params) {
1341 if (command_line.HasSwitch(switches::kEnableQuicTimeBasedLossDetection))
1342 return true;
1343
1344 if (command_line.HasSwitch(switches::kDisableQuicTimeBasedLossDetection))
1345 return false;
1346
1347 if (LowerCaseEqualsASCII(
1348 GetVariationParam(quic_trial_params, "enable_time_based_loss_detection"),
1349 "true"))
1350 return true;
1351
1352 return quic_trial_group.ends_with(
1353 kQuicFieldTrialTimeBasedLossDetectionSuffix);
1354 }
1355
1356 // static
1357 bool IOThread::ShouldQuicAlwaysRequireHandshakeConfirmation( 1330 bool IOThread::ShouldQuicAlwaysRequireHandshakeConfirmation(
1358 const VariationParameters& quic_trial_params) { 1331 const VariationParameters& quic_trial_params) {
1359 return LowerCaseEqualsASCII( 1332 return LowerCaseEqualsASCII(
1360 GetVariationParam(quic_trial_params, 1333 GetVariationParam(quic_trial_params,
1361 "always_require_handshake_confirmation"), 1334 "always_require_handshake_confirmation"),
1362 "true"); 1335 "true");
1363 } 1336 }
1364 1337
1365 // static 1338 // static
1366 bool IOThread::ShouldQuicDisableConnectionPooling( 1339 bool IOThread::ShouldQuicDisableConnectionPooling(
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1429 net::QuicVersionVector supported_versions = net::QuicSupportedVersions(); 1402 net::QuicVersionVector supported_versions = net::QuicSupportedVersions();
1430 for (size_t i = 0; i < supported_versions.size(); ++i) { 1403 for (size_t i = 0; i < supported_versions.size(); ++i) {
1431 net::QuicVersion version = supported_versions[i]; 1404 net::QuicVersion version = supported_versions[i];
1432 if (net::QuicVersionToString(version) == quic_version) { 1405 if (net::QuicVersionToString(version) == quic_version) {
1433 return version; 1406 return version;
1434 } 1407 }
1435 } 1408 }
1436 1409
1437 return net::QUIC_VERSION_UNSUPPORTED; 1410 return net::QUIC_VERSION_UNSUPPORTED;
1438 } 1411 }
OLDNEW
« no previous file with comments | « chrome/browser/io_thread.h ('k') | chrome/browser/io_thread_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698