Add a field trial for low priority iframes.
This is a follow up from japhet's http://crrev.com/1195023002
R=japhet
Review URL: https://codereview.chromium.org/1199553003
Cr-Commit-Position: refs/heads/master@{#335514}
diff --git a/chrome/browser/chrome_content_browser_client_unittest.cc b/chrome/browser/chrome_content_browser_client_unittest.cc
index 9e98585cd..a7ace27 100644
--- a/chrome/browser/chrome_content_browser_client_unittest.cc
+++ b/chrome/browser/chrome_content_browser_client_unittest.cc
@@ -149,6 +149,9 @@
class BlinkSettingsFieldTrialTest : public testing::Test {
public:
+ static const char kParserFieldTrialName[];
+ static const char kIFrameFieldTrialName[];
+
BlinkSettingsFieldTrialTest()
: trial_list_(NULL),
command_line_(base::CommandLine::NO_PROGRAM) {}
@@ -162,16 +165,19 @@
variations::testing::ClearAllVariationParams();
}
- void CreateFieldTrial() {
- base::FieldTrialList::CreateFieldTrial(kFieldTrialName, kGroupName);
+ void CreateFieldTrial(const char* trial_name) {
+ base::FieldTrialList::CreateFieldTrial(trial_name, kGroupName);
}
- void CreateFieldTrialWithParams() {
- CreateFieldTrial();
+ void CreateFieldTrialWithParams(
+ const char* trial_name,
+ const char* key1, const char* value1,
+ const char* key2, const char* value2) {
std::map<std::string, std::string> params;
- params.insert(std::make_pair("key1", "value1"));
- params.insert(std::make_pair("key2", "value2"));
- variations::AssociateVariationParams(kFieldTrialName, kGroupName, params);
+ params.insert(std::make_pair(key1, value1));
+ params.insert(std::make_pair(key2, value2));
+ CreateFieldTrial(trial_name);
+ variations::AssociateVariationParams(trial_name, kGroupName, params);
}
void AppendContentBrowserClientSwitches() {
@@ -188,7 +194,6 @@
private:
static const int kFakeChildProcessId = 1;
- static const char kFieldTrialName[];
static const char kGroupName[];
ChromeContentBrowserClient client_;
@@ -198,8 +203,10 @@
content::TestBrowserThreadBundle thread_bundle_;
};
-const char BlinkSettingsFieldTrialTest::kFieldTrialName[] =
+const char BlinkSettingsFieldTrialTest::kParserFieldTrialName[] =
"BackgroundHtmlParserTokenLimits";
+const char BlinkSettingsFieldTrialTest::kIFrameFieldTrialName[] =
+ "LowPriorityIFrames";
const char BlinkSettingsFieldTrialTest::kGroupName[] = "FakeGroup";
TEST_F(BlinkSettingsFieldTrialTest, NoFieldTrial) {
@@ -208,14 +215,15 @@
}
TEST_F(BlinkSettingsFieldTrialTest, FieldTrialWithoutParams) {
- CreateFieldTrial();
+ CreateFieldTrial(kParserFieldTrialName);
AppendContentBrowserClientSwitches();
EXPECT_FALSE(command_line().HasSwitch(switches::kBlinkSettings));
}
TEST_F(BlinkSettingsFieldTrialTest, BlinkSettingsSwitchAlreadySpecified) {
AppendBlinkSettingsSwitch("foo");
- CreateFieldTrialWithParams();
+ CreateFieldTrialWithParams(kParserFieldTrialName,
+ "key1", "value1", "key2", "value2");
AppendContentBrowserClientSwitches();
EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
EXPECT_EQ("foo",
@@ -223,13 +231,36 @@
}
TEST_F(BlinkSettingsFieldTrialTest, FieldTrialEnabled) {
- CreateFieldTrialWithParams();
+ CreateFieldTrialWithParams(kParserFieldTrialName,
+ "key1", "value1", "key2", "value2");
AppendContentBrowserClientSwitches();
EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
EXPECT_EQ("key1=value1,key2=value2",
command_line().GetSwitchValueASCII(switches::kBlinkSettings));
}
+TEST_F(BlinkSettingsFieldTrialTest, MultipleFieldTrialsEnabled) {
+ CreateFieldTrialWithParams(kParserFieldTrialName,
+ "key1", "value1", "key2", "value2");
+ CreateFieldTrialWithParams(kIFrameFieldTrialName,
+ "keyA", "valueA", "keyB", "valueB");
+ AppendContentBrowserClientSwitches();
+ EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
+ EXPECT_EQ("key1=value1,key2=value2,keyA=valueA,keyB=valueB",
+ command_line().GetSwitchValueASCII(switches::kBlinkSettings));
+}
+
+TEST_F(BlinkSettingsFieldTrialTest, MultipleFieldTrialsDuplicateKeys) {
+ CreateFieldTrialWithParams(kParserFieldTrialName,
+ "key1", "value1", "key2", "value2");
+ CreateFieldTrialWithParams(kIFrameFieldTrialName,
+ "key2", "duplicate", "key3", "value3");
+ AppendContentBrowserClientSwitches();
+ EXPECT_TRUE(command_line().HasSwitch(switches::kBlinkSettings));
+ EXPECT_EQ("key1=value1,key2=value2,key2=duplicate,key3=value3",
+ command_line().GetSwitchValueASCII(switches::kBlinkSettings));
+}
+
} // namespace chrome
#if !defined(OS_IOS) && !defined(OS_ANDROID)