// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/omnibox/omnibox_field_trial.h" #include "base/basictypes.h" #include "base/metrics/field_trial.h" #include "base/string16.h" #include "chrome/common/metrics/entropy_provider.h" #include "testing/gtest/include/gtest/gtest.h" class OmniboxFieldTrialTest : public testing::Test { public: OmniboxFieldTrialTest() {} static void SetUpTestCase() { 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")); OmniboxFieldTrial::ActivateDynamicTrials(); } // Creates and activates a field trial. static base::FieldTrial* CreateTestTrial(const std::string& name, const std::string& group_name) { base::FieldTrial* trial = base::FieldTrialList::CreateFieldTrial( name, group_name); trial->group(); return trial; } private: // Needed for Activate{Static/Dynamic}Trials(). static base::FieldTrialList* field_trial_list_; DISALLOW_COPY_AND_ASSIGN(OmniboxFieldTrialTest); }; // static base::FieldTrialList* OmniboxFieldTrialTest::field_trial_list_ = NULL; // Test if GetDisabledProviderTypes() properly parses various field trial // group names. TEST_F(OmniboxFieldTrialTest, GetDisabledProviderTypes) { EXPECT_EQ(0, OmniboxFieldTrial::GetDisabledProviderTypes()); { SCOPED_TRACE("Invalid groups"); CreateTestTrial("AutocompleteDynamicTrial_0", "DisabledProviders_"); EXPECT_EQ(0, OmniboxFieldTrial::GetDisabledProviderTypes()); ResetFieldTrialList(); CreateTestTrial("AutocompleteDynamicTrial_1", "DisabledProviders_XXX"); EXPECT_EQ(0, OmniboxFieldTrial::GetDisabledProviderTypes()); ResetFieldTrialList(); CreateTestTrial("AutocompleteDynamicTrial_1", "DisabledProviders_12abc"); EXPECT_EQ(0, OmniboxFieldTrial::GetDisabledProviderTypes()); } { SCOPED_TRACE("Valid group name, unsupported trial name."); ResetFieldTrialList(); CreateTestTrial("UnsupportedTrialName", "DisabledProviders_20"); EXPECT_EQ(0, OmniboxFieldTrial::GetDisabledProviderTypes()); } { SCOPED_TRACE("Valid field and group name."); ResetFieldTrialList(); CreateTestTrial("AutocompleteDynamicTrial_2", "DisabledProviders_3"); EXPECT_EQ(3, OmniboxFieldTrial::GetDisabledProviderTypes()); // Two groups should be OR-ed together. CreateTestTrial("AutocompleteDynamicTrial_3", "DisabledProviders_6"); EXPECT_EQ(7, OmniboxFieldTrial::GetDisabledProviderTypes()); } }