| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/omnibox/omnibox_field_trial.h" | 5 #include "chrome/browser/omnibox/omnibox_field_trial.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 CreateTestTrial("AutocompleteDynamicTrial_2", "EnableZeroSuggest_Queries"); | 152 CreateTestTrial("AutocompleteDynamicTrial_2", "EnableZeroSuggest_Queries"); |
| 153 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); | 153 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); |
| 154 | 154 |
| 155 ResetFieldTrialList(); | 155 ResetFieldTrialList(); |
| 156 CreateTestTrial("AutocompleteDynamicTrial_3", "EnableZeroSuggest_URLs"); | 156 CreateTestTrial("AutocompleteDynamicTrial_3", "EnableZeroSuggest_URLs"); |
| 157 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); | 157 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); |
| 158 } | 158 } |
| 159 } | 159 } |
| 160 | 160 |
| 161 TEST_F(OmniboxFieldTrialTest, GetDemotionsByTypeWithFallback) { | 161 TEST_F(OmniboxFieldTrialTest, GetDemotionsByTypeWithFallback) { |
| 162 // Must be the same as kBundledExperimentFieldTrialName | |
| 163 // defined in omnibox_field_trial.cc. | |
| 164 const std::string kTrialName = "OmniboxBundledExperimentV1"; | |
| 165 // Must be the same as kDemoteByTypeRule defined in | |
| 166 // omnibox_field_trial.cc. | |
| 167 const std::string kRuleName = "DemoteByType"; | |
| 168 { | 162 { |
| 169 std::map<std::string, std::string> params; | 163 std::map<std::string, std::string> params; |
| 170 params[kRuleName + ":1:*"] = "1:50,2:0"; | 164 params[std::string(OmniboxFieldTrial::kDemoteByTypeRule) + ":1:*"] = |
| 171 params[kRuleName + ":3:*"] = "5:100"; | 165 "1:50,2:0"; |
| 172 params[kRuleName + ":*:*"] = "1:25"; | 166 params[std::string(OmniboxFieldTrial::kDemoteByTypeRule) + ":3:*"] = |
| 167 "5:100"; |
| 168 params[std::string(OmniboxFieldTrial::kDemoteByTypeRule) + ":*:*"] = "1:25"; |
| 173 ASSERT_TRUE(chrome_variations::AssociateVariationParams( | 169 ASSERT_TRUE(chrome_variations::AssociateVariationParams( |
| 174 kTrialName, "A", params)); | 170 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); |
| 175 } | 171 } |
| 176 base::FieldTrialList::CreateFieldTrial(kTrialName, "A"); | 172 base::FieldTrialList::CreateFieldTrial( |
| 173 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 177 OmniboxFieldTrial::DemotionMultipliers demotions_by_type; | 174 OmniboxFieldTrial::DemotionMultipliers demotions_by_type; |
| 178 OmniboxFieldTrial::GetDemotionsByType( | 175 OmniboxFieldTrial::GetDemotionsByType( |
| 179 AutocompleteInput::NEW_TAB_PAGE, &demotions_by_type); | 176 AutocompleteInput::NEW_TAB_PAGE, &demotions_by_type); |
| 180 ASSERT_EQ(2u, demotions_by_type.size()); | 177 ASSERT_EQ(2u, demotions_by_type.size()); |
| 181 VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_URL, 0.5); | 178 VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_URL, 0.5); |
| 182 VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_TITLE, 0.0); | 179 VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_TITLE, 0.0); |
| 183 OmniboxFieldTrial::GetDemotionsByType( | 180 OmniboxFieldTrial::GetDemotionsByType( |
| 184 AutocompleteInput::HOMEPAGE, &demotions_by_type); | 181 AutocompleteInput::HOMEPAGE, &demotions_by_type); |
| 185 ASSERT_EQ(1u, demotions_by_type.size()); | 182 ASSERT_EQ(1u, demotions_by_type.size()); |
| 186 VerifyDemotion(demotions_by_type, AutocompleteMatchType::NAVSUGGEST, 1.0); | 183 VerifyDemotion(demotions_by_type, AutocompleteMatchType::NAVSUGGEST, 1.0); |
| 187 OmniboxFieldTrial::GetDemotionsByType( | 184 OmniboxFieldTrial::GetDemotionsByType( |
| 188 AutocompleteInput::BLANK, &demotions_by_type); | 185 AutocompleteInput::BLANK, &demotions_by_type); |
| 189 ASSERT_EQ(1u, demotions_by_type.size()); | 186 ASSERT_EQ(1u, demotions_by_type.size()); |
| 190 VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_URL, 0.25); | 187 VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_URL, 0.25); |
| 191 } | 188 } |
| 192 | 189 |
| 193 TEST_F(OmniboxFieldTrialTest, GetValueForRuleInContext) { | 190 TEST_F(OmniboxFieldTrialTest, GetValueForRuleInContext) { |
| 194 // This test starts with Instant Extended off (the default state), then | 191 // This test starts with Instant Extended off (the default state), then |
| 195 // enables Instant Extended and tests again on the same rules. | 192 // enables Instant Extended and tests again on the same rules. |
| 196 | 193 |
| 197 // Must be the same as kBundledExperimentFieldTrialName | |
| 198 // defined in omnibox_field_trial.cc. | |
| 199 const std::string kTrialName = "OmniboxBundledExperimentV1"; | |
| 200 { | 194 { |
| 201 std::map<std::string, std::string> params; | 195 std::map<std::string, std::string> params; |
| 202 // Rule 1 has some exact matches and fallbacks at every level. | 196 // Rule 1 has some exact matches and fallbacks at every level. |
| 203 params["rule1:1:0"] = "rule1-1-0-value"; // NEW_TAB_PAGE | 197 params["rule1:1:0"] = "rule1-1-0-value"; // NEW_TAB_PAGE |
| 204 params["rule1:3:0"] = "rule1-3-0-value"; // HOMEPAGE | 198 params["rule1:3:0"] = "rule1-3-0-value"; // HOMEPAGE |
| 205 params["rule1:4:1"] = "rule1-4-1-value"; // OTHER | 199 params["rule1:4:1"] = "rule1-4-1-value"; // OTHER |
| 206 params["rule1:4:*"] = "rule1-4-*-value"; // OTHER | 200 params["rule1:4:*"] = "rule1-4-*-value"; // OTHER |
| 207 params["rule1:*:1"] = "rule1-*-1-value"; // global | 201 params["rule1:*:1"] = "rule1-*-1-value"; // global |
| 208 params["rule1:*:*"] = "rule1-*-*-value"; // global | 202 params["rule1:*:*"] = "rule1-*-*-value"; // global |
| 209 // Rule 2 has no exact matches but has fallbacks. | 203 // Rule 2 has no exact matches but has fallbacks. |
| 210 params["rule2:*:0"] = "rule2-*-0-value"; // global | 204 params["rule2:*:0"] = "rule2-*-0-value"; // global |
| 211 params["rule2:1:*"] = "rule2-1-*-value"; // NEW_TAB_PAGE | 205 params["rule2:1:*"] = "rule2-1-*-value"; // NEW_TAB_PAGE |
| 212 params["rule2:*:*"] = "rule2-*-*-value"; // global | 206 params["rule2:*:*"] = "rule2-*-*-value"; // global |
| 213 // Rule 3 has only a global fallback. | 207 // Rule 3 has only a global fallback. |
| 214 params["rule3:*:*"] = "rule3-*-*-value"; // global | 208 params["rule3:*:*"] = "rule3-*-*-value"; // global |
| 215 // Rule 4 has an exact match but no fallbacks. | 209 // Rule 4 has an exact match but no fallbacks. |
| 216 params["rule4:4:0"] = "rule4-4-0-value"; // OTHER | 210 params["rule4:4:0"] = "rule4-4-0-value"; // OTHER |
| 217 // Add a malformed rule to make sure it doesn't screw things up. | 211 // Add a malformed rule to make sure it doesn't screw things up. |
| 218 params["unrecognized"] = "unrecognized-value"; | 212 params["unrecognized"] = "unrecognized-value"; |
| 219 ASSERT_TRUE(chrome_variations::AssociateVariationParams( | 213 ASSERT_TRUE(chrome_variations::AssociateVariationParams( |
| 220 kTrialName, "A", params)); | 214 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); |
| 221 } | 215 } |
| 222 | 216 |
| 223 base::FieldTrialList::CreateFieldTrial(kTrialName, "A"); | 217 base::FieldTrialList::CreateFieldTrial( |
| 218 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 224 | 219 |
| 225 // Tests with Instant Extended disabled. | 220 // Tests with Instant Extended disabled. |
| 226 // Tests for rule 1. | 221 // Tests for rule 1. |
| 227 ExpectRuleValue("rule1-1-0-value", | 222 ExpectRuleValue("rule1-1-0-value", |
| 228 "rule1", AutocompleteInput::NEW_TAB_PAGE); // exact match | 223 "rule1", AutocompleteInput::NEW_TAB_PAGE); // exact match |
| 229 ExpectRuleValue("rule1-1-0-value", | 224 ExpectRuleValue("rule1-1-0-value", |
| 230 "rule1", AutocompleteInput::NEW_TAB_PAGE); // exact match | 225 "rule1", AutocompleteInput::NEW_TAB_PAGE); // exact match |
| 231 ExpectRuleValue("rule1-*-*-value", | 226 ExpectRuleValue("rule1-*-*-value", |
| 232 "rule1", AutocompleteInput::BLANK); // fallback to global | 227 "rule1", AutocompleteInput::BLANK); // fallback to global |
| 233 ExpectRuleValue("rule1-3-0-value", | 228 ExpectRuleValue("rule1-3-0-value", |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 ExpectRuleValue("", | 291 ExpectRuleValue("", |
| 297 "rule4", AutocompleteInput::BLANK); // no global fallback | 292 "rule4", AutocompleteInput::BLANK); // no global fallback |
| 298 ExpectRuleValue("", | 293 ExpectRuleValue("", |
| 299 "rule4", AutocompleteInput::HOMEPAGE); // no global fallback | 294 "rule4", AutocompleteInput::HOMEPAGE); // no global fallback |
| 300 | 295 |
| 301 // Tests for rule 5 (a missing rule). | 296 // Tests for rule 5 (a missing rule). |
| 302 ExpectRuleValue("", | 297 ExpectRuleValue("", |
| 303 "rule5", AutocompleteInput::OTHER); // no rule at all | 298 "rule5", AutocompleteInput::OTHER); // no rule at all |
| 304 #endif // !defined(OS_IOS) && !defined(OS_ANDROID) | 299 #endif // !defined(OS_IOS) && !defined(OS_ANDROID) |
| 305 } | 300 } |
| OLD | NEW |