| 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 12 matching lines...) Expand all Loading... |
| 23 OmniboxFieldTrialTest() { | 23 OmniboxFieldTrialTest() { |
| 24 ResetFieldTrialList(); | 24 ResetFieldTrialList(); |
| 25 } | 25 } |
| 26 | 26 |
| 27 void ResetFieldTrialList() { | 27 void ResetFieldTrialList() { |
| 28 // Destroy the existing FieldTrialList before creating a new one to avoid | 28 // Destroy the existing FieldTrialList before creating a new one to avoid |
| 29 // a DCHECK. | 29 // a DCHECK. |
| 30 field_trial_list_.reset(); | 30 field_trial_list_.reset(); |
| 31 field_trial_list_.reset(new base::FieldTrialList( | 31 field_trial_list_.reset(new base::FieldTrialList( |
| 32 new metrics::SHA1EntropyProvider("foo"))); | 32 new metrics::SHA1EntropyProvider("foo"))); |
| 33 chrome_variations::testing::ClearAllVariationParams(); | 33 variations::testing::ClearAllVariationParams(); |
| 34 OmniboxFieldTrial::ActivateDynamicTrials(); | 34 OmniboxFieldTrial::ActivateDynamicTrials(); |
| 35 } | 35 } |
| 36 | 36 |
| 37 // Creates and activates a field trial. | 37 // Creates and activates a field trial. |
| 38 static base::FieldTrial* CreateTestTrial(const std::string& name, | 38 static base::FieldTrial* CreateTestTrial(const std::string& name, |
| 39 const std::string& group_name) { | 39 const std::string& group_name) { |
| 40 base::FieldTrial* trial = base::FieldTrialList::CreateFieldTrial( | 40 base::FieldTrial* trial = base::FieldTrialList::CreateFieldTrial( |
| 41 name, group_name); | 41 name, group_name); |
| 42 trial->group(); | 42 trial->group(); |
| 43 return trial; | 43 return trial; |
| 44 } | 44 } |
| 45 | 45 |
| 46 // Add a field trial disabling ZeroSuggest. | 46 // Add a field trial disabling ZeroSuggest. |
| 47 static void CreateDisableZeroSuggestTrial() { | 47 static void CreateDisableZeroSuggestTrial() { |
| 48 std::map<std::string, std::string> params; | 48 std::map<std::string, std::string> params; |
| 49 params[std::string(OmniboxFieldTrial::kZeroSuggestRule)] = "false"; | 49 params[std::string(OmniboxFieldTrial::kZeroSuggestRule)] = "false"; |
| 50 chrome_variations::AssociateVariationParams( | 50 variations::AssociateVariationParams( |
| 51 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params); | 51 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params); |
| 52 base::FieldTrialList::CreateFieldTrial( | 52 base::FieldTrialList::CreateFieldTrial( |
| 53 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); | 53 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 54 } | 54 } |
| 55 | 55 |
| 56 // EXPECTS that demotions[match_type] exists with value expected_value. | 56 // EXPECTS that demotions[match_type] exists with value expected_value. |
| 57 static void VerifyDemotion( | 57 static void VerifyDemotion( |
| 58 const OmniboxFieldTrial::DemotionMultipliers& demotions, | 58 const OmniboxFieldTrial::DemotionMultipliers& demotions, |
| 59 AutocompleteMatchType::Type match_type, | 59 AutocompleteMatchType::Type match_type, |
| 60 float expected_value); | 60 float expected_value); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 ResetFieldTrialList(); | 144 ResetFieldTrialList(); |
| 145 CreateDisableZeroSuggestTrial(); | 145 CreateDisableZeroSuggestTrial(); |
| 146 EXPECT_FALSE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); | 146 EXPECT_FALSE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); |
| 147 } | 147 } |
| 148 | 148 |
| 149 { | 149 { |
| 150 SCOPED_TRACE("Bundled field trial parameters."); | 150 SCOPED_TRACE("Bundled field trial parameters."); |
| 151 ResetFieldTrialList(); | 151 ResetFieldTrialList(); |
| 152 std::map<std::string, std::string> params; | 152 std::map<std::string, std::string> params; |
| 153 params[std::string(OmniboxFieldTrial::kZeroSuggestRule)] = "true"; | 153 params[std::string(OmniboxFieldTrial::kZeroSuggestRule)] = "true"; |
| 154 ASSERT_TRUE(chrome_variations::AssociateVariationParams( | 154 ASSERT_TRUE(variations::AssociateVariationParams( |
| 155 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); | 155 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); |
| 156 base::FieldTrialList::CreateFieldTrial( | 156 base::FieldTrialList::CreateFieldTrial( |
| 157 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); | 157 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 158 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); | 158 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); |
| 159 EXPECT_FALSE(OmniboxFieldTrial::InZeroSuggestMostVisitedFieldTrial()); | 159 EXPECT_FALSE(OmniboxFieldTrial::InZeroSuggestMostVisitedFieldTrial()); |
| 160 EXPECT_FALSE(OmniboxFieldTrial::InZeroSuggestAfterTypingFieldTrial()); | 160 EXPECT_FALSE(OmniboxFieldTrial::InZeroSuggestAfterTypingFieldTrial()); |
| 161 | 161 |
| 162 ResetFieldTrialList(); | 162 ResetFieldTrialList(); |
| 163 params[std::string(OmniboxFieldTrial::kZeroSuggestVariantRule)] = | 163 params[std::string(OmniboxFieldTrial::kZeroSuggestVariantRule)] = |
| 164 "MostVisited"; | 164 "MostVisited"; |
| 165 ASSERT_TRUE(chrome_variations::AssociateVariationParams( | 165 ASSERT_TRUE(variations::AssociateVariationParams( |
| 166 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); | 166 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); |
| 167 base::FieldTrialList::CreateFieldTrial( | 167 base::FieldTrialList::CreateFieldTrial( |
| 168 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); | 168 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 169 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); | 169 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); |
| 170 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestMostVisitedFieldTrial()); | 170 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestMostVisitedFieldTrial()); |
| 171 EXPECT_FALSE(OmniboxFieldTrial::InZeroSuggestAfterTypingFieldTrial()); | 171 EXPECT_FALSE(OmniboxFieldTrial::InZeroSuggestAfterTypingFieldTrial()); |
| 172 | 172 |
| 173 ResetFieldTrialList(); | 173 ResetFieldTrialList(); |
| 174 params[std::string(OmniboxFieldTrial::kZeroSuggestVariantRule)] = | 174 params[std::string(OmniboxFieldTrial::kZeroSuggestVariantRule)] = |
| 175 "AfterTyping"; | 175 "AfterTyping"; |
| 176 base::FieldTrialList::CreateFieldTrial( | 176 base::FieldTrialList::CreateFieldTrial( |
| 177 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); | 177 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 178 ASSERT_TRUE(chrome_variations::AssociateVariationParams( | 178 ASSERT_TRUE(variations::AssociateVariationParams( |
| 179 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); | 179 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); |
| 180 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); | 180 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestFieldTrial()); |
| 181 EXPECT_FALSE(OmniboxFieldTrial::InZeroSuggestMostVisitedFieldTrial()); | 181 EXPECT_FALSE(OmniboxFieldTrial::InZeroSuggestMostVisitedFieldTrial()); |
| 182 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestAfterTypingFieldTrial()); | 182 EXPECT_TRUE(OmniboxFieldTrial::InZeroSuggestAfterTypingFieldTrial()); |
| 183 } | 183 } |
| 184 } | 184 } |
| 185 | 185 |
| 186 TEST_F(OmniboxFieldTrialTest, GetDemotionsByTypeWithFallback) { | 186 TEST_F(OmniboxFieldTrialTest, GetDemotionsByTypeWithFallback) { |
| 187 { | 187 { |
| 188 std::map<std::string, std::string> params; | 188 std::map<std::string, std::string> params; |
| 189 params[std::string(OmniboxFieldTrial::kDemoteByTypeRule) + ":1:*"] = | 189 params[std::string(OmniboxFieldTrial::kDemoteByTypeRule) + ":1:*"] = |
| 190 "1:50,2:0"; | 190 "1:50,2:0"; |
| 191 params[std::string(OmniboxFieldTrial::kDemoteByTypeRule) + ":3:*"] = | 191 params[std::string(OmniboxFieldTrial::kDemoteByTypeRule) + ":3:*"] = |
| 192 "5:100"; | 192 "5:100"; |
| 193 params[std::string(OmniboxFieldTrial::kDemoteByTypeRule) + ":*:*"] = "1:25"; | 193 params[std::string(OmniboxFieldTrial::kDemoteByTypeRule) + ":*:*"] = "1:25"; |
| 194 ASSERT_TRUE(chrome_variations::AssociateVariationParams( | 194 ASSERT_TRUE(variations::AssociateVariationParams( |
| 195 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); | 195 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); |
| 196 } | 196 } |
| 197 base::FieldTrialList::CreateFieldTrial( | 197 base::FieldTrialList::CreateFieldTrial( |
| 198 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); | 198 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 199 OmniboxFieldTrial::DemotionMultipliers demotions_by_type; | 199 OmniboxFieldTrial::DemotionMultipliers demotions_by_type; |
| 200 OmniboxFieldTrial::GetDemotionsByType( | 200 OmniboxFieldTrial::GetDemotionsByType( |
| 201 OmniboxEventProto::NTP, &demotions_by_type); | 201 OmniboxEventProto::NTP, &demotions_by_type); |
| 202 ASSERT_EQ(2u, demotions_by_type.size()); | 202 ASSERT_EQ(2u, demotions_by_type.size()); |
| 203 VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_URL, 0.5); | 203 VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_URL, 0.5); |
| 204 VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_TITLE, 0.0); | 204 VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_TITLE, 0.0); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 225 // Rule 2 has no exact matches but has fallbacks. | 225 // Rule 2 has no exact matches but has fallbacks. |
| 226 params["rule2:*:0"] = "rule2-*-0-value"; // global | 226 params["rule2:*:0"] = "rule2-*-0-value"; // global |
| 227 params["rule2:1:*"] = "rule2-1-*-value"; // NTP | 227 params["rule2:1:*"] = "rule2-1-*-value"; // NTP |
| 228 params["rule2:*:*"] = "rule2-*-*-value"; // global | 228 params["rule2:*:*"] = "rule2-*-*-value"; // global |
| 229 // Rule 3 has only a global fallback. | 229 // Rule 3 has only a global fallback. |
| 230 params["rule3:*:*"] = "rule3-*-*-value"; // global | 230 params["rule3:*:*"] = "rule3-*-*-value"; // global |
| 231 // Rule 4 has an exact match but no fallbacks. | 231 // Rule 4 has an exact match but no fallbacks. |
| 232 params["rule4:4:0"] = "rule4-4-0-value"; // OTHER | 232 params["rule4:4:0"] = "rule4-4-0-value"; // OTHER |
| 233 // Add a malformed rule to make sure it doesn't screw things up. | 233 // Add a malformed rule to make sure it doesn't screw things up. |
| 234 params["unrecognized"] = "unrecognized-value"; | 234 params["unrecognized"] = "unrecognized-value"; |
| 235 ASSERT_TRUE(chrome_variations::AssociateVariationParams( | 235 ASSERT_TRUE(variations::AssociateVariationParams( |
| 236 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); | 236 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); |
| 237 } | 237 } |
| 238 | 238 |
| 239 base::FieldTrialList::CreateFieldTrial( | 239 base::FieldTrialList::CreateFieldTrial( |
| 240 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); | 240 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 241 | 241 |
| 242 if (chrome::IsInstantExtendedAPIEnabled()) { | 242 if (chrome::IsInstantExtendedAPIEnabled()) { |
| 243 // Tests with Instant Extended enabled. | 243 // Tests with Instant Extended enabled. |
| 244 // Tests for rule 1. | 244 // Tests for rule 1. |
| 245 ExpectRuleValue("rule1-4-1-value", | 245 ExpectRuleValue("rule1-4-1-value", |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 params[std::string( | 333 params[std::string( |
| 334 OmniboxFieldTrial::kHUPNewScoringTypedCountScoreBucketsParam)] = | 334 OmniboxFieldTrial::kHUPNewScoringTypedCountScoreBucketsParam)] = |
| 335 "0.2:25,0.1:1001,2.3:777"; | 335 "0.2:25,0.1:1001,2.3:777"; |
| 336 params[std::string( | 336 params[std::string( |
| 337 OmniboxFieldTrial::kHUPNewScoringVisitedCountRelevanceCapParam)] = "11"; | 337 OmniboxFieldTrial::kHUPNewScoringVisitedCountRelevanceCapParam)] = "11"; |
| 338 params[std::string( | 338 params[std::string( |
| 339 OmniboxFieldTrial::kHUPNewScoringVisitedCountHalfLifeTimeParam)] = "31"; | 339 OmniboxFieldTrial::kHUPNewScoringVisitedCountHalfLifeTimeParam)] = "31"; |
| 340 params[std::string( | 340 params[std::string( |
| 341 OmniboxFieldTrial::kHUPNewScoringVisitedCountScoreBucketsParam)] = | 341 OmniboxFieldTrial::kHUPNewScoringVisitedCountScoreBucketsParam)] = |
| 342 "5:300,0:200"; | 342 "5:300,0:200"; |
| 343 ASSERT_TRUE(chrome_variations::AssociateVariationParams( | 343 ASSERT_TRUE(variations::AssociateVariationParams( |
| 344 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); | 344 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); |
| 345 } | 345 } |
| 346 base::FieldTrialList::CreateFieldTrial( | 346 base::FieldTrialList::CreateFieldTrial( |
| 347 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); | 347 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 348 | 348 |
| 349 HUPScoringParams scoring_params; | 349 HUPScoringParams scoring_params; |
| 350 OmniboxFieldTrial::GetExperimentalHUPScoringParams(&scoring_params); | 350 OmniboxFieldTrial::GetExperimentalHUPScoringParams(&scoring_params); |
| 351 EXPECT_TRUE(scoring_params.experimental_scoring_enabled); | 351 EXPECT_TRUE(scoring_params.experimental_scoring_enabled); |
| 352 EXPECT_EQ(56, scoring_params.typed_count_buckets.relevance_cap()); | 352 EXPECT_EQ(56, scoring_params.typed_count_buckets.relevance_cap()); |
| 353 EXPECT_EQ(77, scoring_params.typed_count_buckets.half_life_days()); | 353 EXPECT_EQ(77, scoring_params.typed_count_buckets.half_life_days()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 372 | 372 |
| 373 // No decay by default. | 373 // No decay by default. |
| 374 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(7))); | 374 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(7))); |
| 375 | 375 |
| 376 buckets.set_half_life_days(7); | 376 buckets.set_half_life_days(7); |
| 377 EXPECT_EQ(0.5, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(7))); | 377 EXPECT_EQ(0.5, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(7))); |
| 378 EXPECT_EQ(0.25, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(14))); | 378 EXPECT_EQ(0.25, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(14))); |
| 379 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(0))); | 379 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(0))); |
| 380 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(-1))); | 380 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(-1))); |
| 381 } | 381 } |
| OLD | NEW |