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

Side by Side Diff: base/test/scoped_feature_list_unittest.cc

Issue 2850073002: Revert of Change ScopedFeatureList to overrides FeatureList not reset (Closed)
Patch Set: Created 3 years, 7 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 unified diff | Download patch
« no previous file with comments | « base/test/scoped_feature_list.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/test/scoped_feature_list.h"
6
7 #include <string>
8 #include "base/metrics/field_trial.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace base {
12 namespace test {
13
14 namespace {
15
16 const base::Feature kTestFeature1{"TestFeature1",
17 base::FEATURE_DISABLED_BY_DEFAULT};
18 const base::Feature kTestFeature2{"TestFeature2",
19 base::FEATURE_DISABLED_BY_DEFAULT};
20
21 void ExpectFeatures(const std::string& enabled_features,
22 const std::string& disabled_features) {
23 base::FeatureList* list = base::FeatureList::GetInstance();
24 std::string actual_enabled_features;
25 std::string actual_disabled_features;
26
27 list->GetFeatureOverrides(&actual_enabled_features,
28 &actual_disabled_features);
29
30 EXPECT_EQ(enabled_features, actual_enabled_features);
31 EXPECT_EQ(disabled_features, actual_disabled_features);
32 }
33
34 } // namespace
35
36 class ScopedFeatureListTest : public testing::Test {
37 public:
38 ScopedFeatureListTest() {
39 // Clear default feature list.
40 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
41 feature_list->InitializeFromCommandLine(std::string(), std::string());
42 original_feature_list_ = base::FeatureList::ClearInstanceForTesting();
43 base::FeatureList::SetInstance(std::move(feature_list));
44 }
45
46 ~ScopedFeatureListTest() override {
47 // Restore feature list.
48 if (original_feature_list_) {
49 base::FeatureList::ClearInstanceForTesting();
50 base::FeatureList::RestoreInstanceForTesting(
51 std::move(original_feature_list_));
52 }
53 }
54
55 private:
56 // Save the present FeatureList and restore it after test finish.
57 std::unique_ptr<FeatureList> original_feature_list_;
58
59 DISALLOW_COPY_AND_ASSIGN(ScopedFeatureListTest);
60 };
61
62 TEST_F(ScopedFeatureListTest, BasicScoped) {
63 ExpectFeatures(std::string(), std::string());
64 EXPECT_FALSE(FeatureList::IsEnabled(kTestFeature1));
65 {
66 test::ScopedFeatureList feature_list1;
67 feature_list1.InitFromCommandLine("TestFeature1", std::string());
68 ExpectFeatures("TestFeature1", std::string());
69 EXPECT_TRUE(FeatureList::IsEnabled(kTestFeature1));
70 }
71 ExpectFeatures(std::string(), std::string());
72 EXPECT_FALSE(FeatureList::IsEnabled(kTestFeature1));
73 }
74
75 TEST_F(ScopedFeatureListTest, EnableFeatureOverrideDisable) {
76 test::ScopedFeatureList feature_list1;
77 feature_list1.InitWithFeatures({}, {kTestFeature1});
78
79 {
80 test::ScopedFeatureList feature_list2;
81 feature_list2.InitWithFeatures({kTestFeature1}, {});
82 ExpectFeatures("TestFeature1", std::string());
83 }
84 }
85
86 TEST_F(ScopedFeatureListTest, FeatureOverrideNotMakeDuplicate) {
87 test::ScopedFeatureList feature_list1;
88 feature_list1.InitWithFeatures({}, {kTestFeature1});
89
90 {
91 test::ScopedFeatureList feature_list2;
92 feature_list2.InitWithFeatures({}, {kTestFeature1});
93 ExpectFeatures(std::string(), "TestFeature1");
94 }
95 }
96
97 TEST_F(ScopedFeatureListTest, FeatureOverrideFeatureWithDefault) {
98 test::ScopedFeatureList feature_list1;
99 feature_list1.InitFromCommandLine("*TestFeature1", std::string());
100
101 {
102 test::ScopedFeatureList feature_list2;
103 feature_list2.InitWithFeatures({kTestFeature1}, {});
104 ExpectFeatures("TestFeature1", std::string());
105 }
106 }
107
108 TEST_F(ScopedFeatureListTest, FeatureOverrideFeatureWithDefault2) {
109 test::ScopedFeatureList feature_list1;
110 feature_list1.InitFromCommandLine("*TestFeature1", std::string());
111
112 {
113 test::ScopedFeatureList feature_list2;
114 feature_list2.InitWithFeatures({}, {kTestFeature1});
115 ExpectFeatures(std::string(), "TestFeature1");
116 }
117 }
118
119 TEST_F(ScopedFeatureListTest, FeatureOverrideFeatureWithEnabledFieldTried) {
120 test::ScopedFeatureList feature_list1;
121
122 std::unique_ptr<FeatureList> feature_list(new FeatureList);
123 FieldTrialList field_trial_list(nullptr);
124 FieldTrial* trial = FieldTrialList::CreateFieldTrial("TrialExample", "A");
125 feature_list->RegisterFieldTrialOverride(
126 kTestFeature1.name, FeatureList::OVERRIDE_ENABLE_FEATURE, trial);
127 feature_list1.InitWithFeatureList(std::move(feature_list));
128
129 {
130 test::ScopedFeatureList feature_list2;
131 feature_list2.InitWithFeatures({kTestFeature1}, {});
132 ExpectFeatures("TestFeature1", std::string());
133 }
134 }
135
136 TEST_F(ScopedFeatureListTest, FeatureOverrideFeatureWithDisabledFieldTried) {
137 test::ScopedFeatureList feature_list1;
138
139 std::unique_ptr<FeatureList> feature_list(new FeatureList);
140 FieldTrialList field_trial_list(nullptr);
141 FieldTrial* trial = FieldTrialList::CreateFieldTrial("TrialExample", "A");
142 feature_list->RegisterFieldTrialOverride(
143 kTestFeature1.name, FeatureList::OVERRIDE_DISABLE_FEATURE, trial);
144 feature_list1.InitWithFeatureList(std::move(feature_list));
145
146 {
147 test::ScopedFeatureList feature_list2;
148 feature_list2.InitWithFeatures({kTestFeature1}, {});
149 ExpectFeatures("TestFeature1", std::string());
150 }
151 }
152
153 TEST_F(ScopedFeatureListTest, FeatureOverrideKeepsOtherExistingFeature) {
154 test::ScopedFeatureList feature_list1;
155 feature_list1.InitWithFeatures({}, {kTestFeature1});
156
157 {
158 test::ScopedFeatureList feature_list2;
159 feature_list2.InitWithFeatures({}, {kTestFeature2});
160 EXPECT_FALSE(FeatureList::IsEnabled(kTestFeature1));
161 EXPECT_FALSE(FeatureList::IsEnabled(kTestFeature2));
162 }
163 }
164
165 TEST_F(ScopedFeatureListTest, FeatureOverrideKeepsOtherExistingFeature2) {
166 test::ScopedFeatureList feature_list1;
167 feature_list1.InitWithFeatures({}, {kTestFeature1});
168
169 {
170 test::ScopedFeatureList feature_list2;
171 feature_list2.InitWithFeatures({kTestFeature2}, {});
172 ExpectFeatures("TestFeature2", "TestFeature1");
173 }
174 }
175
176 TEST_F(ScopedFeatureListTest, FeatureOverrideKeepsOtherExistingDefaultFeature) {
177 test::ScopedFeatureList feature_list1;
178 feature_list1.InitFromCommandLine("*TestFeature1", std::string());
179
180 {
181 test::ScopedFeatureList feature_list2;
182 feature_list2.InitWithFeatures({}, {kTestFeature2});
183 ExpectFeatures("*TestFeature1", "TestFeature2");
184 }
185 }
186
187 } // namespace test
188 } // namespace base
OLDNEW
« no previous file with comments | « base/test/scoped_feature_list.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698