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

Side by Side Diff: chrome/browser/sessions/restore_on_startup_policy_handler_unittest.cc

Issue 1940153002: Use std::unique_ptr to express ownership of base::Value in PolicyMap::Entry (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: another-fix Created 4 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/sessions/restore_on_startup_policy_handler.h" 5 #include "chrome/browser/sessions/restore_on_startup_policy_handler.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <utility>
9 10
10 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
12 #include "base/memory/ptr_util.h"
11 #include "base/strings/string_number_conversions.h" 13 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
13 #include "base/values.h" 15 #include "base/values.h"
14 #include "chrome/browser/prefs/session_startup_pref.h" 16 #include "chrome/browser/prefs/session_startup_pref.h"
15 #include "chrome/common/pref_names.h" 17 #include "chrome/common/pref_names.h"
16 #include "components/policy/core/browser/configuration_policy_handler.h" 18 #include "components/policy/core/browser/configuration_policy_handler.h"
17 #include "components/policy/core/browser/policy_error_map.h" 19 #include "components/policy/core/browser/policy_error_map.h"
18 #include "components/policy/core/common/policy_map.h" 20 #include "components/policy/core/common/policy_map.h"
19 #include "components/policy/core/common/policy_types.h" 21 #include "components/policy/core/common/policy_types.h"
20 #include "components/prefs/pref_value_map.h" 22 #include "components/prefs/pref_value_map.h"
21 #include "grit/components_strings.h" 23 #include "grit/components_strings.h"
22 #include "policy/policy_constants.h" 24 #include "policy/policy_constants.h"
23 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
24 #include "ui/base/l10n/l10n_util.h" 26 #include "ui/base/l10n/l10n_util.h"
25 27
26 namespace policy { 28 namespace policy {
27 29
28 class RestoreOnStartupPolicyHandlerTest : public testing::Test { 30 class RestoreOnStartupPolicyHandlerTest : public testing::Test {
29 protected: 31 protected:
30 void SetPolicyValue(const std::string& policy, base::Value* value) { 32 void SetPolicyValue(const std::string& policy,
31 policies_.Set( 33 std::unique_ptr<base::Value> value) {
32 policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, 34 policies_.Set(policy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
33 value, nullptr); 35 POLICY_SOURCE_CLOUD, std::move(value), nullptr);
34 } 36 }
35 bool CheckPolicySettings() { 37 bool CheckPolicySettings() {
36 return handler_.CheckPolicySettings(policies_, &errors_); 38 return handler_.CheckPolicySettings(policies_, &errors_);
37 } 39 }
38 void ApplyPolicySettings() { 40 void ApplyPolicySettings() {
39 handler_.ApplyPolicySettings(policies_, &prefs_); 41 handler_.ApplyPolicySettings(policies_, &prefs_);
40 } 42 }
41 PolicyErrorMap& errors() { return errors_; } 43 PolicyErrorMap& errors() { return errors_; }
42 PrefValueMap& prefs() { return prefs_; } 44 PrefValueMap& prefs() { return prefs_; }
43 45
44 private: 46 private:
45 PolicyMap policies_; 47 PolicyMap policies_;
46 PolicyErrorMap errors_; 48 PolicyErrorMap errors_;
47 PrefValueMap prefs_; 49 PrefValueMap prefs_;
48 RestoreOnStartupPolicyHandler handler_; 50 RestoreOnStartupPolicyHandler handler_;
49 }; 51 };
50 52
51 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_FailsTypeCheck) { 53 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_FailsTypeCheck) {
52 // Handler expects an int; pass it a bool. 54 // Handler expects an int; pass it a bool.
53 SetPolicyValue(key::kRestoreOnStartup, new base::FundamentalValue(false)); 55 SetPolicyValue(key::kRestoreOnStartup,
56 base::WrapUnique(new base::FundamentalValue(false)));
54 // Checking should fail and add an error to the error map. 57 // Checking should fail and add an error to the error map.
55 EXPECT_FALSE(CheckPolicySettings()); 58 EXPECT_FALSE(CheckPolicySettings());
56 EXPECT_EQ(1U, errors().size()); 59 EXPECT_EQ(1U, errors().size());
57 EXPECT_EQ(l10n_util::GetStringFUTF16( 60 EXPECT_EQ(l10n_util::GetStringFUTF16(
58 IDS_POLICY_TYPE_ERROR, 61 IDS_POLICY_TYPE_ERROR,
59 base::ASCIIToUTF16( 62 base::ASCIIToUTF16(
60 ConfigurationPolicyHandler::ValueTypeToString( 63 ConfigurationPolicyHandler::ValueTypeToString(
61 base::Value::TYPE_INTEGER))), 64 base::Value::TYPE_INTEGER))),
62 errors().begin()->second); 65 errors().begin()->second);
63 } 66 }
64 67
65 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_Unspecified) { 68 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_Unspecified) {
66 // Don't specify a value for the policy. 69 // Don't specify a value for the policy.
67 // Checking should succeed with no errors. 70 // Checking should succeed with no errors.
68 EXPECT_TRUE(CheckPolicySettings()); 71 EXPECT_TRUE(CheckPolicySettings());
69 EXPECT_EQ(0U, errors().size()); 72 EXPECT_EQ(0U, errors().size());
70 } 73 }
71 74
72 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_UnknownValue) { 75 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_UnknownValue) {
73 // Specify an unknown value for the policy. 76 // Specify an unknown value for the policy.
74 int impossible_value = SessionStartupPref::kPrefValueLast + 77 int impossible_value = SessionStartupPref::kPrefValueLast +
75 SessionStartupPref::kPrefValueURLs + 78 SessionStartupPref::kPrefValueURLs +
76 SessionStartupPref::kPrefValueNewTab; 79 SessionStartupPref::kPrefValueNewTab;
77 SetPolicyValue(key::kRestoreOnStartup, 80 SetPolicyValue(
78 new base::FundamentalValue(impossible_value)); 81 key::kRestoreOnStartup,
82 base::WrapUnique(new base::FundamentalValue(impossible_value)));
79 // Checking should succeed but add an error to the error map. 83 // Checking should succeed but add an error to the error map.
80 EXPECT_TRUE(CheckPolicySettings()); 84 EXPECT_TRUE(CheckPolicySettings());
81 EXPECT_EQ(1U, errors().size()); 85 EXPECT_EQ(1U, errors().size());
82 EXPECT_EQ(l10n_util::GetStringFUTF16( 86 EXPECT_EQ(l10n_util::GetStringFUTF16(
83 IDS_POLICY_OUT_OF_RANGE_ERROR, 87 IDS_POLICY_OUT_OF_RANGE_ERROR,
84 base::ASCIIToUTF16(base::IntToString(impossible_value))), 88 base::ASCIIToUTF16(base::IntToString(impossible_value))),
85 errors().begin()->second); 89 errors().begin()->second);
86 } 90 }
87 91
88 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_HomePage) { 92 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_HomePage) {
89 // Specify the HomePage value. 93 // Specify the HomePage value.
90 SetPolicyValue( 94 SetPolicyValue(key::kRestoreOnStartup,
91 key::kRestoreOnStartup, 95 // kPrefValueHomePage, deprecated.
92 new base::FundamentalValue(0)); // kPrefValueHomePage, deprecated. 96 base::WrapUnique(new base::FundamentalValue(0)));
93 // Checking should succeed but add an error to the error map. 97 // Checking should succeed but add an error to the error map.
94 EXPECT_TRUE(CheckPolicySettings()); 98 EXPECT_TRUE(CheckPolicySettings());
95 EXPECT_EQ(1U, errors().size()); 99 EXPECT_EQ(1U, errors().size());
96 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_POLICY_VALUE_DEPRECATED), 100 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_POLICY_VALUE_DEPRECATED),
97 errors().begin()->second); 101 errors().begin()->second);
98 } 102 }
99 103
100 TEST_F(RestoreOnStartupPolicyHandlerTest, 104 TEST_F(RestoreOnStartupPolicyHandlerTest,
101 CheckPolicySettings_RestoreLastSession_SessionCookies) { 105 CheckPolicySettings_RestoreLastSession_SessionCookies) {
102 // Specify the Last value and the Session-Only Cookies value. 106 // Specify the Last value and the Session-Only Cookies value.
103 SetPolicyValue( 107 SetPolicyValue(key::kRestoreOnStartup,
104 key::kRestoreOnStartup, 108 base::WrapUnique(new base::FundamentalValue(
105 new base::FundamentalValue(SessionStartupPref::kPrefValueLast)); 109 SessionStartupPref::kPrefValueLast)));
106 std::unique_ptr<base::ListValue> urls(new base::ListValue); 110 std::unique_ptr<base::ListValue> urls(new base::ListValue);
107 urls->AppendString("http://foo.com"); 111 urls->AppendString("http://foo.com");
108 SetPolicyValue(key::kCookiesSessionOnlyForUrls, urls.release()); 112 SetPolicyValue(key::kCookiesSessionOnlyForUrls, std::move(urls));
109 // Checking should succeed but add an error to the error map. 113 // Checking should succeed but add an error to the error map.
110 EXPECT_TRUE(CheckPolicySettings()); 114 EXPECT_TRUE(CheckPolicySettings());
111 EXPECT_EQ(1U, errors().size()); 115 EXPECT_EQ(1U, errors().size());
112 EXPECT_TRUE(key::kCookiesSessionOnlyForUrls == errors().begin()->first); 116 EXPECT_TRUE(key::kCookiesSessionOnlyForUrls == errors().begin()->first);
113 EXPECT_EQ(l10n_util::GetStringFUTF16( 117 EXPECT_EQ(l10n_util::GetStringFUTF16(
114 IDS_POLICY_OVERRIDDEN, 118 IDS_POLICY_OVERRIDDEN,
115 base::ASCIIToUTF16(key::kRestoreOnStartup)), 119 base::ASCIIToUTF16(key::kRestoreOnStartup)),
116 errors().begin()->second); 120 errors().begin()->second);
117 } 121 }
118 122
119 TEST_F(RestoreOnStartupPolicyHandlerTest, ApplyPolicySettings_NotHomePage) { 123 TEST_F(RestoreOnStartupPolicyHandlerTest, ApplyPolicySettings_NotHomePage) {
120 // Specify anything except the HomePage value. 124 // Specify anything except the HomePage value.
121 int not_home_page = 1; // kPrefValueHomePage + 1, deprecated. 125 int not_home_page = 1; // kPrefValueHomePage + 1, deprecated.
122 SetPolicyValue(key::kRestoreOnStartup, 126 SetPolicyValue(key::kRestoreOnStartup,
123 new base::FundamentalValue(not_home_page)); 127 base::WrapUnique(new base::FundamentalValue(not_home_page)));
124 ApplyPolicySettings(); 128 ApplyPolicySettings();
125 // The resulting prefs should have the value we specified. 129 // The resulting prefs should have the value we specified.
126 int result; 130 int result;
127 EXPECT_TRUE(prefs().GetInteger(prefs::kRestoreOnStartup, &result)); 131 EXPECT_TRUE(prefs().GetInteger(prefs::kRestoreOnStartup, &result));
128 EXPECT_EQ(not_home_page, result); 132 EXPECT_EQ(not_home_page, result);
129 } 133 }
130 134
131 TEST_F(RestoreOnStartupPolicyHandlerTest, 135 TEST_F(RestoreOnStartupPolicyHandlerTest,
132 CheckPolicySettings_RestoreLastSession_ClearDataOnExit) { 136 CheckPolicySettings_RestoreLastSession_ClearDataOnExit) {
133 // Specify the Last value and the Clear-Data-On-Exit value. 137 // Specify the Last value and the Clear-Data-On-Exit value.
134 SetPolicyValue( 138 SetPolicyValue(key::kRestoreOnStartup,
135 key::kRestoreOnStartup, 139 base::WrapUnique(new base::FundamentalValue(
136 new base::FundamentalValue(SessionStartupPref::kPrefValueLast)); 140 SessionStartupPref::kPrefValueLast)));
137 SetPolicyValue(key::kClearSiteDataOnExit, new base::FundamentalValue(true)); 141 SetPolicyValue(key::kClearSiteDataOnExit,
142 base::WrapUnique(new base::FundamentalValue(true)));
138 // Checking should succeed but add an error to the error map. 143 // Checking should succeed but add an error to the error map.
139 EXPECT_TRUE(CheckPolicySettings()); 144 EXPECT_TRUE(CheckPolicySettings());
140 EXPECT_EQ(1U, errors().size()); 145 EXPECT_EQ(1U, errors().size());
141 EXPECT_TRUE(key::kClearSiteDataOnExit == errors().begin()->first); 146 EXPECT_TRUE(key::kClearSiteDataOnExit == errors().begin()->first);
142 EXPECT_EQ(l10n_util::GetStringFUTF16( 147 EXPECT_EQ(l10n_util::GetStringFUTF16(
143 IDS_POLICY_OVERRIDDEN, 148 IDS_POLICY_OVERRIDDEN,
144 base::ASCIIToUTF16(key::kRestoreOnStartup)), 149 base::ASCIIToUTF16(key::kRestoreOnStartup)),
145 errors().begin()->second); 150 errors().begin()->second);
146 } 151 }
147 152
148 TEST_F(RestoreOnStartupPolicyHandlerTest, 153 TEST_F(RestoreOnStartupPolicyHandlerTest,
149 CheckPolicySettings_RestoreLastSession) { 154 CheckPolicySettings_RestoreLastSession) {
150 // Specify the Last value without the conflicts. 155 // Specify the Last value without the conflicts.
151 SetPolicyValue( 156 SetPolicyValue(key::kRestoreOnStartup,
152 key::kRestoreOnStartup, 157 base::WrapUnique(new base::FundamentalValue(
153 new base::FundamentalValue(SessionStartupPref::kPrefValueLast)); 158 SessionStartupPref::kPrefValueLast)));
154 // Checking should succeed with no errors. 159 // Checking should succeed with no errors.
155 EXPECT_TRUE(CheckPolicySettings()); 160 EXPECT_TRUE(CheckPolicySettings());
156 EXPECT_EQ(0U, errors().size()); 161 EXPECT_EQ(0U, errors().size());
157 } 162 }
158 163
159 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_URLs) { 164 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_URLs) {
160 // Specify the URLs value. 165 // Specify the URLs value.
161 SetPolicyValue( 166 SetPolicyValue(key::kRestoreOnStartup,
162 key::kRestoreOnStartup, 167 base::WrapUnique(new base::FundamentalValue(
163 new base::FundamentalValue(SessionStartupPref::kPrefValueURLs)); 168 SessionStartupPref::kPrefValueURLs)));
164 // Checking should succeed with no errors. 169 // Checking should succeed with no errors.
165 EXPECT_TRUE(CheckPolicySettings()); 170 EXPECT_TRUE(CheckPolicySettings());
166 EXPECT_EQ(0U, errors().size()); 171 EXPECT_EQ(0U, errors().size());
167 } 172 }
168 173
169 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_NewTab) { 174 TEST_F(RestoreOnStartupPolicyHandlerTest, CheckPolicySettings_NewTab) {
170 // Specify the NewTab value. 175 // Specify the NewTab value.
171 SetPolicyValue( 176 SetPolicyValue(key::kRestoreOnStartup,
172 key::kRestoreOnStartup, 177 base::WrapUnique(new base::FundamentalValue(
173 new base::FundamentalValue(SessionStartupPref::kPrefValueNewTab)); 178 SessionStartupPref::kPrefValueNewTab)));
174 // Checking should succeed with no errors. 179 // Checking should succeed with no errors.
175 EXPECT_TRUE(CheckPolicySettings()); 180 EXPECT_TRUE(CheckPolicySettings());
176 EXPECT_EQ(0U, errors().size()); 181 EXPECT_EQ(0U, errors().size());
177 } 182 }
178 183
179 TEST_F(RestoreOnStartupPolicyHandlerTest, ApplyPolicySettings_NoValue) { 184 TEST_F(RestoreOnStartupPolicyHandlerTest, ApplyPolicySettings_NoValue) {
180 // Don't specify a value for the policy. 185 // Don't specify a value for the policy.
181 ApplyPolicySettings(); 186 ApplyPolicySettings();
182 // The resulting prefs should be empty. 187 // The resulting prefs should be empty.
183 EXPECT_TRUE(prefs().begin() == prefs().end()); 188 EXPECT_TRUE(prefs().begin() == prefs().end());
184 } 189 }
185 190
186 TEST_F(RestoreOnStartupPolicyHandlerTest, ApplyPolicySettings_WrongType) { 191 TEST_F(RestoreOnStartupPolicyHandlerTest, ApplyPolicySettings_WrongType) {
187 // Handler expects an int; pass it a bool. 192 // Handler expects an int; pass it a bool.
188 SetPolicyValue(key::kRestoreOnStartup, new base::FundamentalValue(false)); 193 SetPolicyValue(key::kRestoreOnStartup,
194 base::WrapUnique(new base::FundamentalValue(false)));
189 // The resulting prefs should be empty. 195 // The resulting prefs should be empty.
190 EXPECT_TRUE(prefs().begin() == prefs().end()); 196 EXPECT_TRUE(prefs().begin() == prefs().end());
191 } 197 }
192 198
193 } // namespace policy 199 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698