Index: chrome/common/extensions/feature_switch_unittest.cc |
diff --git a/chrome/common/extensions/feature_switch_unittest.cc b/chrome/common/extensions/feature_switch_unittest.cc |
index 91c56335a984b202f45b41affdee8cdb697679f6..1f5e6082fcdc6509e6ee0eba9df080893f4c012e 100644 |
--- a/chrome/common/extensions/feature_switch_unittest.cc |
+++ b/chrome/common/extensions/feature_switch_unittest.cc |
@@ -16,9 +16,10 @@ namespace { |
const char kSwitchName[] = "test-switch"; |
const char kFieldTrialName[] = "field-trial"; |
-// Create and register a field trial that will always return the given |
-// |group_name|. |
-scoped_refptr<base::FieldTrial> CreateFieldTrial( |
+// Create and register a field trial named |field_trial_name| that will always |
+// return the given |group_name|. |
+scoped_refptr<base::FieldTrial> CreateFieldTrialWithName( |
+ const std::string& field_trial_name, |
const std::string& group_name) { |
const int kTotalProbability = 10; |
// Note: This code will probably fail in the year 5000. But all the cycles we |
@@ -26,12 +27,19 @@ scoped_refptr<base::FieldTrial> CreateFieldTrial( |
// worth it. |
scoped_refptr<base::FieldTrial> trial = |
base::FieldTrialList::FactoryGetFieldTrial( |
- kFieldTrialName, kTotalProbability, "default", 5000, 1, 1, |
+ field_trial_name, kTotalProbability, "default", 5000, 1, 1, |
base::FieldTrial::SESSION_RANDOMIZED, nullptr); |
trial->AppendGroup(group_name, kTotalProbability); |
return trial; |
} |
+// Create and register a field trial that will always return the given |
+// |group_name|. |
+scoped_refptr<base::FieldTrial> CreateFieldTrial( |
+ const std::string& group_name) { |
+ return CreateFieldTrialWithName(kFieldTrialName, group_name); |
+} |
+ |
template<FeatureSwitch::DefaultValue T> |
class FeatureSwitchTest : public testing::Test { |
public: |
@@ -156,9 +164,10 @@ TEST_F(FeatureSwitchEnabledTest, TrueFieldTrialValue) { |
scoped_refptr<base::FieldTrial> enabled_trial = CreateFieldTrial("Enabled"); |
{ |
// A default-enabled switch should be enabled (naturally). |
- FeatureSwitch default_enabled_switch(&command_line_, kSwitchName, |
- kFieldTrialName, |
- FeatureSwitch::DEFAULT_ENABLED); |
+ FeatureSwitch default_enabled_switch( |
+ &command_line_, kSwitchName, |
+ std::vector<std::string>(1, kFieldTrialName), |
+ FeatureSwitch::DEFAULT_ENABLED); |
EXPECT_TRUE(default_enabled_switch.IsEnabled()); |
// Scoped overrides override everything. |
FeatureSwitch::ScopedOverride scoped_override(&default_enabled_switch, |
@@ -168,9 +177,10 @@ TEST_F(FeatureSwitchEnabledTest, TrueFieldTrialValue) { |
{ |
// A default-disabled switch should be enabled because of the field trial. |
- FeatureSwitch default_disabled_switch(&command_line_, kSwitchName, |
- kFieldTrialName, |
- FeatureSwitch::DEFAULT_DISABLED); |
+ FeatureSwitch default_disabled_switch( |
+ &command_line_, kSwitchName, |
+ std::vector<std::string>(1, kFieldTrialName), |
+ FeatureSwitch::DEFAULT_DISABLED); |
EXPECT_TRUE(default_disabled_switch.IsEnabled()); |
// Scoped overrides override everything. |
FeatureSwitch::ScopedOverride scoped_override(&default_disabled_switch, |
@@ -185,9 +195,10 @@ TEST_F(FeatureSwitchEnabledTest, FalseFieldTrialValue) { |
scoped_refptr<base::FieldTrial> disabled_trial = CreateFieldTrial("Disabled"); |
{ |
// A default-enabled switch should be disabled because of the field trial. |
- FeatureSwitch default_enabled_switch(&command_line_, kSwitchName, |
- kFieldTrialName, |
- FeatureSwitch::DEFAULT_ENABLED); |
+ FeatureSwitch default_enabled_switch( |
+ &command_line_, kSwitchName, |
+ std::vector<std::string>(1, kFieldTrialName), |
+ FeatureSwitch::DEFAULT_ENABLED); |
EXPECT_FALSE(default_enabled_switch.IsEnabled()); |
// Scoped overrides override everything. |
FeatureSwitch::ScopedOverride scoped_override(&default_enabled_switch, |
@@ -197,9 +208,10 @@ TEST_F(FeatureSwitchEnabledTest, FalseFieldTrialValue) { |
{ |
// A default-disabled switch should remain disabled. |
- FeatureSwitch default_disabled_switch(&command_line_, kSwitchName, |
- kFieldTrialName, |
- FeatureSwitch::DEFAULT_DISABLED); |
+ FeatureSwitch default_disabled_switch( |
+ &command_line_, kSwitchName, |
+ std::vector<std::string>(1, kFieldTrialName), |
+ FeatureSwitch::DEFAULT_DISABLED); |
EXPECT_FALSE(default_disabled_switch.IsEnabled()); |
// Scoped overrides override everything. |
FeatureSwitch::ScopedOverride scoped_override(&default_disabled_switch, |
@@ -207,3 +219,35 @@ TEST_F(FeatureSwitchEnabledTest, FalseFieldTrialValue) { |
EXPECT_TRUE(default_disabled_switch.IsEnabled()); |
} |
} |
+ |
+TEST_F(FeatureSwitchEnabledTest, |
+ TrueFieldTrialValueAndTrueRequiredFieldTrialValue) { |
+ std::vector<std::string> required_trials; |
+ base::FieldTrialList field_trials(nullptr); |
+ scoped_refptr<base::FieldTrial> enabled_trial = CreateFieldTrial("Enabled"); |
+ required_trials.push_back(kFieldTrialName); |
+ const char* required_trial_name = "required-trial"; |
+ scoped_refptr<base::FieldTrial> enabled_required_trial = |
+ CreateFieldTrialWithName(required_trial_name, "Enabled"); |
+ required_trials.push_back(required_trial_name); |
+ FeatureSwitch trial_enabled_switch(&command_line_, kSwitchName, |
+ required_trials, |
+ FeatureSwitch::DEFAULT_DISABLED); |
+ EXPECT_TRUE(trial_enabled_switch.IsEnabled()); |
+} |
+ |
+TEST_F(FeatureSwitchEnabledTest, |
+ TrueFieldTrialValueAndFalseRequiredFieldTrialValue) { |
+ std::vector<std::string> required_trials; |
+ base::FieldTrialList field_trials(nullptr); |
+ scoped_refptr<base::FieldTrial> enabled_trial = CreateFieldTrial("Enabled"); |
+ required_trials.push_back(kFieldTrialName); |
+ const char* required_trial_name = "required-trial"; |
+ scoped_refptr<base::FieldTrial> enabled_required_trial = |
+ CreateFieldTrialWithName(required_trial_name, "Disabled"); |
+ required_trials.push_back(required_trial_name); |
+ FeatureSwitch trial_enabled_switch(&command_line_, kSwitchName, |
+ required_trials, |
+ FeatureSwitch::DEFAULT_DISABLED); |
+ EXPECT_FALSE(trial_enabled_switch.IsEnabled()); |
+} |