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

Unified Diff: components/network_session_configurator/network_session_configurator.cc

Issue 2600973002: Implement HTTP/2 settings field trial parameters. (Closed)
Patch Set: Created 4 years 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 side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698