Chromium Code Reviews| 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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 // EXPECTS that OmniboxFieldTrial::GetSuggestPollingStrategy returns | |
|
H Fung
2014/10/23 17:58:56
EXPECT()s instead of EXPECTS similar to above?
Bart N.
2014/10/23 19:19:58
It was a copy from VerifyDemotion above, which I a
| |
| 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 |