OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/omnibox/omnibox_field_trial.h" | 5 #include "components/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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 // Add a field trial disabling ZeroSuggest. | 45 // Add a field trial disabling ZeroSuggest. |
46 static void CreateDisableZeroSuggestTrial() { | 46 static void CreateDisableZeroSuggestTrial() { |
47 std::map<std::string, std::string> params; | 47 std::map<std::string, std::string> params; |
48 params[std::string(OmniboxFieldTrial::kZeroSuggestRule)] = "false"; | 48 params[std::string(OmniboxFieldTrial::kZeroSuggestRule)] = "false"; |
49 variations::AssociateVariationParams( | 49 variations::AssociateVariationParams( |
50 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params); | 50 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params); |
51 base::FieldTrialList::CreateFieldTrial( | 51 base::FieldTrialList::CreateFieldTrial( |
52 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); | 52 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
53 } | 53 } |
54 | 54 |
55 // EXPECTS that demotions[match_type] exists with value expected_value. | 55 // EXPECT()s that demotions[match_type] exists with value expected_value. |
56 static void VerifyDemotion( | 56 static void VerifyDemotion( |
57 const OmniboxFieldTrial::DemotionMultipliers& demotions, | 57 const OmniboxFieldTrial::DemotionMultipliers& demotions, |
58 AutocompleteMatchType::Type match_type, | 58 AutocompleteMatchType::Type match_type, |
59 float expected_value); | 59 float expected_value); |
60 | 60 |
61 // EXPECT()s that OmniboxFieldTrial::GetValueForRuleInContext(|rule|, | 61 // EXPECT()s that OmniboxFieldTrial::GetValueForRuleInContext(|rule|, |
62 // |page_classification|) returns |rule_value|. | 62 // |page_classification|) returns |rule_value|. |
63 static void ExpectRuleValue( | 63 static void ExpectRuleValue( |
64 const std::string& rule_value, | 64 const std::string& rule_value, |
65 const std::string& rule, | 65 const std::string& rule, |
66 OmniboxEventProto::PageClassification page_classification); | 66 OmniboxEventProto::PageClassification page_classification); |
67 | 67 |
| 68 // EXPECT()s that OmniboxFieldTrial::GetSuggestPollingStrategy returns |
| 69 // |expected_from_last_keystroke| and |expected_delay_ms| for the given |
| 70 // experiment params. If one the rule values is NULL, the corresponding |
| 71 // variation parameter won't be set thus allowing to test the default |
| 72 // behavior. |
| 73 void VerifySuggestPollingStrategy( |
| 74 const char* from_last_keystroke_rule_value, |
| 75 const char* polling_delay_ms_rule_value, |
| 76 bool expected_from_last_keystroke, |
| 77 int expected_delay_ms); |
| 78 |
68 private: | 79 private: |
69 scoped_ptr<base::FieldTrialList> field_trial_list_; | 80 scoped_ptr<base::FieldTrialList> field_trial_list_; |
70 | 81 |
71 DISALLOW_COPY_AND_ASSIGN(OmniboxFieldTrialTest); | 82 DISALLOW_COPY_AND_ASSIGN(OmniboxFieldTrialTest); |
72 }; | 83 }; |
73 | 84 |
74 // static | 85 // static |
75 void OmniboxFieldTrialTest::VerifyDemotion( | 86 void OmniboxFieldTrialTest::VerifyDemotion( |
76 const OmniboxFieldTrial::DemotionMultipliers& demotions, | 87 const OmniboxFieldTrial::DemotionMultipliers& demotions, |
77 AutocompleteMatchType::Type match_type, | 88 AutocompleteMatchType::Type match_type, |
78 float expected_value) { | 89 float expected_value) { |
79 OmniboxFieldTrial::DemotionMultipliers::const_iterator demotion_it = | 90 OmniboxFieldTrial::DemotionMultipliers::const_iterator demotion_it = |
80 demotions.find(match_type); | 91 demotions.find(match_type); |
81 ASSERT_TRUE(demotion_it != demotions.end()); | 92 ASSERT_TRUE(demotion_it != demotions.end()); |
82 EXPECT_FLOAT_EQ(expected_value, demotion_it->second); | 93 EXPECT_FLOAT_EQ(expected_value, demotion_it->second); |
83 } | 94 } |
84 | 95 |
85 // static | 96 // static |
86 void OmniboxFieldTrialTest::ExpectRuleValue( | 97 void OmniboxFieldTrialTest::ExpectRuleValue( |
87 const std::string& rule_value, | 98 const std::string& rule_value, |
88 const std::string& rule, | 99 const std::string& rule, |
89 OmniboxEventProto::PageClassification page_classification) { | 100 OmniboxEventProto::PageClassification page_classification) { |
90 EXPECT_EQ(rule_value, | 101 EXPECT_EQ(rule_value, |
91 OmniboxFieldTrial::GetValueForRuleInContext( | 102 OmniboxFieldTrial::GetValueForRuleInContext( |
92 rule, page_classification)); | 103 rule, page_classification)); |
93 } | 104 } |
94 | 105 |
| 106 void OmniboxFieldTrialTest::VerifySuggestPollingStrategy( |
| 107 const char* from_last_keystroke_rule_value, |
| 108 const char* polling_delay_ms_rule_value, |
| 109 bool expected_from_last_keystroke, |
| 110 int expected_delay_ms) { |
| 111 ResetFieldTrialList(); |
| 112 std::map<std::string, std::string> params; |
| 113 if (from_last_keystroke_rule_value != NULL) { |
| 114 params[std::string( |
| 115 OmniboxFieldTrial::kMeasureSuggestPollingDelayFromLastKeystrokeRule)] = |
| 116 from_last_keystroke_rule_value; |
| 117 } |
| 118 if (polling_delay_ms_rule_value != NULL) { |
| 119 params[std::string( |
| 120 OmniboxFieldTrial::kSuggestPollingDelayMsRule)] = |
| 121 polling_delay_ms_rule_value; |
| 122 } |
| 123 ASSERT_TRUE(variations::AssociateVariationParams( |
| 124 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); |
| 125 base::FieldTrialList::CreateFieldTrial( |
| 126 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 127 |
| 128 bool from_last_keystroke; |
| 129 int delay_ms; |
| 130 OmniboxFieldTrial::GetSuggestPollingStrategy(&from_last_keystroke, &delay_ms); |
| 131 EXPECT_EQ(expected_from_last_keystroke, from_last_keystroke); |
| 132 EXPECT_EQ(expected_delay_ms, delay_ms); |
| 133 } |
| 134 |
95 // Test if GetDisabledProviderTypes() properly parses various field trial | 135 // Test if GetDisabledProviderTypes() properly parses various field trial |
96 // group names. | 136 // group names. |
97 TEST_F(OmniboxFieldTrialTest, GetDisabledProviderTypes) { | 137 TEST_F(OmniboxFieldTrialTest, GetDisabledProviderTypes) { |
98 EXPECT_EQ(0, OmniboxFieldTrial::GetDisabledProviderTypes()); | 138 EXPECT_EQ(0, OmniboxFieldTrial::GetDisabledProviderTypes()); |
99 | 139 |
100 { | 140 { |
101 SCOPED_TRACE("Invalid groups"); | 141 SCOPED_TRACE("Invalid groups"); |
102 CreateTestTrial("AutocompleteDynamicTrial_0", "DisabledProviders_"); | 142 CreateTestTrial("AutocompleteDynamicTrial_0", "DisabledProviders_"); |
103 EXPECT_EQ(0, OmniboxFieldTrial::GetDisabledProviderTypes()); | 143 EXPECT_EQ(0, OmniboxFieldTrial::GetDisabledProviderTypes()); |
104 ResetFieldTrialList(); | 144 ResetFieldTrialList(); |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 | 411 |
372 // No decay by default. | 412 // No decay by default. |
373 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(7))); | 413 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(7))); |
374 | 414 |
375 buckets.set_half_life_days(7); | 415 buckets.set_half_life_days(7); |
376 EXPECT_EQ(0.5, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(7))); | 416 EXPECT_EQ(0.5, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(7))); |
377 EXPECT_EQ(0.25, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(14))); | 417 EXPECT_EQ(0.25, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(14))); |
378 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(0))); | 418 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(0))); |
379 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(-1))); | 419 EXPECT_EQ(1.0, buckets.HalfLifeTimeDecay(base::TimeDelta::FromDays(-1))); |
380 } | 420 } |
| 421 |
| 422 TEST_F(OmniboxFieldTrialTest, DisableResultsCaching) { |
| 423 EXPECT_FALSE(OmniboxFieldTrial::DisableResultsCaching()); |
| 424 |
| 425 { |
| 426 std::map<std::string, std::string> params; |
| 427 params[std::string(OmniboxFieldTrial::kDisableResultsCachingRule)] = "true"; |
| 428 ASSERT_TRUE(variations::AssociateVariationParams( |
| 429 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A", params)); |
| 430 base::FieldTrialList::CreateFieldTrial( |
| 431 OmniboxFieldTrial::kBundledExperimentFieldTrialName, "A"); |
| 432 |
| 433 EXPECT_TRUE(OmniboxFieldTrial::DisableResultsCaching()); |
| 434 } |
| 435 } |
| 436 |
| 437 TEST_F(OmniboxFieldTrialTest, GetSuggestPollingStrategy) { |
| 438 // Invalid params. |
| 439 VerifySuggestPollingStrategy( |
| 440 "", "", false, |
| 441 OmniboxFieldTrial::kDefaultMinimumTimeBetweenSuggestQueriesMs); |
| 442 VerifySuggestPollingStrategy( |
| 443 "foo", "-1", false, |
| 444 OmniboxFieldTrial::kDefaultMinimumTimeBetweenSuggestQueriesMs); |
| 445 VerifySuggestPollingStrategy( |
| 446 "TRUE", "xyz", false, |
| 447 OmniboxFieldTrial::kDefaultMinimumTimeBetweenSuggestQueriesMs); |
| 448 |
| 449 // Default values. |
| 450 VerifySuggestPollingStrategy( |
| 451 NULL, NULL, false, |
| 452 OmniboxFieldTrial::kDefaultMinimumTimeBetweenSuggestQueriesMs); |
| 453 |
| 454 // Valid params. |
| 455 VerifySuggestPollingStrategy("true", "50", true, 50); |
| 456 VerifySuggestPollingStrategy(NULL, "35", false, 35); |
| 457 VerifySuggestPollingStrategy( |
| 458 "true", NULL, true, |
| 459 OmniboxFieldTrial::kDefaultMinimumTimeBetweenSuggestQueriesMs); |
| 460 } |
OLD | NEW |