Chromium Code Reviews| Index: chrome/browser/omnibox/omnibox_field_trial_unittest.cc |
| diff --git a/chrome/browser/omnibox/omnibox_field_trial_unittest.cc b/chrome/browser/omnibox/omnibox_field_trial_unittest.cc |
| index 1d49801b5a7dd5dcdae8d04a90651ce6fa74f50d..7f4824758298d32d4718b61b061b2330f2bc9a50 100644 |
| --- a/chrome/browser/omnibox/omnibox_field_trial_unittest.cc |
| +++ b/chrome/browser/omnibox/omnibox_field_trial_unittest.cc |
| @@ -5,9 +5,12 @@ |
| #include "chrome/browser/omnibox/omnibox_field_trial.h" |
| #include "base/basictypes.h" |
| +#include "base/command_line.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/metrics/field_trial.h" |
| #include "base/strings/string16.h" |
| +#include "chrome/browser/search/search.h" |
| +#include "chrome/common/chrome_switches.h" |
| #include "chrome/common/metrics/entropy_provider.h" |
| #include "chrome/common/metrics/variations/variations_util.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -147,9 +150,9 @@ TEST_F(OmniboxFieldTrialTest, GetDemotionsByTypeWithFallback) { |
| const std::string kRuleName = "DemoteByType"; |
| { |
| std::map<std::string, std::string> params; |
| - params[kRuleName + ":1"] = "1:50,2:0"; |
| - params[kRuleName + ":3"] = "5:100"; |
| - params[kRuleName + ":*"] = "1:25"; |
| + params[kRuleName + ":1:*"] = "1:50,2:0"; |
| + params[kRuleName + ":3:*"] = "5:100"; |
| + params[kRuleName + ":*:*"] = "1:25"; |
| ASSERT_TRUE(chrome_variations::AssociateVariationParams( |
| kTrialName, "A", params)); |
| } |
| @@ -171,19 +174,29 @@ TEST_F(OmniboxFieldTrialTest, GetDemotionsByTypeWithFallback) { |
| } |
| TEST_F(OmniboxFieldTrialTest, GetValueForRuleInContext) { |
| + // This test starts with Instant Extended off (the default state), then |
| + // enables Instant Extended and tests again on the same rules. |
| + |
| // Must be the same as kBundledExperimentFieldTrialName |
| // defined in omnibox_field_trial.cc. |
| const std::string kTrialName = "OmniboxBundledExperimentV1"; |
| { |
| std::map<std::string, std::string> params; |
| - // Rule 1 has some exact matches and a global fallback. |
| - params["rule1:1"] = "rule1-1-value"; // NEW_TAB_PAGE |
| - params["rule1:3"] = "rule1-3-value"; // HOMEPAGE |
| - params["rule1:*"] = "rule1-*-value"; // global |
| - // Rule 2 has no exact matches but has a global fallback. |
| - params["rule2:*"] = "rule2-*-value"; // global |
| - // Rule 3 has an exact match but no global fallback. |
| - params["rule3:4"] = "rule3-4-value"; // OTHER |
| + // Rule 1 has some exact matches and fallbacks at every level. |
| + params["rule1:1:0"] = "rule1-1-0-value"; // NEW_TAB_PAGE |
| + params["rule1:3:0"] = "rule1-3-0-value"; // HOMEPAGE |
| + params["rule1:4:1"] = "rule1-4-1-value"; // OTHER |
| + params["rule1:4:*"] = "rule1-4-*-value"; // OTHER |
| + params["rule1:*:1"] = "rule1-*-1-value"; // global |
| + params["rule1:*:*"] = "rule1-*-*-value"; // global |
| + // Rule 2 has no exact matches but has fallbacks. |
| + params["rule2:*:0"] = "rule2-*-0-value"; // global |
| + params["rule2:1:*"] = "rule2-1-*-value"; // NEW_TAB_PAGE |
| + params["rule2:*:*"] = "rule2-*-*-value"; // global |
| + // Rule 3 has only a global fallback. |
| + params["rule3:*:*"] = "rule3-*-*-value"; // global |
| + // Rule 4 has an exact match but no fallbacks. |
| + params["rule4:4:0"] = "rule4-4-0-value"; // OTHER |
| // Add a malformed rule to make sure it doesn't screw things up. |
| params["unrecognized"] = "unrecognized-value"; |
| ASSERT_TRUE(chrome_variations::AssociateVariationParams( |
| @@ -192,51 +205,122 @@ TEST_F(OmniboxFieldTrialTest, GetValueForRuleInContext) { |
| base::FieldTrialList::CreateFieldTrial(kTrialName, "A"); |
| + // Tests for Instant Extended is off. |
|
Peter Kasting
2013/08/09 20:45:45
Nit: "Tests with Instant Extended disabled."?
Mark P
2013/08/09 21:55:01
Done.
|
| // Tests for rule 1. |
| EXPECT_EQ( |
| - "rule1-1-value", |
| + "rule1-1-0-value", |
| OmniboxFieldTrial::GetValueForRuleInContext( |
|
Peter Kasting
2013/08/09 20:45:45
Nit: It might be possible to condense this test ca
Mark P
2013/08/09 21:55:01
I wasn't sure either, but I went and tried it and
|
| "rule1", AutocompleteInput::NEW_TAB_PAGE)); // exact match |
|
Peter Kasting
2013/08/09 20:45:45
Nit: In principle, it would be nice if all these E
Mark P
2013/08/09 21:55:01
Done.
|
| EXPECT_EQ( |
| - "rule1-*-value", |
| + "rule1-*-*-value", |
| OmniboxFieldTrial::GetValueForRuleInContext( |
| - "rule1", AutocompleteInput::BLANK)); // fallback to global |
| + "rule1", AutocompleteInput::BLANK)); // fallback to global |
| EXPECT_EQ( |
| - "rule1-3-value", |
| + "rule1-3-0-value", |
| OmniboxFieldTrial::GetValueForRuleInContext( |
| "rule1", AutocompleteInput::HOMEPAGE)); // exact match |
| EXPECT_EQ( |
| - "rule1-*-value", |
| + "rule1-4-*-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule1", AutocompleteInput::OTHER)); // partial fallback |
| + EXPECT_EQ( |
| + "rule1-*-*-value", |
| OmniboxFieldTrial::GetValueForRuleInContext( |
| - "rule1", AutocompleteInput::OTHER)); // fallback to global |
| + "rule1", // fallback to global |
| + AutocompleteInput::SEARCH_RESULT_PAGE_DOING_SEARCH_TERM_REPLACEMENT)); |
| // Tests for rule 2. |
| EXPECT_EQ( |
| - "rule2-*-value", |
| + "rule2-*-0-value", |
| OmniboxFieldTrial::GetValueForRuleInContext( |
| - "rule2", AutocompleteInput::HOMEPAGE)); // fallback to global |
| + "rule2", AutocompleteInput::HOMEPAGE)); // partial fallback |
| EXPECT_EQ( |
| - "rule2-*-value", |
| + "rule2-*-0-value", |
| OmniboxFieldTrial::GetValueForRuleInContext( |
| - "rule2", AutocompleteInput::OTHER)); // fallback to global |
| + "rule2", AutocompleteInput::OTHER)); // partial fallback |
| // Tests for rule 3. |
| EXPECT_EQ( |
| + "rule3-*-*-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule3", AutocompleteInput::HOMEPAGE)); // fallback to global |
| + EXPECT_EQ( |
| + "rule3-*-*-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule3", AutocompleteInput::OTHER)); // fallback to global |
| + |
| + // Tests for rule 4. |
| + EXPECT_EQ( |
| + "", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule4", AutocompleteInput::BLANK)); // no global fallback |
| + EXPECT_EQ( |
| + "", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule4", AutocompleteInput::HOMEPAGE)); // no global fallback |
| + EXPECT_EQ( |
| + "rule4-4-0-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule4", AutocompleteInput::OTHER)); // exact match |
| + |
| + // Tests for rule 5 (a missing rule). |
| + EXPECT_EQ( |
| "", |
| OmniboxFieldTrial::GetValueForRuleInContext( |
| - "rule3", AutocompleteInput::BLANK)); // no global fallback |
| + "rule5", AutocompleteInput::OTHER)); // no rule at all |
| + |
| + // Now change the Instant Extended state and run analogous tests. |
| + chrome::ResetInstantExtendedOptInStateGateForTest(); |
| + CommandLine::ForCurrentProcess()->AppendSwitch( |
| + switches::kEnableInstantExtendedAPI); |
| + |
| + // Tests for rule 1. |
| + EXPECT_EQ( |
| + "rule1-4-1-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule1", AutocompleteInput::OTHER)); // exact match |
| + EXPECT_EQ( |
| + "rule1-*-1-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule1", AutocompleteInput::BLANK)); // partial fallback |
| + EXPECT_EQ( |
| + "rule1-*-1-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule1", AutocompleteInput::NEW_TAB_PAGE)); // partial fallback |
| + |
| + // Tests for rule 2. |
| + EXPECT_EQ( |
| + "rule2-1-*-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule2", AutocompleteInput::NEW_TAB_PAGE)); // partial fallback |
| + EXPECT_EQ( |
| + "rule2-*-*-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule2", AutocompleteInput::OTHER)); // global fallback |
| + |
| + // Tests for rule 3. |
| + EXPECT_EQ( |
| + "rule3-*-*-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule3", AutocompleteInput::HOMEPAGE)); // global fallback |
| + EXPECT_EQ( |
| + "rule3-*-*-value", |
| + OmniboxFieldTrial::GetValueForRuleInContext( |
| + "rule3", AutocompleteInput::OTHER)); // global fallback |
| + |
| + // Tests for rule 4. |
| EXPECT_EQ( |
| "", |
| OmniboxFieldTrial::GetValueForRuleInContext( |
| - "rule3", AutocompleteInput::HOMEPAGE)); // no global fallback |
| + "rule4", AutocompleteInput::BLANK)); // no global fallback |
| EXPECT_EQ( |
| - "rule3-4-value", |
| + "", |
| OmniboxFieldTrial::GetValueForRuleInContext( |
| - "rule3", AutocompleteInput::OTHER)); // exact match |
| + "rule4", AutocompleteInput::HOMEPAGE)); // no global fallback |
| - // Tests for rule 4 (a missing rule). |
| + // Tests for rule 5 (a missing rule). |
| EXPECT_EQ( |
| "", |
| OmniboxFieldTrial::GetValueForRuleInContext( |
| - "rule4", AutocompleteInput::OTHER)); // no rule at all |
| + "rule5", AutocompleteInput::OTHER)); // no rule at all |
| } |