OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "components/network_session_configurator/network_session_configurator.h
" | 5 #include "components/network_session_configurator/network_session_configurator.h
" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <unordered_set> | 8 #include <unordered_set> |
9 | 9 |
10 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 const std::string& GetVariationParam( | 42 const std::string& GetVariationParam( |
43 const std::map<std::string, std::string>& params, | 43 const std::map<std::string, std::string>& params, |
44 const std::string& key) { | 44 const std::string& key) { |
45 std::map<std::string, std::string>::const_iterator it = params.find(key); | 45 std::map<std::string, std::string>::const_iterator it = params.find(key); |
46 if (it == params.end()) | 46 if (it == params.end()) |
47 return base::EmptyString(); | 47 return base::EmptyString(); |
48 | 48 |
49 return it->second; | 49 return it->second; |
50 } | 50 } |
51 | 51 |
52 void ConfigureTCPFastOpenParams(base::StringPiece tfo_trial_group, | 52 void ConfigureTCPFastOpenParams( |
53 net::HttpNetworkSession::Params* params) { | 53 base::StringPiece tfo_trial_group, |
| 54 net::URLRequestContextBuilder::HttpNetworkSessionParams* params) { |
54 if (tfo_trial_group == kTCPFastOpenHttpsEnabledGroupName) | 55 if (tfo_trial_group == kTCPFastOpenHttpsEnabledGroupName) |
55 params->enable_tcp_fast_open_for_ssl = true; | 56 params->enable_tcp_fast_open_for_ssl = true; |
56 } | 57 } |
57 | 58 |
58 net::SettingsMap GetHttp2Settings( | 59 net::SettingsMap GetHttp2Settings( |
59 const VariationParameters& http2_trial_params) { | 60 const VariationParameters& http2_trial_params) { |
60 net::SettingsMap http2_settings; | 61 net::SettingsMap http2_settings; |
61 | 62 |
62 const std::string settings_string = | 63 const std::string settings_string = |
63 GetVariationParam(http2_trial_params, "http2_settings"); | 64 GetVariationParam(http2_trial_params, "http2_settings"); |
(...skipping 10 matching lines...) Expand all Loading... |
74 continue; | 75 continue; |
75 uint32_t value; | 76 uint32_t value; |
76 if (!base::StringToUint(key_value.second, &value)) | 77 if (!base::StringToUint(key_value.second, &value)) |
77 continue; | 78 continue; |
78 http2_settings[static_cast<net::SpdySettingsIds>(key)] = value; | 79 http2_settings[static_cast<net::SpdySettingsIds>(key)] = value; |
79 } | 80 } |
80 | 81 |
81 return http2_settings; | 82 return http2_settings; |
82 } | 83 } |
83 | 84 |
84 void ConfigureHttp2Params(base::StringPiece http2_trial_group, | 85 void ConfigureHttp2Params( |
85 const VariationParameters& http2_trial_params, | 86 base::StringPiece http2_trial_group, |
86 net::HttpNetworkSession::Params* params) { | 87 const VariationParameters& http2_trial_params, |
| 88 net::URLRequestContextBuilder::HttpNetworkSessionParams* params) { |
87 if (http2_trial_group.starts_with(kHttp2FieldTrialDisablePrefix)) { | 89 if (http2_trial_group.starts_with(kHttp2FieldTrialDisablePrefix)) { |
88 params->enable_http2 = false; | 90 params->enable_http2 = false; |
89 return; | 91 return; |
90 } | 92 } |
91 params->http2_settings = GetHttp2Settings(http2_trial_params); | 93 params->http2_settings = GetHttp2Settings(http2_trial_params); |
92 } | 94 } |
93 | 95 |
94 bool ShouldEnableQuic(base::StringPiece quic_trial_group, | 96 bool ShouldEnableQuic(base::StringPiece quic_trial_group, |
95 const VariationParameters& quic_trial_params, | 97 const VariationParameters& quic_trial_params, |
96 bool is_quic_force_disabled, | 98 bool is_quic_force_disabled, |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 GetVariationParam(quic_trial_params, "quic_version")); | 235 GetVariationParam(quic_trial_params, "quic_version")); |
234 } | 236 } |
235 | 237 |
236 bool ShouldEnableServerPushCancelation( | 238 bool ShouldEnableServerPushCancelation( |
237 const VariationParameters& quic_trial_params) { | 239 const VariationParameters& quic_trial_params) { |
238 return base::LowerCaseEqualsASCII( | 240 return base::LowerCaseEqualsASCII( |
239 GetVariationParam(quic_trial_params, "enable_server_push_cancellation"), | 241 GetVariationParam(quic_trial_params, "enable_server_push_cancellation"), |
240 "true"); | 242 "true"); |
241 } | 243 } |
242 | 244 |
243 void ConfigureQuicParams(base::StringPiece quic_trial_group, | 245 void ConfigureQuicParams( |
244 const VariationParameters& quic_trial_params, | 246 base::StringPiece quic_trial_group, |
245 bool is_quic_force_disabled, | 247 const VariationParameters& quic_trial_params, |
246 bool is_quic_force_enabled, | 248 bool is_quic_force_disabled, |
247 const std::string& quic_user_agent_id, | 249 bool is_quic_force_enabled, |
248 net::HttpNetworkSession::Params* params) { | 250 const std::string& quic_user_agent_id, |
| 251 net::URLRequestContextBuilder::HttpNetworkSessionParams* params) { |
249 params->enable_quic = ShouldEnableQuic( | 252 params->enable_quic = ShouldEnableQuic( |
250 quic_trial_group, quic_trial_params, is_quic_force_disabled, | 253 quic_trial_group, quic_trial_params, is_quic_force_disabled, |
251 is_quic_force_enabled); | 254 is_quic_force_enabled); |
252 params->mark_quic_broken_when_network_blackholes = | 255 params->mark_quic_broken_when_network_blackholes = |
253 ShouldMarkQuicBrokenWhenNetworkBlackholes(quic_trial_params); | 256 ShouldMarkQuicBrokenWhenNetworkBlackholes(quic_trial_params); |
254 | 257 |
255 params->enable_server_push_cancellation = | 258 params->enable_server_push_cancellation = |
256 ShouldEnableServerPushCancelation(quic_trial_params); | 259 ShouldEnableServerPushCancelation(quic_trial_params); |
257 | 260 |
258 params->retry_without_alt_svc_on_quic_errors = | 261 params->retry_without_alt_svc_on_quic_errors = |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 for (size_t i = 0; i < supported_versions.size(); ++i) { | 323 for (size_t i = 0; i < supported_versions.size(); ++i) { |
321 net::QuicVersion version = supported_versions[i]; | 324 net::QuicVersion version = supported_versions[i]; |
322 if (net::QuicVersionToString(version) == quic_version) { | 325 if (net::QuicVersionToString(version) == quic_version) { |
323 return version; | 326 return version; |
324 } | 327 } |
325 } | 328 } |
326 | 329 |
327 return net::QUIC_VERSION_UNSUPPORTED; | 330 return net::QUIC_VERSION_UNSUPPORTED; |
328 } | 331 } |
329 | 332 |
330 void ParseFieldTrials(bool is_quic_force_disabled, | 333 void ParseFieldTrials( |
331 bool is_quic_force_enabled, | 334 bool is_quic_force_disabled, |
332 const std::string& quic_user_agent_id, | 335 bool is_quic_force_enabled, |
333 net::HttpNetworkSession::Params* params) { | 336 const std::string& quic_user_agent_id, |
| 337 net::URLRequestContextBuilder::HttpNetworkSessionParams* params) { |
334 std::string quic_trial_group = | 338 std::string quic_trial_group = |
335 base::FieldTrialList::FindFullName(kQuicFieldTrialName); | 339 base::FieldTrialList::FindFullName(kQuicFieldTrialName); |
336 VariationParameters quic_trial_params; | 340 VariationParameters quic_trial_params; |
337 if (!variations::GetVariationParams(kQuicFieldTrialName, &quic_trial_params)) | 341 if (!variations::GetVariationParams(kQuicFieldTrialName, &quic_trial_params)) |
338 quic_trial_params.clear(); | 342 quic_trial_params.clear(); |
339 ConfigureQuicParams(quic_trial_group, quic_trial_params, | 343 ConfigureQuicParams(quic_trial_group, quic_trial_params, |
340 is_quic_force_disabled, is_quic_force_enabled, | 344 is_quic_force_disabled, is_quic_force_enabled, |
341 quic_user_agent_id, params); | 345 quic_user_agent_id, params); |
342 | 346 |
343 std::string http2_trial_group = | 347 std::string http2_trial_group = |
344 base::FieldTrialList::FindFullName(kHttp2FieldTrialName); | 348 base::FieldTrialList::FindFullName(kHttp2FieldTrialName); |
345 VariationParameters http2_trial_params; | 349 VariationParameters http2_trial_params; |
346 if (!variations::GetVariationParams(kHttp2FieldTrialName, | 350 if (!variations::GetVariationParams(kHttp2FieldTrialName, |
347 &http2_trial_params)) | 351 &http2_trial_params)) |
348 http2_trial_params.clear(); | 352 http2_trial_params.clear(); |
349 ConfigureHttp2Params(http2_trial_group, http2_trial_params, params); | 353 ConfigureHttp2Params(http2_trial_group, http2_trial_params, params); |
350 | 354 |
351 const std::string tfo_trial_group = | 355 const std::string tfo_trial_group = |
352 base::FieldTrialList::FindFullName(kTCPFastOpenFieldTrialName); | 356 base::FieldTrialList::FindFullName(kTCPFastOpenFieldTrialName); |
353 ConfigureTCPFastOpenParams(tfo_trial_group, params); | 357 ConfigureTCPFastOpenParams(tfo_trial_group, params); |
354 } | 358 } |
355 | 359 |
356 } // namespace network_session_configurator | 360 } // namespace network_session_configurator |
OLD | NEW |