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 |