Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3367)

Unified Diff: chrome/browser/omnibox/omnibox_field_trial_unittest.cc

Issue 22031002: Omnibox: Create DemoteByType Experiment (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix include that caused android build failure Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/omnibox/omnibox_field_trial_unittest.cc
diff --git a/chrome/browser/omnibox/omnibox_field_trial_unittest.cc b/chrome/browser/omnibox/omnibox_field_trial_unittest.cc
index 9ccb00f2fd4c6f03dbff947e78e97d4133687fa2..1d49801b5a7dd5dcdae8d04a90651ce6fa74f50d 100644
--- a/chrome/browser/omnibox/omnibox_field_trial_unittest.cc
+++ b/chrome/browser/omnibox/omnibox_field_trial_unittest.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/omnibox/omnibox_field_trial.h"
#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
#include "base/metrics/field_trial.h"
#include "base/strings/string16.h"
#include "chrome/common/metrics/entropy_provider.h"
@@ -13,24 +14,17 @@
class OmniboxFieldTrialTest : public testing::Test {
public:
- OmniboxFieldTrialTest() {}
-
- static void SetUpTestCase() {
+ OmniboxFieldTrialTest() {
ResetFieldTrialList();
}
- static void TearDownTestCase() {
- delete field_trial_list_;
- field_trial_list_ = NULL;
- }
-
- static void ResetFieldTrialList() {
- // It's important to delete the old pointer first which sets
- // FieldTrialList::global_ to NULL.
- if (field_trial_list_)
- delete field_trial_list_;
- field_trial_list_ = new base::FieldTrialList(
- new metrics::SHA1EntropyProvider("foo"));
+ void ResetFieldTrialList() {
+ // Destroy the existing FieldTrialList before creating a new one to avoid
+ // a DCHECK.
+ field_trial_list_.reset();
+ field_trial_list_.reset(new base::FieldTrialList(
+ new metrics::SHA1EntropyProvider("foo")));
+ chrome_variations::testing::ClearAllVariationParams();
OmniboxFieldTrial::ActivateDynamicTrials();
}
@@ -43,15 +37,28 @@ class OmniboxFieldTrialTest : public testing::Test {
return trial;
}
+ // EXPECTS that demotions[match_type] exists with value expected_value.
+ static void VerifyDemotion(
+ const OmniboxFieldTrial::DemotionMultipliers& demotions,
+ AutocompleteMatchType::Type match_type,
+ float expected_value);
+
private:
- // Needed for Activate{Static/Dynamic}Trials().
- static base::FieldTrialList* field_trial_list_;
+ scoped_ptr<base::FieldTrialList> field_trial_list_;
DISALLOW_COPY_AND_ASSIGN(OmniboxFieldTrialTest);
};
// static
-base::FieldTrialList* OmniboxFieldTrialTest::field_trial_list_ = NULL;
+void OmniboxFieldTrialTest::VerifyDemotion(
+ const OmniboxFieldTrial::DemotionMultipliers& demotions,
+ AutocompleteMatchType::Type match_type,
+ float expected_value) {
+ OmniboxFieldTrial::DemotionMultipliers::const_iterator demotion_it =
+ demotions.find(match_type);
+ ASSERT_TRUE(demotion_it != demotions.end());
+ EXPECT_FLOAT_EQ(expected_value, demotion_it->second);
+}
// Test if GetDisabledProviderTypes() properly parses various field trial
// group names.
@@ -131,6 +138,38 @@ TEST_F(OmniboxFieldTrialTest, ZeroSuggestFieldTrial) {
}
}
+TEST_F(OmniboxFieldTrialTest, GetDemotionsByTypeWithFallback) {
+ // Must be the same as kBundledExperimentFieldTrialName
+ // defined in omnibox_field_trial.cc.
+ const std::string kTrialName = "OmniboxBundledExperimentV1";
+ // Must be the same as kDemoteByTypeRule defined in
+ // omnibox_field_trial.cc.
+ const std::string kRuleName = "DemoteByType";
+ {
+ std::map<std::string, std::string> params;
+ params[kRuleName + ":1"] = "1:50,2:0";
+ params[kRuleName + ":3"] = "5:100";
+ params[kRuleName + ":*"] = "1:25";
+ ASSERT_TRUE(chrome_variations::AssociateVariationParams(
+ kTrialName, "A", params));
+ }
+ base::FieldTrialList::CreateFieldTrial(kTrialName, "A");
+ OmniboxFieldTrial::DemotionMultipliers demotions_by_type;
+ OmniboxFieldTrial::GetDemotionsByType(
+ AutocompleteInput::NEW_TAB_PAGE, &demotions_by_type);
+ ASSERT_EQ(2u, demotions_by_type.size());
+ VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_URL, 0.5);
+ VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_TITLE, 0.0);
+ OmniboxFieldTrial::GetDemotionsByType(
+ AutocompleteInput::HOMEPAGE, &demotions_by_type);
+ ASSERT_EQ(1u, demotions_by_type.size());
+ VerifyDemotion(demotions_by_type, AutocompleteMatchType::NAVSUGGEST, 1.0);
+ OmniboxFieldTrial::GetDemotionsByType(
+ AutocompleteInput::BLANK, &demotions_by_type);
+ ASSERT_EQ(1u, demotions_by_type.size());
+ VerifyDemotion(demotions_by_type, AutocompleteMatchType::HISTORY_URL, 0.25);
+}
+
TEST_F(OmniboxFieldTrialTest, GetValueForRuleInContext) {
// Must be the same as kBundledExperimentFieldTrialName
// defined in omnibox_field_trial.cc.
« no previous file with comments | « chrome/browser/omnibox/omnibox_field_trial.cc ('k') | chrome/common/metrics/variations/variations_associated_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698