| Index: components/network_session_configurator/network_session_configurator.cc
|
| diff --git a/components/network_session_configurator/network_session_configurator.cc b/components/network_session_configurator/network_session_configurator.cc
|
| index 6074c5676ed16bbd9332f2a06f1037f53a890eae..610039523154eb3e0baf5a484bad92f22923c9b2 100644
|
| --- a/components/network_session_configurator/network_session_configurator.cc
|
| +++ b/components/network_session_configurator/network_session_configurator.cc
|
| @@ -5,6 +5,7 @@
|
| #include "components/network_session_configurator/network_session_configurator.h"
|
|
|
| #include <map>
|
| +#include <unordered_set>
|
|
|
| #include "base/metrics/field_trial.h"
|
| #include "base/strings/string_number_conversions.h"
|
| @@ -17,6 +18,7 @@
|
| #include "net/http/http_stream_factory.h"
|
| #include "net/quic/chromium/quic_utils_chromium.h"
|
| #include "net/quic/core/quic_packets.h"
|
| +#include "net/spdy/spdy_protocol.h"
|
| #include "net/url_request/url_fetcher.h"
|
|
|
| namespace {
|
| @@ -53,11 +55,40 @@ void ConfigureTCPFastOpenParams(base::StringPiece tfo_trial_group,
|
| params->enable_tcp_fast_open_for_ssl = true;
|
| }
|
|
|
| +net::SettingsMap GetHttp2Settings(
|
| + const VariationParameters& http2_trial_params) {
|
| + net::SettingsMap http2_settings;
|
| +
|
| + const std::string settings_string =
|
| + GetVariationParam(http2_trial_params, "http2_settings");
|
| +
|
| + base::StringPairs key_value_pairs;
|
| + if (!base::SplitStringIntoKeyValuePairs(settings_string, ':', ',',
|
| + &key_value_pairs)) {
|
| + return http2_settings;
|
| + }
|
| +
|
| + for (auto key_value : key_value_pairs) {
|
| + uint32_t key;
|
| + if (!base::StringToUint(key_value.first, &key))
|
| + continue;
|
| + uint32_t value;
|
| + if (!base::StringToUint(key_value.second, &value))
|
| + continue;
|
| + http2_settings[static_cast<net::SpdySettingsIds>(key)] = value;
|
| + }
|
| +
|
| + return http2_settings;
|
| +}
|
| +
|
| void ConfigureHttp2Params(base::StringPiece http2_trial_group,
|
| + const VariationParameters& http2_trial_params,
|
| net::HttpNetworkSession::Params* params) {
|
| if (http2_trial_group.starts_with(kHttp2FieldTrialDisablePrefix)) {
|
| params->enable_http2 = false;
|
| + return;
|
| }
|
| + params->http2_settings = GetHttp2Settings(http2_trial_params);
|
| }
|
|
|
| bool ShouldEnableQuic(base::StringPiece quic_trial_group,
|
| @@ -211,16 +242,13 @@ int GetQuicPacketReaderYieldAfterDurationMilliseconds(
|
|
|
| bool ShouldQuicRaceCertVerification(
|
| const VariationParameters& quic_trial_params) {
|
| - return base::LowerCaseEqualsASCII(
|
| - GetVariationParam(quic_trial_params, "race_cert_verification"),
|
| - "true");
|
| + return base::LowerCaseEqualsASCII(
|
| + GetVariationParam(quic_trial_params, "race_cert_verification"), "true");
|
| }
|
|
|
| -bool ShouldQuicDoNotFragment(
|
| - const VariationParameters& quic_trial_params) {
|
| - return base::LowerCaseEqualsASCII(
|
| - GetVariationParam(quic_trial_params, "do_not_fragment"),
|
| - "true");
|
| +bool ShouldQuicDoNotFragment(const VariationParameters& quic_trial_params) {
|
| + return base::LowerCaseEqualsASCII(
|
| + GetVariationParam(quic_trial_params, "do_not_fragment"), "true");
|
| }
|
|
|
| bool ShouldQuicDisablePreConnectIfZeroRtt(
|
| @@ -399,7 +427,11 @@ void ParseFieldTrials(bool is_quic_force_disabled,
|
|
|
| std::string http2_trial_group =
|
| base::FieldTrialList::FindFullName(kHttp2FieldTrialName);
|
| - ConfigureHttp2Params(http2_trial_group, params);
|
| + VariationParameters http2_trial_params;
|
| + if (!variations::GetVariationParams(kHttp2FieldTrialName,
|
| + &http2_trial_params))
|
| + http2_trial_params.clear();
|
| + ConfigureHttp2Params(http2_trial_group, http2_trial_params, params);
|
|
|
| const std::string tfo_trial_group =
|
| base::FieldTrialList::FindFullName(kTCPFastOpenFieldTrialName);
|
|
|