OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/policy/policy_service_impl.h" | 5 #include "chrome/browser/policy/policy_service_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 | 118 |
119 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) { | 119 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) { |
120 PolicyMap expected; | 120 PolicyMap expected; |
121 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 121 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
122 base::Value::CreateIntegerValue(13)); | 122 base::Value::CreateIntegerValue(13)); |
123 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); | 123 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); |
124 } | 124 } |
125 | 125 |
126 TEST_F(PolicyServiceTest, NotifyObservers) { | 126 TEST_F(PolicyServiceTest, NotifyObservers) { |
127 MockPolicyServiceObserver observer; | 127 MockPolicyServiceObserver observer; |
128 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, "", &observer); | 128 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); |
129 | 129 |
130 PolicyMap expectedPrevious; | 130 PolicyMap expectedPrevious; |
131 expectedPrevious.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 131 expectedPrevious.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
132 base::Value::CreateIntegerValue(13)); | 132 base::Value::CreateIntegerValue(13)); |
133 | 133 |
134 PolicyMap expectedCurrent; | 134 PolicyMap expectedCurrent; |
135 expectedCurrent.CopyFrom(expectedPrevious); | 135 expectedCurrent.CopyFrom(expectedPrevious); |
136 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 136 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
137 base::Value::CreateIntegerValue(123)); | 137 base::Value::CreateIntegerValue(123)); |
138 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 138 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 PolicyEquals(&expectedCurrent))); | 183 PolicyEquals(&expectedCurrent))); |
184 provider0_.UpdateChromePolicy(policy0_); | 184 provider0_.UpdateChromePolicy(policy0_); |
185 Mock::VerifyAndClearExpectations(&observer); | 185 Mock::VerifyAndClearExpectations(&observer); |
186 | 186 |
187 // No changes again. | 187 // No changes again. |
188 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _, _)).Times(0); | 188 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _, _)).Times(0); |
189 provider0_.UpdateChromePolicy(policy0_); | 189 provider0_.UpdateChromePolicy(policy0_); |
190 Mock::VerifyAndClearExpectations(&observer); | 190 Mock::VerifyAndClearExpectations(&observer); |
191 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent)); | 191 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent)); |
192 | 192 |
193 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, "", &observer); | 193 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer); |
194 } | 194 } |
195 | 195 |
196 TEST_F(PolicyServiceTest, NotifyObserversInMultipleNamespaces) { | 196 TEST_F(PolicyServiceTest, NotifyObserversInMultipleNamespaces) { |
197 const std::string kExtension0("extension-0"); | 197 const std::string kExtension0("extension-0"); |
198 const std::string kExtension1("extension-1"); | 198 const std::string kExtension1("extension-1"); |
199 const std::string kExtension2("extension-2"); | 199 const std::string kExtension2("extension-2"); |
200 MockPolicyServiceObserver chrome_observer; | 200 MockPolicyServiceObserver chrome_observer; |
201 MockPolicyServiceObserver extension0_observer; | 201 MockPolicyServiceObserver extension_observer; |
202 MockPolicyServiceObserver extension1_observer; | 202 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &chrome_observer); |
203 MockPolicyServiceObserver extension2_observer; | 203 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, &extension_observer); |
204 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, "", &chrome_observer); | |
205 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, kExtension0, | |
206 &extension0_observer); | |
207 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, kExtension1, | |
208 &extension1_observer); | |
209 policy_service_->AddObserver(POLICY_DOMAIN_EXTENSIONS, kExtension2, | |
210 &extension2_observer); | |
211 | 204 |
212 PolicyMap previous_policy_map; | 205 PolicyMap previous_policy_map; |
213 previous_policy_map.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 206 previous_policy_map.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
214 base::Value::CreateIntegerValue(13)); | 207 base::Value::CreateIntegerValue(13)); |
215 PolicyMap policy_map; | 208 PolicyMap policy_map; |
216 policy_map.CopyFrom(previous_policy_map); | 209 policy_map.CopyFrom(previous_policy_map); |
217 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 210 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
218 base::Value::CreateStringValue("value")); | 211 base::Value::CreateStringValue("value")); |
219 | 212 |
220 scoped_ptr<PolicyBundle> bundle(new PolicyBundle()); | 213 scoped_ptr<PolicyBundle> bundle(new PolicyBundle()); |
221 // The initial setup includes a policy for chrome that is now changing. | 214 // The initial setup includes a policy for chrome that is now changing. |
222 bundle->Get(POLICY_DOMAIN_CHROME, "").CopyFrom(policy_map); | 215 bundle->Get(POLICY_DOMAIN_CHROME, "").CopyFrom(policy_map); |
223 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension0).CopyFrom(policy_map); | 216 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension0).CopyFrom(policy_map); |
224 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension1).CopyFrom(policy_map); | 217 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension1).CopyFrom(policy_map); |
225 | 218 |
226 const PolicyMap kEmptyPolicyMap; | 219 const PolicyMap kEmptyPolicyMap; |
227 EXPECT_CALL(chrome_observer, | 220 EXPECT_CALL(chrome_observer, |
228 OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", | 221 OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", |
229 PolicyEquals(&previous_policy_map), | 222 PolicyEquals(&previous_policy_map), |
230 PolicyEquals(&policy_map))); | 223 PolicyEquals(&policy_map))); |
231 EXPECT_CALL(extension0_observer, | 224 EXPECT_CALL(extension_observer, |
232 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension0, | 225 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension0, |
233 PolicyEquals(&kEmptyPolicyMap), | 226 PolicyEquals(&kEmptyPolicyMap), |
234 PolicyEquals(&policy_map))); | 227 PolicyEquals(&policy_map))); |
235 EXPECT_CALL(extension1_observer, | 228 EXPECT_CALL(extension_observer, |
236 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension1, | 229 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension1, |
237 PolicyEquals(&kEmptyPolicyMap), | 230 PolicyEquals(&kEmptyPolicyMap), |
238 PolicyEquals(&policy_map))); | 231 PolicyEquals(&policy_map))); |
239 EXPECT_CALL(extension2_observer, OnPolicyUpdated(_, _, _, _)).Times(0); | |
240 provider0_.UpdatePolicy(bundle.Pass()); | 232 provider0_.UpdatePolicy(bundle.Pass()); |
241 Mock::VerifyAndClearExpectations(&chrome_observer); | 233 Mock::VerifyAndClearExpectations(&chrome_observer); |
242 Mock::VerifyAndClearExpectations(&extension0_observer); | 234 Mock::VerifyAndClearExpectations(&extension_observer); |
243 Mock::VerifyAndClearExpectations(&extension1_observer); | |
244 Mock::VerifyAndClearExpectations(&extension2_observer); | |
245 | 235 |
246 // Chrome policy stays the same, kExtension0 is gone, kExtension1 changes, | 236 // Chrome policy stays the same, kExtension0 is gone, kExtension1 changes, |
247 // and kExtension2 is new. | 237 // and kExtension2 is new. |
248 previous_policy_map.CopyFrom(policy_map); | 238 previous_policy_map.CopyFrom(policy_map); |
249 bundle.reset(new PolicyBundle()); | 239 bundle.reset(new PolicyBundle()); |
250 bundle->Get(POLICY_DOMAIN_CHROME, "").CopyFrom(policy_map); | 240 bundle->Get(POLICY_DOMAIN_CHROME, "").CopyFrom(policy_map); |
251 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 241 policy_map.Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
252 base::Value::CreateStringValue("another value")); | 242 base::Value::CreateStringValue("another value")); |
253 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension1).CopyFrom(policy_map); | 243 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension1).CopyFrom(policy_map); |
254 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension2).CopyFrom(policy_map); | 244 bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension2).CopyFrom(policy_map); |
255 | 245 |
256 EXPECT_CALL(chrome_observer, OnPolicyUpdated(_, _, _, _)).Times(0); | 246 EXPECT_CALL(chrome_observer, OnPolicyUpdated(_, _, _, _)).Times(0); |
257 EXPECT_CALL(extension0_observer, | 247 EXPECT_CALL(extension_observer, |
258 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension0, | 248 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension0, |
259 PolicyEquals(&previous_policy_map), | 249 PolicyEquals(&previous_policy_map), |
260 PolicyEquals(&kEmptyPolicyMap))); | 250 PolicyEquals(&kEmptyPolicyMap))); |
261 EXPECT_CALL(extension1_observer, | 251 EXPECT_CALL(extension_observer, |
262 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension1, | 252 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension1, |
263 PolicyEquals(&previous_policy_map), | 253 PolicyEquals(&previous_policy_map), |
264 PolicyEquals(&policy_map))); | 254 PolicyEquals(&policy_map))); |
265 EXPECT_CALL(extension2_observer, | 255 EXPECT_CALL(extension_observer, |
266 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension2, | 256 OnPolicyUpdated(POLICY_DOMAIN_EXTENSIONS, kExtension2, |
267 PolicyEquals(&kEmptyPolicyMap), | 257 PolicyEquals(&kEmptyPolicyMap), |
268 PolicyEquals(&policy_map))); | 258 PolicyEquals(&policy_map))); |
269 provider0_.UpdatePolicy(bundle.Pass()); | 259 provider0_.UpdatePolicy(bundle.Pass()); |
270 Mock::VerifyAndClearExpectations(&chrome_observer); | 260 Mock::VerifyAndClearExpectations(&chrome_observer); |
271 Mock::VerifyAndClearExpectations(&extension0_observer); | 261 Mock::VerifyAndClearExpectations(&extension_observer); |
272 Mock::VerifyAndClearExpectations(&extension1_observer); | |
273 Mock::VerifyAndClearExpectations(&extension2_observer); | |
274 | 262 |
275 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, "", &chrome_observer); | 263 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &chrome_observer); |
276 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, kExtension0, | 264 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, |
277 &extension0_observer); | 265 &extension_observer); |
278 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, kExtension1, | |
279 &extension1_observer); | |
280 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, kExtension2, | |
281 &extension2_observer); | |
282 } | 266 } |
283 | 267 |
284 TEST_F(PolicyServiceTest, Priorities) { | 268 TEST_F(PolicyServiceTest, Priorities) { |
285 PolicyMap expected; | 269 PolicyMap expected; |
286 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 270 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
287 base::Value::CreateIntegerValue(13)); | 271 base::Value::CreateIntegerValue(13)); |
288 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 272 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
289 base::Value::CreateIntegerValue(0)); | 273 base::Value::CreateIntegerValue(0)); |
290 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 274 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
291 base::Value::CreateIntegerValue(0)); | 275 base::Value::CreateIntegerValue(0)); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 // level/scope combination takes precedence, on every namespace. | 452 // level/scope combination takes precedence, on every namespace. |
469 expected.Set(kDiffLevelPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 453 expected.Set(kDiffLevelPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
470 base::Value::CreateStringValue("bundle2")); | 454 base::Value::CreateStringValue("bundle2")); |
471 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_CHROME, "") | 455 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_CHROME, "") |
472 .Equals(expected)); | 456 .Equals(expected)); |
473 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_EXTENSIONS, kExtension) | 457 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_EXTENSIONS, kExtension) |
474 .Equals(expected)); | 458 .Equals(expected)); |
475 } | 459 } |
476 | 460 |
477 } // namespace policy | 461 } // namespace policy |
OLD | NEW |