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

Unified Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options_unittest.cc

Issue 2887423002: Add an about:flag to support alternative data saver features (Closed)
Patch Set: tbansal nits Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options_unittest.cc
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options_unittest.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options_unittest.cc
index 73a2390391b74e38e2febaf7ebabc8f85a72e4b1..82d2d83f2e37b262787ccf4a5c79769fb73cb670 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options_unittest.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options_unittest.cc
@@ -331,6 +331,56 @@ TEST_F(DataReductionProxyRequestOptionsTest, ParseExperimentsFromFieldTrial) {
}
}
+TEST_F(DataReductionProxyRequestOptionsTest, TestExperimentPrecedence) {
+ // Tests that combinations of configurations that trigger "exp=" directive in
+ // the Chrome-Proxy header have the right precendence, and only append a value
+ // for the highest priority value.
+
+ // Field trial has the lowest priority.
+ std::map<std::string, std::string> server_experiment;
+ server_experiment["exp"] = "foo";
+ ASSERT_TRUE(variations::AssociateVariationParams(
+ params::GetServerExperimentsFieldTrialName(), "enabled",
+ server_experiment));
+
+ base::FieldTrialList field_trial_list(nullptr);
+ base::FieldTrialList::CreateFieldTrial(
+ params::GetServerExperimentsFieldTrialName(), "enabled");
+ std::vector<std::string> expected_experiments;
+ expected_experiments.push_back("foo");
+ std::string expected_header;
+ SetHeaderExpectations(kExpectedSession, kExpectedCredentials, std::string(),
+ kClientStr, kExpectedBuild, kExpectedPatch, kPageId,
+ expected_experiments, &expected_header);
+ CreateRequestOptions(kVersion);
+ VerifyExpectedHeader(expected_header, kPageIdValue);
+
+ // "ignore_preview_blacklist" has the next lowest priority.
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+ switches::kDataReductionProxyLoFi,
+ switches::kDataReductionProxyLoFiValueAlwaysOn);
+ base::CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kEnableDataReductionProxyLitePage);
+ expected_experiments.clear();
+ expected_experiments.push_back(chrome_proxy_lite_page_ignore_blacklist());
+ SetHeaderExpectations(kExpectedSession, kExpectedCredentials, std::string(),
+ kClientStr, kExpectedBuild, kExpectedPatch, kPageId,
+ expected_experiments, &expected_header);
+ CreateRequestOptions(kVersion);
+ VerifyExpectedHeader(expected_header, kPageIdValue);
+
+ // Setting the experiment explicitly has the highest priority.
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
+ data_reduction_proxy::switches::kDataReductionProxyExperiment, "bar");
+ expected_experiments.clear();
+ expected_experiments.push_back("bar");
+ SetHeaderExpectations(kExpectedSession, kExpectedCredentials, std::string(),
+ kClientStr, kExpectedBuild, kExpectedPatch, kPageId,
+ expected_experiments, &expected_header);
+ CreateRequestOptions(kVersion);
+ VerifyExpectedHeader(expected_header, kPageIdValue);
+}
+
TEST_F(DataReductionProxyRequestOptionsTest, GetSessionKeyFromRequestHeaders) {
const struct {
std::string chrome_proxy_header_key;

Powered by Google App Engine
This is Rietveld 408576698