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..9e113a5d728c0def6290d734cd7f2051ed23625c 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" |
@@ -43,6 +46,13 @@ class OmniboxFieldTrialTest : public testing::Test { |
AutocompleteMatchType::Type match_type, |
float expected_value); |
+ // EXPECT()s that OmniboxFieldTrial::GetValueForRuleInContext(|rule|, |
+ // |page_classification|) returns |rule_value|. |
+ static void ExpectRuleValue( |
+ const std::string& rule_value, |
+ const std::string& rule, |
+ AutocompleteInput::PageClassification page_classification); |
+ |
private: |
scoped_ptr<base::FieldTrialList> field_trial_list_; |
@@ -60,6 +70,16 @@ void OmniboxFieldTrialTest::VerifyDemotion( |
EXPECT_FLOAT_EQ(expected_value, demotion_it->second); |
} |
+// static |
+void OmniboxFieldTrialTest::ExpectRuleValue( |
+ const std::string& rule_value, |
+ const std::string& rule, |
+ AutocompleteInput::PageClassification page_classification) { |
+ EXPECT_EQ(rule_value, |
+ OmniboxFieldTrial::GetValueForRuleInContext( |
+ rule, page_classification)); |
+} |
+ |
// Test if GetDisabledProviderTypes() properly parses various field trial |
// group names. |
TEST_F(OmniboxFieldTrialTest, GetDisabledProviderTypes) { |
@@ -147,9 +167,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 +191,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 +222,84 @@ TEST_F(OmniboxFieldTrialTest, GetValueForRuleInContext) { |
base::FieldTrialList::CreateFieldTrial(kTrialName, "A"); |
+ // Tests with Instant Extended disabled. |
// Tests for rule 1. |
- EXPECT_EQ( |
- "rule1-1-value", |
- OmniboxFieldTrial::GetValueForRuleInContext( |
- "rule1", AutocompleteInput::NEW_TAB_PAGE)); // exact match |
- EXPECT_EQ( |
- "rule1-*-value", |
- OmniboxFieldTrial::GetValueForRuleInContext( |
- "rule1", AutocompleteInput::BLANK)); // fallback to global |
- EXPECT_EQ( |
- "rule1-3-value", |
- OmniboxFieldTrial::GetValueForRuleInContext( |
- "rule1", AutocompleteInput::HOMEPAGE)); // exact match |
- EXPECT_EQ( |
- "rule1-*-value", |
- OmniboxFieldTrial::GetValueForRuleInContext( |
- "rule1", AutocompleteInput::OTHER)); // fallback to global |
+ ExpectRuleValue("rule1-1-0-value", |
+ "rule1", AutocompleteInput::NEW_TAB_PAGE); // exact match |
+ ExpectRuleValue("rule1-1-0-value", |
+ "rule1", AutocompleteInput::NEW_TAB_PAGE); // exact match |
+ ExpectRuleValue("rule1-*-*-value", |
+ "rule1", AutocompleteInput::BLANK); // fallback to global |
+ ExpectRuleValue("rule1-3-0-value", |
+ "rule1", AutocompleteInput::HOMEPAGE); // exact match |
+ ExpectRuleValue("rule1-4-*-value", |
+ "rule1", AutocompleteInput::OTHER); // partial fallback |
+ ExpectRuleValue("rule1-*-*-value", |
+ "rule1", |
+ AutocompleteInput:: // fallback to global |
+ SEARCH_RESULT_PAGE_DOING_SEARCH_TERM_REPLACEMENT); |
+ // Tests for rule 2. |
+ ExpectRuleValue("rule2-*-0-value", |
+ "rule2", AutocompleteInput::HOMEPAGE); // partial fallback |
+ ExpectRuleValue("rule2-*-0-value", |
+ "rule2", AutocompleteInput::OTHER); // partial fallback |
+ |
+ // Tests for rule 3. |
+ ExpectRuleValue("rule3-*-*-value", |
+ "rule3", AutocompleteInput::HOMEPAGE); // fallback to global |
+ ExpectRuleValue("rule3-*-*-value", |
+ "rule3", AutocompleteInput::OTHER); // fallback to global |
+ |
+ // Tests for rule 4. |
+ ExpectRuleValue("", |
+ "rule4", AutocompleteInput::BLANK); // no global fallback |
+ ExpectRuleValue("", |
+ "rule4", AutocompleteInput::HOMEPAGE); // no global fallback |
+ ExpectRuleValue("rule4-4-0-value", |
+ "rule4", AutocompleteInput::OTHER); // exact match |
+ |
+ // Tests for rule 5 (a missing rule). |
+ ExpectRuleValue("", |
+ "rule5", AutocompleteInput::OTHER); // no rule at all |
+ |
+ // Now change the Instant Extended state and run analogous tests. |
+ // Instant Extended only works on non-mobile platforms. |
+#if !defined(OS_IOS) && !defined(OS_ANDROID) |
+ chrome::ResetInstantExtendedOptInStateGateForTest(); |
+ CommandLine::ForCurrentProcess()->AppendSwitch( |
+ switches::kEnableInstantExtendedAPI); |
+ |
+ // Tests with Instant Extended enabled. |
+ // Tests for rule 1. |
+ ExpectRuleValue("rule1-4-1-value", |
+ "rule1", AutocompleteInput::OTHER); // exact match |
+ ExpectRuleValue("rule1-*-1-value", |
+ "rule1", AutocompleteInput::BLANK); // partial fallback |
+ ExpectRuleValue("rule1-*-1-value", |
+ "rule1", |
+ AutocompleteInput::NEW_TAB_PAGE); // partial fallback |
// Tests for rule 2. |
- EXPECT_EQ( |
- "rule2-*-value", |
- OmniboxFieldTrial::GetValueForRuleInContext( |
- "rule2", AutocompleteInput::HOMEPAGE)); // fallback to global |
- EXPECT_EQ( |
- "rule2-*-value", |
- OmniboxFieldTrial::GetValueForRuleInContext( |
- "rule2", AutocompleteInput::OTHER)); // fallback to global |
+ ExpectRuleValue("rule2-1-*-value", |
+ "rule2", |
+ AutocompleteInput::NEW_TAB_PAGE); // partial fallback |
+ ExpectRuleValue("rule2-*-*-value", |
+ "rule2", AutocompleteInput::OTHER); // global fallback |
// Tests for rule 3. |
- EXPECT_EQ( |
- "", |
- OmniboxFieldTrial::GetValueForRuleInContext( |
- "rule3", AutocompleteInput::BLANK)); // no global fallback |
- EXPECT_EQ( |
- "", |
- OmniboxFieldTrial::GetValueForRuleInContext( |
- "rule3", AutocompleteInput::HOMEPAGE)); // no global fallback |
- EXPECT_EQ( |
- "rule3-4-value", |
- OmniboxFieldTrial::GetValueForRuleInContext( |
- "rule3", AutocompleteInput::OTHER)); // exact match |
- |
- // Tests for rule 4 (a missing rule). |
- EXPECT_EQ( |
- "", |
- OmniboxFieldTrial::GetValueForRuleInContext( |
- "rule4", AutocompleteInput::OTHER)); // no rule at all |
+ ExpectRuleValue("rule3-*-*-value", |
+ "rule3", AutocompleteInput::HOMEPAGE); // global fallback |
+ ExpectRuleValue("rule3-*-*-value", |
+ "rule3", AutocompleteInput::OTHER); // global fallback |
+ |
+ // Tests for rule 4. |
+ ExpectRuleValue("", |
+ "rule4", AutocompleteInput::BLANK); // no global fallback |
+ ExpectRuleValue("", |
+ "rule4", AutocompleteInput::HOMEPAGE); // no global fallback |
+ |
+ // Tests for rule 5 (a missing rule). |
+ ExpectRuleValue("", |
+ "rule5", AutocompleteInput::OTHER); // no rule at all |
+#endif // !defined(OS_IOS) && !defined(OS_ANDROID) |
} |