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

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

Issue 557373002: Plumbing for TCP FastOpen field trial and enables it for SSL sockets. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@tfo2
Patch Set: Silly file deleted. Created 6 years, 3 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
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 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 108
109 using content::BrowserThread; 109 using content::BrowserThread;
110 110
111 class SafeBrowsingURLRequestContext; 111 class SafeBrowsingURLRequestContext;
112 112
113 // The IOThread object must outlive any tasks posted to the IO thread before the 113 // The IOThread object must outlive any tasks posted to the IO thread before the
114 // Quit task, so base::Bind() calls are not refcounted. 114 // Quit task, so base::Bind() calls are not refcounted.
115 115
116 namespace { 116 namespace {
117 117
118 const char kTCPFastOpenForSSLFieldTrialName[] = "TCPFastOpenEnabledForSSL";
119
118 const char kQuicFieldTrialName[] = "QUIC"; 120 const char kQuicFieldTrialName[] = "QUIC";
119 const char kQuicFieldTrialEnabledGroupName[] = "Enabled"; 121 const char kQuicFieldTrialEnabledGroupName[] = "Enabled";
120 const char kQuicFieldTrialHttpsEnabledGroupName[] = "HttpsEnabled"; 122 const char kQuicFieldTrialHttpsEnabledGroupName[] = "HttpsEnabled";
121 const char kQuicFieldTrialPacketLengthSuffix[] = "BytePackets"; 123 const char kQuicFieldTrialPacketLengthSuffix[] = "BytePackets";
122 const char kQuicFieldTrialPacingSuffix[] = "WithPacing"; 124 const char kQuicFieldTrialPacingSuffix[] = "WithPacing";
123 const char kQuicFieldTrialTimeBasedLossDetectionSuffix[] = 125 const char kQuicFieldTrialTimeBasedLossDetectionSuffix[] =
124 "WithTimeBasedLossDetection"; 126 "WithTimeBasedLossDetection";
125 127
126 // The SPDY trial composes two different trial plus control groups: 128 // The SPDY trial composes two different trial plus control groups:
127 // * A "holdback" group with SPDY disabled, and corresponding control 129 // * A "holdback" group with SPDY disabled, and corresponding control
(...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 } else { 834 } else {
833 // No SPDY command-line flags have been specified. Examine trial groups. 835 // No SPDY command-line flags have been specified. Examine trial groups.
834 ConfigureSpdyFromTrial( 836 ConfigureSpdyFromTrial(
835 base::FieldTrialList::FindFullName(kSpdyFieldTrialName), globals_); 837 base::FieldTrialList::FindFullName(kSpdyFieldTrialName), globals_);
836 } 838 }
837 839
838 if (command_line.HasSwitch(switches::kEnableWebSocketOverSpdy)) 840 if (command_line.HasSwitch(switches::kEnableWebSocketOverSpdy))
839 globals_->enable_websocket_over_spdy.set(true); 841 globals_->enable_websocket_over_spdy.set(true);
840 } 842 }
841 843
844 ConfigureTCPFastOpen(command_line);
845
842 // TODO(rch): Make the client socket factory a per-network session 846 // TODO(rch): Make the client socket factory a per-network session
843 // instance, constructed from a NetworkSession::Params, to allow us 847 // instance, constructed from a NetworkSession::Params, to allow us
844 // to move this option to IOThread::Globals & 848 // to move this option to IOThread::Globals &
845 // HttpNetworkSession::Params. 849 // HttpNetworkSession::Params.
850 }
846 851
852 void IOThread::ConfigureTCPFastOpen(const CommandLine& command_line) {
853 const std::string trial_group =
854 base::FieldTrialList::FindFullName(kTCPFastOpenForSSLFieldTrialName);
855 if (trial_group == kTCPFastOpenForSSLFieldTrialName)
856 globals_->enable_tcp_fast_open_for_ssl.set(true);
Randy Smith (Not in Mondays) 2014/09/10 18:57:06 This looks wrong to me--it looks like you're confl
Jana 2014/09/11 20:04:59 Yes, you are right -- I had conflated these things
847 bool always_enable_if_supported = 857 bool always_enable_if_supported =
848 command_line.HasSwitch(switches::kEnableTcpFastOpen); 858 command_line.HasSwitch(switches::kEnableTcpFastOpen);
849 // Check for OS support of TCP FastOpen, and turn it on for all connections 859 // Check for OS support of TCP FastOpen, and turn it on for all connections
850 // if indicated by user. 860 // if indicated by user.
851 net::CheckSupportAndMaybeEnableTCPFastOpen(always_enable_if_supported); 861 net::CheckSupportAndMaybeEnableTCPFastOpen(always_enable_if_supported);
852 } 862 }
853 863
854 void IOThread::ConfigureSpdyFromTrial(const std::string& spdy_trial_group, 864 void IOThread::ConfigureSpdyFromTrial(const std::string& spdy_trial_group,
855 Globals* globals) { 865 Globals* globals) {
856 if (spdy_trial_group == kSpdyFieldTrialHoldbackGroupName) { 866 if (spdy_trial_group == kSpdyFieldTrialHoldbackGroupName) {
857 // TODO(jgraettinger): Use net::NextProtosHttpOnly() instead? 867 // TODO(jgraettinger): Use net::NextProtosHttpOnly() instead?
858 net::HttpStreamFactory::set_spdy_enabled(false); 868 net::HttpStreamFactory::set_spdy_enabled(false);
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
1007 params->http_auth_handler_factory = globals.http_auth_handler_factory.get(); 1017 params->http_auth_handler_factory = globals.http_auth_handler_factory.get();
1008 params->http_server_properties = 1018 params->http_server_properties =
1009 globals.http_server_properties->GetWeakPtr(); 1019 globals.http_server_properties->GetWeakPtr();
1010 params->network_delegate = globals.system_network_delegate.get(); 1020 params->network_delegate = globals.system_network_delegate.get();
1011 params->host_mapping_rules = globals.host_mapping_rules.get(); 1021 params->host_mapping_rules = globals.host_mapping_rules.get();
1012 params->enable_ssl_connect_job_waiting = 1022 params->enable_ssl_connect_job_waiting =
1013 globals.enable_ssl_connect_job_waiting; 1023 globals.enable_ssl_connect_job_waiting;
1014 params->ignore_certificate_errors = globals.ignore_certificate_errors; 1024 params->ignore_certificate_errors = globals.ignore_certificate_errors;
1015 params->testing_fixed_http_port = globals.testing_fixed_http_port; 1025 params->testing_fixed_http_port = globals.testing_fixed_http_port;
1016 params->testing_fixed_https_port = globals.testing_fixed_https_port; 1026 params->testing_fixed_https_port = globals.testing_fixed_https_port;
1027 globals.enable_tcp_fast_open_for_ssl.CopyToIfSet(
1028 &params->enable_tcp_fast_open_for_ssl);
1017 1029
1018 globals.initial_max_spdy_concurrent_streams.CopyToIfSet( 1030 globals.initial_max_spdy_concurrent_streams.CopyToIfSet(
1019 &params->spdy_initial_max_concurrent_streams); 1031 &params->spdy_initial_max_concurrent_streams);
1020 globals.force_spdy_single_domain.CopyToIfSet( 1032 globals.force_spdy_single_domain.CopyToIfSet(
1021 &params->force_spdy_single_domain); 1033 &params->force_spdy_single_domain);
1022 globals.enable_spdy_compression.CopyToIfSet( 1034 globals.enable_spdy_compression.CopyToIfSet(
1023 &params->enable_spdy_compression); 1035 &params->enable_spdy_compression);
1024 globals.enable_spdy_ping_based_connection_checking.CopyToIfSet( 1036 globals.enable_spdy_ping_based_connection_checking.CopyToIfSet(
1025 &params->enable_spdy_ping_based_connection_checking); 1037 &params->enable_spdy_ping_based_connection_checking);
1026 globals.spdy_default_protocol.CopyToIfSet( 1038 globals.spdy_default_protocol.CopyToIfSet(
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
1399 net::QuicVersionVector supported_versions = net::QuicSupportedVersions(); 1411 net::QuicVersionVector supported_versions = net::QuicSupportedVersions();
1400 for (size_t i = 0; i < supported_versions.size(); ++i) { 1412 for (size_t i = 0; i < supported_versions.size(); ++i) {
1401 net::QuicVersion version = supported_versions[i]; 1413 net::QuicVersion version = supported_versions[i];
1402 if (net::QuicVersionToString(version) == quic_version) { 1414 if (net::QuicVersionToString(version) == quic_version) {
1403 return version; 1415 return version;
1404 } 1416 }
1405 } 1417 }
1406 1418
1407 return net::QUIC_VERSION_UNSUPPORTED; 1419 return net::QUIC_VERSION_UNSUPPORTED;
1408 } 1420 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698