OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2016 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 "chrome/browser/origin_trials/origin_trial_controller.h" | |
6 | |
7 #include <string> | |
8 | |
9 #include "base/command_line.h" | |
10 #include "base/memory/scoped_ptr.h" | |
11 #include "chrome/common/chrome_switches.h" | |
12 #include "components/variations/variations_associated_data.h" | |
13 #include "testing/gtest/include/gtest/gtest.h" | |
14 | |
15 const char kFieldTrialGroup[] = "TestGroup"; | |
16 const char kNewPublicKey[] = "dRCs+TocuKkocNKa0AtZ4awrt9XKH2SQCI6o4FY6BNA="; | |
17 | |
18 class OriginTrialControllerTest : public testing::Test { | |
19 protected: | |
20 OriginTrialControllerTest() { | |
21 field_trial_list_.reset( | |
22 new base::FieldTrialList(nullptr /* entropy provider */)); | |
23 variations::testing::ClearAllVariationParams(); | |
24 } | |
25 | |
26 void AddFieldTrial() { | |
27 base::FieldTrialList::CreateFieldTrial( | |
28 OriginTrialController::kFieldTrialName, kFieldTrialGroup); | |
29 } | |
30 | |
31 void AddFieldTrialParam(const char* param_name, const char* param_value) { | |
32 std::map<std::string, std::string> variation_params; | |
33 variation_params[param_name] = param_value; | |
34 ASSERT_TRUE(variations::AssociateVariationParams( | |
35 OriginTrialController::kFieldTrialName, kFieldTrialGroup, | |
36 variation_params)); | |
37 } | |
38 | |
39 void UpdateCommandLine() { | |
40 command_line_.reset(new base::CommandLine(base::CommandLine::NO_PROGRAM)); | |
41 OriginTrialController::UpdateCommandLineFromFieldTrials(command_line()); | |
42 } | |
43 | |
44 base::CommandLine* command_line() { return command_line_.get(); } | |
45 | |
46 private: | |
47 scoped_ptr<base::CommandLine> command_line_; | |
sky
2016/03/03 20:55:30
Why bother with scoped_ptr for either of these?
iclelland
2016/03/07 14:48:19
There's no compelling reason; I can simplify it by
| |
48 scoped_ptr<base::FieldTrialList> field_trial_list_; | |
49 }; | |
sky
2016/03/03 20:55:30
DISALLOW...
iclelland
2016/03/07 14:48:19
Done.
| |
50 | |
51 TEST_F(OriginTrialControllerTest, NoFieldTrial) { | |
52 UpdateCommandLine(); | |
53 EXPECT_FALSE(command_line()->HasSwitch(switches::kOriginTrialPublicKey)); | |
54 } | |
55 | |
56 TEST_F(OriginTrialControllerTest, EmptyFieldTrial) { | |
57 AddFieldTrial(); | |
58 UpdateCommandLine(); | |
59 EXPECT_FALSE(command_line()->HasSwitch(switches::kOriginTrialPublicKey)); | |
60 } | |
61 | |
62 TEST_F(OriginTrialControllerTest, EmptyStringFieldTrial) { | |
63 AddFieldTrial(); | |
64 AddFieldTrialParam(OriginTrialController::kPublicKeyFieldName, ""); | |
65 UpdateCommandLine(); | |
66 EXPECT_FALSE(command_line()->HasSwitch(switches::kOriginTrialPublicKey)); | |
67 } | |
68 | |
69 TEST_F(OriginTrialControllerTest, FieldTrialUpdatesPublicKey) { | |
70 AddFieldTrial(); | |
71 AddFieldTrialParam(OriginTrialController::kPublicKeyFieldName, kNewPublicKey); | |
72 UpdateCommandLine(); | |
73 EXPECT_TRUE(command_line()->HasSwitch(switches::kOriginTrialPublicKey)); | |
74 EXPECT_EQ(kNewPublicKey, command_line()->GetSwitchValueASCII( | |
75 switches::kOriginTrialPublicKey)); | |
76 } | |
OLD | NEW |