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

Side by Side Diff: base/feature_list_unittest.cc

Issue 1852433005: Convert //base to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase after r384946 Created 4 years, 8 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/feature_list.cc ('k') | base/file_version_info_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "base/feature_list.h" 5 #include "base/feature_list.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/format_macros.h" 12 #include "base/format_macros.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/memory/ptr_util.h"
14 #include "base/metrics/field_trial.h" 15 #include "base/metrics/field_trial.h"
15 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
16 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
17 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
18 19
19 namespace base { 20 namespace base {
20 21
21 namespace { 22 namespace {
22 23
23 const char kFeatureOnByDefaultName[] = "OnByDefault"; 24 const char kFeatureOnByDefaultName[] = "OnByDefault";
(...skipping 11 matching lines...) Expand all
35 FeatureList::SplitFeatureListString(feature_list); 36 FeatureList::SplitFeatureListString(feature_list);
36 std::sort(features.begin(), features.end()); 37 std::sort(features.begin(), features.end());
37 return JoinString(features, ","); 38 return JoinString(features, ",");
38 } 39 }
39 40
40 } // namespace 41 } // namespace
41 42
42 class FeatureListTest : public testing::Test { 43 class FeatureListTest : public testing::Test {
43 public: 44 public:
44 FeatureListTest() : feature_list_(nullptr) { 45 FeatureListTest() : feature_list_(nullptr) {
45 RegisterFeatureListInstance(make_scoped_ptr(new FeatureList)); 46 RegisterFeatureListInstance(WrapUnique(new FeatureList));
46 } 47 }
47 ~FeatureListTest() override { ClearFeatureListInstance(); } 48 ~FeatureListTest() override { ClearFeatureListInstance(); }
48 49
49 void RegisterFeatureListInstance(scoped_ptr<FeatureList> feature_list) { 50 void RegisterFeatureListInstance(std::unique_ptr<FeatureList> feature_list) {
50 FeatureList::ClearInstanceForTesting(); 51 FeatureList::ClearInstanceForTesting();
51 feature_list_ = feature_list.get(); 52 feature_list_ = feature_list.get();
52 FeatureList::SetInstance(std::move(feature_list)); 53 FeatureList::SetInstance(std::move(feature_list));
53 } 54 }
54 void ClearFeatureListInstance() { 55 void ClearFeatureListInstance() {
55 FeatureList::ClearInstanceForTesting(); 56 FeatureList::ClearInstanceForTesting();
56 feature_list_ = nullptr; 57 feature_list_ = nullptr;
57 } 58 }
58 59
59 FeatureList* feature_list() { return feature_list_; } 60 FeatureList* feature_list() { return feature_list_; }
(...skipping 26 matching lines...) Expand all
86 {"OnByDefault", "OnByDefault,OffByDefault", false, false}, 87 {"OnByDefault", "OnByDefault,OffByDefault", false, false},
87 }; 88 };
88 89
89 for (size_t i = 0; i < arraysize(test_cases); ++i) { 90 for (size_t i = 0; i < arraysize(test_cases); ++i) {
90 const auto& test_case = test_cases[i]; 91 const auto& test_case = test_cases[i];
91 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: [%s] [%s]", i, 92 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: [%s] [%s]", i,
92 test_case.enable_features, 93 test_case.enable_features,
93 test_case.disable_features)); 94 test_case.disable_features));
94 95
95 ClearFeatureListInstance(); 96 ClearFeatureListInstance();
96 scoped_ptr<FeatureList> feature_list(new FeatureList); 97 std::unique_ptr<FeatureList> feature_list(new FeatureList);
97 feature_list->InitializeFromCommandLine(test_case.enable_features, 98 feature_list->InitializeFromCommandLine(test_case.enable_features,
98 test_case.disable_features); 99 test_case.disable_features);
99 RegisterFeatureListInstance(std::move(feature_list)); 100 RegisterFeatureListInstance(std::move(feature_list));
100 101
101 EXPECT_EQ(test_case.expected_feature_on_state, 102 EXPECT_EQ(test_case.expected_feature_on_state,
102 FeatureList::IsEnabled(kFeatureOnByDefault)) 103 FeatureList::IsEnabled(kFeatureOnByDefault))
103 << i; 104 << i;
104 EXPECT_EQ(test_case.expected_feature_off_state, 105 EXPECT_EQ(test_case.expected_feature_off_state,
105 FeatureList::IsEnabled(kFeatureOffByDefault)) 106 FeatureList::IsEnabled(kFeatureOffByDefault))
106 << i; 107 << i;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 }; 143 };
143 144
144 FieldTrial::ActiveGroup active_group; 145 FieldTrial::ActiveGroup active_group;
145 for (size_t i = 0; i < arraysize(test_cases); ++i) { 146 for (size_t i = 0; i < arraysize(test_cases); ++i) {
146 const auto& test_case = test_cases[i]; 147 const auto& test_case = test_cases[i];
147 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]", i)); 148 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]", i));
148 149
149 ClearFeatureListInstance(); 150 ClearFeatureListInstance();
150 151
151 FieldTrialList field_trial_list(nullptr); 152 FieldTrialList field_trial_list(nullptr);
152 scoped_ptr<FeatureList> feature_list(new FeatureList); 153 std::unique_ptr<FeatureList> feature_list(new FeatureList);
153 154
154 FieldTrial* trial1 = FieldTrialList::CreateFieldTrial("TrialExample1", "A"); 155 FieldTrial* trial1 = FieldTrialList::CreateFieldTrial("TrialExample1", "A");
155 FieldTrial* trial2 = FieldTrialList::CreateFieldTrial("TrialExample2", "B"); 156 FieldTrial* trial2 = FieldTrialList::CreateFieldTrial("TrialExample2", "B");
156 feature_list->RegisterFieldTrialOverride(kFeatureOnByDefaultName, 157 feature_list->RegisterFieldTrialOverride(kFeatureOnByDefaultName,
157 test_case.trial1_state, trial1); 158 test_case.trial1_state, trial1);
158 feature_list->RegisterFieldTrialOverride(kFeatureOffByDefaultName, 159 feature_list->RegisterFieldTrialOverride(kFeatureOffByDefaultName,
159 test_case.trial2_state, trial2); 160 test_case.trial2_state, trial2);
160 RegisterFeatureListInstance(std::move(feature_list)); 161 RegisterFeatureListInstance(std::move(feature_list));
161 162
162 // Initially, neither trial should be active. 163 // Initially, neither trial should be active.
(...skipping 11 matching lines...) Expand all
174 (test_case.trial2_state == FeatureList::OVERRIDE_ENABLE_FEATURE); 175 (test_case.trial2_state == FeatureList::OVERRIDE_ENABLE_FEATURE);
175 EXPECT_EQ(expected_enabled_2, FeatureList::IsEnabled(kFeatureOffByDefault)); 176 EXPECT_EQ(expected_enabled_2, FeatureList::IsEnabled(kFeatureOffByDefault));
176 // The above should have activated |trial2|. 177 // The above should have activated |trial2|.
177 EXPECT_TRUE(FieldTrialList::IsTrialActive(trial1->trial_name())); 178 EXPECT_TRUE(FieldTrialList::IsTrialActive(trial1->trial_name()));
178 EXPECT_TRUE(FieldTrialList::IsTrialActive(trial2->trial_name())); 179 EXPECT_TRUE(FieldTrialList::IsTrialActive(trial2->trial_name()));
179 } 180 }
180 } 181 }
181 182
182 TEST_F(FeatureListTest, FieldTrialAssociateUseDefault) { 183 TEST_F(FeatureListTest, FieldTrialAssociateUseDefault) {
183 FieldTrialList field_trial_list(nullptr); 184 FieldTrialList field_trial_list(nullptr);
184 scoped_ptr<FeatureList> feature_list(new FeatureList); 185 std::unique_ptr<FeatureList> feature_list(new FeatureList);
185 186
186 FieldTrial* trial1 = FieldTrialList::CreateFieldTrial("TrialExample1", "A"); 187 FieldTrial* trial1 = FieldTrialList::CreateFieldTrial("TrialExample1", "A");
187 FieldTrial* trial2 = FieldTrialList::CreateFieldTrial("TrialExample2", "B"); 188 FieldTrial* trial2 = FieldTrialList::CreateFieldTrial("TrialExample2", "B");
188 feature_list->RegisterFieldTrialOverride( 189 feature_list->RegisterFieldTrialOverride(
189 kFeatureOnByDefaultName, FeatureList::OVERRIDE_USE_DEFAULT, trial1); 190 kFeatureOnByDefaultName, FeatureList::OVERRIDE_USE_DEFAULT, trial1);
190 feature_list->RegisterFieldTrialOverride( 191 feature_list->RegisterFieldTrialOverride(
191 kFeatureOffByDefaultName, FeatureList::OVERRIDE_USE_DEFAULT, trial2); 192 kFeatureOffByDefaultName, FeatureList::OVERRIDE_USE_DEFAULT, trial2);
192 RegisterFeatureListInstance(std::move(feature_list)); 193 RegisterFeatureListInstance(std::move(feature_list));
193 194
194 // Initially, neither trial should be active. 195 // Initially, neither trial should be active.
(...skipping 10 matching lines...) Expand all
205 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault)); 206 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault));
206 // The above should have activated |trial2|. 207 // The above should have activated |trial2|.
207 EXPECT_TRUE(FieldTrialList::IsTrialActive(trial1->trial_name())); 208 EXPECT_TRUE(FieldTrialList::IsTrialActive(trial1->trial_name()));
208 EXPECT_TRUE(FieldTrialList::IsTrialActive(trial2->trial_name())); 209 EXPECT_TRUE(FieldTrialList::IsTrialActive(trial2->trial_name()));
209 } 210 }
210 211
211 TEST_F(FeatureListTest, CommandLineTakesPrecedenceOverFieldTrial) { 212 TEST_F(FeatureListTest, CommandLineTakesPrecedenceOverFieldTrial) {
212 ClearFeatureListInstance(); 213 ClearFeatureListInstance();
213 214
214 FieldTrialList field_trial_list(nullptr); 215 FieldTrialList field_trial_list(nullptr);
215 scoped_ptr<FeatureList> feature_list(new FeatureList); 216 std::unique_ptr<FeatureList> feature_list(new FeatureList);
216 217
217 // The feature is explicitly enabled on the command-line. 218 // The feature is explicitly enabled on the command-line.
218 feature_list->InitializeFromCommandLine(kFeatureOffByDefaultName, ""); 219 feature_list->InitializeFromCommandLine(kFeatureOffByDefaultName, "");
219 220
220 // But the FieldTrial would set the feature to disabled. 221 // But the FieldTrial would set the feature to disabled.
221 FieldTrial* trial = FieldTrialList::CreateFieldTrial("TrialExample2", "A"); 222 FieldTrial* trial = FieldTrialList::CreateFieldTrial("TrialExample2", "A");
222 feature_list->RegisterFieldTrialOverride( 223 feature_list->RegisterFieldTrialOverride(
223 kFeatureOffByDefaultName, FeatureList::OVERRIDE_DISABLE_FEATURE, trial); 224 kFeatureOffByDefaultName, FeatureList::OVERRIDE_DISABLE_FEATURE, trial);
224 RegisterFeatureListInstance(std::move(feature_list)); 225 RegisterFeatureListInstance(std::move(feature_list));
225 226
226 EXPECT_FALSE(FieldTrialList::IsTrialActive(trial->trial_name())); 227 EXPECT_FALSE(FieldTrialList::IsTrialActive(trial->trial_name()));
227 // Command-line should take precedence. 228 // Command-line should take precedence.
228 EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOffByDefault)); 229 EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOffByDefault));
229 // Since the feature is on due to the command-line, and not as a result of the 230 // Since the feature is on due to the command-line, and not as a result of the
230 // field trial, the field trial should not be activated (since the Associate* 231 // field trial, the field trial should not be activated (since the Associate*
231 // API wasn't used.) 232 // API wasn't used.)
232 EXPECT_FALSE(FieldTrialList::IsTrialActive(trial->trial_name())); 233 EXPECT_FALSE(FieldTrialList::IsTrialActive(trial->trial_name()));
233 } 234 }
234 235
235 TEST_F(FeatureListTest, IsFeatureOverriddenFromCommandLine) { 236 TEST_F(FeatureListTest, IsFeatureOverriddenFromCommandLine) {
236 ClearFeatureListInstance(); 237 ClearFeatureListInstance();
237 238
238 FieldTrialList field_trial_list(nullptr); 239 FieldTrialList field_trial_list(nullptr);
239 scoped_ptr<FeatureList> feature_list(new FeatureList); 240 std::unique_ptr<FeatureList> feature_list(new FeatureList);
240 241
241 // No features are overridden from the command line yet 242 // No features are overridden from the command line yet
242 EXPECT_FALSE(feature_list->IsFeatureOverriddenFromCommandLine( 243 EXPECT_FALSE(feature_list->IsFeatureOverriddenFromCommandLine(
243 kFeatureOnByDefaultName, FeatureList::OVERRIDE_DISABLE_FEATURE)); 244 kFeatureOnByDefaultName, FeatureList::OVERRIDE_DISABLE_FEATURE));
244 EXPECT_FALSE(feature_list->IsFeatureOverriddenFromCommandLine( 245 EXPECT_FALSE(feature_list->IsFeatureOverriddenFromCommandLine(
245 kFeatureOnByDefaultName, FeatureList::OVERRIDE_ENABLE_FEATURE)); 246 kFeatureOnByDefaultName, FeatureList::OVERRIDE_ENABLE_FEATURE));
246 EXPECT_FALSE(feature_list->IsFeatureOverriddenFromCommandLine( 247 EXPECT_FALSE(feature_list->IsFeatureOverriddenFromCommandLine(
247 kFeatureOffByDefaultName, FeatureList::OVERRIDE_DISABLE_FEATURE)); 248 kFeatureOffByDefaultName, FeatureList::OVERRIDE_DISABLE_FEATURE));
248 EXPECT_FALSE(feature_list->IsFeatureOverriddenFromCommandLine( 249 EXPECT_FALSE(feature_list->IsFeatureOverriddenFromCommandLine(
249 kFeatureOffByDefaultName, FeatureList::OVERRIDE_ENABLE_FEATURE)); 250 kFeatureOffByDefaultName, FeatureList::OVERRIDE_ENABLE_FEATURE));
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 305
305 for (size_t i = 0; i < arraysize(test_cases); ++i) { 306 for (size_t i = 0; i < arraysize(test_cases); ++i) {
306 const auto& test_case = test_cases[i]; 307 const auto& test_case = test_cases[i];
307 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: [%s] [%s]", i, 308 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: [%s] [%s]", i,
308 test_case.enable_features, 309 test_case.enable_features,
309 test_case.disable_features)); 310 test_case.disable_features));
310 311
311 ClearFeatureListInstance(); 312 ClearFeatureListInstance();
312 313
313 FieldTrialList field_trial_list(nullptr); 314 FieldTrialList field_trial_list(nullptr);
314 scoped_ptr<FeatureList> feature_list(new FeatureList); 315 std::unique_ptr<FeatureList> feature_list(new FeatureList);
315 feature_list->InitializeFromCommandLine(test_case.enable_features, 316 feature_list->InitializeFromCommandLine(test_case.enable_features,
316 test_case.disable_features); 317 test_case.disable_features);
317 318
318 FieldTrial* enable_trial = nullptr; 319 FieldTrial* enable_trial = nullptr;
319 if (feature_list->IsFeatureOverriddenFromCommandLine( 320 if (feature_list->IsFeatureOverriddenFromCommandLine(
320 kFeatureOffByDefaultName, FeatureList::OVERRIDE_ENABLE_FEATURE)) { 321 kFeatureOffByDefaultName, FeatureList::OVERRIDE_ENABLE_FEATURE)) {
321 enable_trial = base::FieldTrialList::CreateFieldTrial(kTrialName, 322 enable_trial = base::FieldTrialList::CreateFieldTrial(kTrialName,
322 kForcedOnGroupName); 323 kForcedOnGroupName);
323 feature_list->AssociateReportingFieldTrial( 324 feature_list->AssociateReportingFieldTrial(
324 kFeatureOffByDefaultName, FeatureList::OVERRIDE_ENABLE_FEATURE, 325 kFeatureOffByDefaultName, FeatureList::OVERRIDE_ENABLE_FEATURE,
(...skipping 22 matching lines...) Expand all
347 EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOffByDefault)); 348 EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOffByDefault));
348 EXPECT_TRUE(FieldTrialList::IsTrialActive(kTrialName)); 349 EXPECT_TRUE(FieldTrialList::IsTrialActive(kTrialName));
349 EXPECT_EQ(kForcedOnGroupName, enable_trial->group_name()); 350 EXPECT_EQ(kForcedOnGroupName, enable_trial->group_name());
350 } 351 }
351 } 352 }
352 } 353 }
353 354
354 TEST_F(FeatureListTest, GetFeatureOverrides) { 355 TEST_F(FeatureListTest, GetFeatureOverrides) {
355 ClearFeatureListInstance(); 356 ClearFeatureListInstance();
356 FieldTrialList field_trial_list(nullptr); 357 FieldTrialList field_trial_list(nullptr);
357 scoped_ptr<FeatureList> feature_list(new FeatureList); 358 std::unique_ptr<FeatureList> feature_list(new FeatureList);
358 feature_list->InitializeFromCommandLine("A,X", "D"); 359 feature_list->InitializeFromCommandLine("A,X", "D");
359 360
360 FieldTrial* trial = FieldTrialList::CreateFieldTrial("Trial", "Group"); 361 FieldTrial* trial = FieldTrialList::CreateFieldTrial("Trial", "Group");
361 feature_list->RegisterFieldTrialOverride(kFeatureOffByDefaultName, 362 feature_list->RegisterFieldTrialOverride(kFeatureOffByDefaultName,
362 FeatureList::OVERRIDE_ENABLE_FEATURE, 363 FeatureList::OVERRIDE_ENABLE_FEATURE,
363 trial); 364 trial);
364 365
365 RegisterFeatureListInstance(std::move(feature_list)); 366 RegisterFeatureListInstance(std::move(feature_list));
366 367
367 std::string enable_features; 368 std::string enable_features;
368 std::string disable_features; 369 std::string disable_features;
369 FeatureList::GetInstance()->GetFeatureOverrides(&enable_features, 370 FeatureList::GetInstance()->GetFeatureOverrides(&enable_features,
370 &disable_features); 371 &disable_features);
371 EXPECT_EQ("A,OffByDefault<Trial,X", SortFeatureListString(enable_features)); 372 EXPECT_EQ("A,OffByDefault<Trial,X", SortFeatureListString(enable_features));
372 EXPECT_EQ("D", SortFeatureListString(disable_features)); 373 EXPECT_EQ("D", SortFeatureListString(disable_features));
373 } 374 }
374 375
375 TEST_F(FeatureListTest, GetFeatureOverrides_UseDefault) { 376 TEST_F(FeatureListTest, GetFeatureOverrides_UseDefault) {
376 ClearFeatureListInstance(); 377 ClearFeatureListInstance();
377 FieldTrialList field_trial_list(nullptr); 378 FieldTrialList field_trial_list(nullptr);
378 scoped_ptr<FeatureList> feature_list(new FeatureList); 379 std::unique_ptr<FeatureList> feature_list(new FeatureList);
379 feature_list->InitializeFromCommandLine("A,X", "D"); 380 feature_list->InitializeFromCommandLine("A,X", "D");
380 381
381 FieldTrial* trial = FieldTrialList::CreateFieldTrial("Trial", "Group"); 382 FieldTrial* trial = FieldTrialList::CreateFieldTrial("Trial", "Group");
382 feature_list->RegisterFieldTrialOverride( 383 feature_list->RegisterFieldTrialOverride(
383 kFeatureOffByDefaultName, FeatureList::OVERRIDE_USE_DEFAULT, trial); 384 kFeatureOffByDefaultName, FeatureList::OVERRIDE_USE_DEFAULT, trial);
384 385
385 RegisterFeatureListInstance(std::move(feature_list)); 386 RegisterFeatureListInstance(std::move(feature_list));
386 387
387 std::string enable_features; 388 std::string enable_features;
388 std::string disable_features; 389 std::string disable_features;
389 FeatureList::GetInstance()->GetFeatureOverrides(&enable_features, 390 FeatureList::GetInstance()->GetFeatureOverrides(&enable_features,
390 &disable_features); 391 &disable_features);
391 EXPECT_EQ("*OffByDefault<Trial,A,X", SortFeatureListString(enable_features)); 392 EXPECT_EQ("*OffByDefault<Trial,A,X", SortFeatureListString(enable_features));
392 EXPECT_EQ("D", SortFeatureListString(disable_features)); 393 EXPECT_EQ("D", SortFeatureListString(disable_features));
393 } 394 }
394 395
395 TEST_F(FeatureListTest, InitializeFromCommandLine_WithFieldTrials) { 396 TEST_F(FeatureListTest, InitializeFromCommandLine_WithFieldTrials) {
396 ClearFeatureListInstance(); 397 ClearFeatureListInstance();
397 FieldTrialList field_trial_list(nullptr); 398 FieldTrialList field_trial_list(nullptr);
398 FieldTrialList::CreateFieldTrial("Trial", "Group"); 399 FieldTrialList::CreateFieldTrial("Trial", "Group");
399 scoped_ptr<FeatureList> feature_list(new FeatureList); 400 std::unique_ptr<FeatureList> feature_list(new FeatureList);
400 feature_list->InitializeFromCommandLine("A,OffByDefault<Trial,X", "D"); 401 feature_list->InitializeFromCommandLine("A,OffByDefault<Trial,X", "D");
401 RegisterFeatureListInstance(std::move(feature_list)); 402 RegisterFeatureListInstance(std::move(feature_list));
402 403
403 EXPECT_FALSE(FieldTrialList::IsTrialActive("Trial")); 404 EXPECT_FALSE(FieldTrialList::IsTrialActive("Trial"));
404 EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOffByDefault)); 405 EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOffByDefault));
405 EXPECT_TRUE(FieldTrialList::IsTrialActive("Trial")); 406 EXPECT_TRUE(FieldTrialList::IsTrialActive("Trial"));
406 } 407 }
407 408
408 TEST_F(FeatureListTest, InitializeFromCommandLine_UseDefault) { 409 TEST_F(FeatureListTest, InitializeFromCommandLine_UseDefault) {
409 ClearFeatureListInstance(); 410 ClearFeatureListInstance();
410 FieldTrialList field_trial_list(nullptr); 411 FieldTrialList field_trial_list(nullptr);
411 FieldTrialList::CreateFieldTrial("T1", "Group"); 412 FieldTrialList::CreateFieldTrial("T1", "Group");
412 FieldTrialList::CreateFieldTrial("T2", "Group"); 413 FieldTrialList::CreateFieldTrial("T2", "Group");
413 scoped_ptr<FeatureList> feature_list(new FeatureList); 414 std::unique_ptr<FeatureList> feature_list(new FeatureList);
414 feature_list->InitializeFromCommandLine( 415 feature_list->InitializeFromCommandLine(
415 "A,*OffByDefault<T1,*OnByDefault<T2,X", "D"); 416 "A,*OffByDefault<T1,*OnByDefault<T2,X", "D");
416 RegisterFeatureListInstance(std::move(feature_list)); 417 RegisterFeatureListInstance(std::move(feature_list));
417 418
418 EXPECT_FALSE(FieldTrialList::IsTrialActive("T1")); 419 EXPECT_FALSE(FieldTrialList::IsTrialActive("T1"));
419 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault)); 420 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault));
420 EXPECT_TRUE(FieldTrialList::IsTrialActive("T1")); 421 EXPECT_TRUE(FieldTrialList::IsTrialActive("T1"));
421 422
422 EXPECT_FALSE(FieldTrialList::IsTrialActive("T2")); 423 EXPECT_FALSE(FieldTrialList::IsTrialActive("T2"));
423 EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOnByDefault)); 424 EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOnByDefault));
424 EXPECT_TRUE(FieldTrialList::IsTrialActive("T2")); 425 EXPECT_TRUE(FieldTrialList::IsTrialActive("T2"));
425 } 426 }
426 427
427 TEST_F(FeatureListTest, InitializeInstance) { 428 TEST_F(FeatureListTest, InitializeInstance) {
428 ClearFeatureListInstance(); 429 ClearFeatureListInstance();
429 430
430 scoped_ptr<base::FeatureList> feature_list(new base::FeatureList); 431 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
431 FeatureList::SetInstance(std::move(feature_list)); 432 FeatureList::SetInstance(std::move(feature_list));
432 EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOnByDefault)); 433 EXPECT_TRUE(FeatureList::IsEnabled(kFeatureOnByDefault));
433 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault)); 434 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault));
434 435
435 // Initialize from command line if we haven't yet. 436 // Initialize from command line if we haven't yet.
436 FeatureList::InitializeInstance("", kFeatureOnByDefaultName); 437 FeatureList::InitializeInstance("", kFeatureOnByDefaultName);
437 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOnByDefault)); 438 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOnByDefault));
438 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault)); 439 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault));
439 440
440 // Do not initialize from commandline if we have already. 441 // Do not initialize from commandline if we have already.
441 FeatureList::InitializeInstance(kFeatureOffByDefaultName, ""); 442 FeatureList::InitializeInstance(kFeatureOffByDefaultName, "");
442 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOnByDefault)); 443 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOnByDefault));
443 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault)); 444 EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault));
444 } 445 }
445 446
446 } // namespace base 447 } // namespace base
OLDNEW
« no previous file with comments | « base/feature_list.cc ('k') | base/file_version_info_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698