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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
59 base::Value::CreateStringValue(value)); | 59 base::Value::CreateStringValue(value)); |
60 policy_map->Set(kDiffLevelPolicy, level, scope, | 60 policy_map->Set(kDiffLevelPolicy, level, scope, |
61 base::Value::CreateStringValue(value)); | 61 base::Value::CreateStringValue(value)); |
62 policy_map = &bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension); | 62 policy_map = &bundle->Get(POLICY_DOMAIN_EXTENSIONS, kExtension); |
63 policy_map->Set(kSameLevelPolicy, POLICY_LEVEL_MANDATORY, | 63 policy_map->Set(kSameLevelPolicy, POLICY_LEVEL_MANDATORY, |
64 POLICY_SCOPE_USER, base::Value::CreateStringValue(value)); | 64 POLICY_SCOPE_USER, base::Value::CreateStringValue(value)); |
65 policy_map->Set(kDiffLevelPolicy, level, scope, | 65 policy_map->Set(kDiffLevelPolicy, level, scope, |
66 base::Value::CreateStringValue(value)); | 66 base::Value::CreateStringValue(value)); |
67 } | 67 } |
68 | 68 |
69 // Observer class that changes the policy in the passed provider when the | |
70 // callback is invoked. | |
71 class ChangePolicyObserver : public PolicyService::Observer { | |
Joao da Silva
2012/12/22 21:42:00
Suggestion: the MockPolicyServiceObserver class ab
Andrew T Wilson (Slow)
2013/01/04 15:54:48
Apparently we're trying to get rid of ACTION_P: ht
| |
72 public: | |
73 explicit ChangePolicyObserver(MockConfigurationPolicyProvider* provider) | |
74 : provider_(provider) {} | |
75 | |
76 virtual void OnPolicyUpdated(PolicyDomain domain, | |
77 const std::string& ns, | |
78 const PolicyMap& previous, | |
79 const PolicyMap& current) { | |
Joao da Silva
2012/12/22 21:42:00
OVERRIDE
Andrew T Wilson (Slow)
2013/01/04 15:54:48
Done.
| |
80 PolicyMap new_policy; | |
81 new_policy.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | |
82 base::Value::CreateIntegerValue(14)); | |
83 provider_->UpdateChromePolicy(new_policy); | |
84 } | |
85 | |
86 private: | |
87 MockConfigurationPolicyProvider* provider_; | |
88 }; | |
89 | |
69 } // namespace | 90 } // namespace |
70 | 91 |
71 class PolicyServiceTest : public testing::Test { | 92 class PolicyServiceTest : public testing::Test { |
72 public: | 93 public: |
73 PolicyServiceTest() {} | 94 PolicyServiceTest() {} |
74 | 95 |
75 virtual void SetUp() OVERRIDE { | 96 virtual void SetUp() OVERRIDE { |
76 EXPECT_CALL(provider0_, IsInitializationComplete()) | 97 EXPECT_CALL(provider0_, IsInitializationComplete()) |
77 .WillRepeatedly(Return(true)); | 98 .WillRepeatedly(Return(true)); |
78 EXPECT_CALL(provider1_, IsInitializationComplete()) | 99 EXPECT_CALL(provider1_, IsInitializationComplete()) |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
268 PolicyEquals(&policy_map))); | 289 PolicyEquals(&policy_map))); |
269 provider0_.UpdatePolicy(bundle.Pass()); | 290 provider0_.UpdatePolicy(bundle.Pass()); |
270 Mock::VerifyAndClearExpectations(&chrome_observer); | 291 Mock::VerifyAndClearExpectations(&chrome_observer); |
271 Mock::VerifyAndClearExpectations(&extension_observer); | 292 Mock::VerifyAndClearExpectations(&extension_observer); |
272 | 293 |
273 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &chrome_observer); | 294 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &chrome_observer); |
274 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, | 295 policy_service_->RemoveObserver(POLICY_DOMAIN_EXTENSIONS, |
275 &extension_observer); | 296 &extension_observer); |
276 } | 297 } |
277 | 298 |
299 TEST_F(PolicyServiceTest, ObserverChangesPolicy) { | |
300 ChangePolicyObserver observer(&provider0_); | |
301 policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); | |
302 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | |
303 base::Value::CreateIntegerValue(123)); | |
304 policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | |
305 base::Value::CreateIntegerValue(1234)); | |
306 // Should not crash. | |
307 provider0_.UpdateChromePolicy(policy0_); | |
308 policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer); | |
309 } | |
310 | |
278 TEST_F(PolicyServiceTest, Priorities) { | 311 TEST_F(PolicyServiceTest, Priorities) { |
279 PolicyMap expected; | 312 PolicyMap expected; |
280 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 313 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
281 base::Value::CreateIntegerValue(13)); | 314 base::Value::CreateIntegerValue(13)); |
282 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 315 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
283 base::Value::CreateIntegerValue(0)); | 316 base::Value::CreateIntegerValue(0)); |
284 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 317 policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
285 base::Value::CreateIntegerValue(0)); | 318 base::Value::CreateIntegerValue(0)); |
286 policy1_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 319 policy1_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
287 base::Value::CreateIntegerValue(1)); | 320 base::Value::CreateIntegerValue(1)); |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
462 // level/scope combination takes precedence, on every namespace. | 495 // level/scope combination takes precedence, on every namespace. |
463 expected.Set(kDiffLevelPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 496 expected.Set(kDiffLevelPolicy, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
464 base::Value::CreateStringValue("bundle2")); | 497 base::Value::CreateStringValue("bundle2")); |
465 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_CHROME, "") | 498 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_CHROME, "") |
466 .Equals(expected)); | 499 .Equals(expected)); |
467 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_EXTENSIONS, kExtension) | 500 EXPECT_TRUE(policy_service_->GetPolicies(POLICY_DOMAIN_EXTENSIONS, kExtension) |
468 .Equals(expected)); | 501 .Equals(expected)); |
469 } | 502 } |
470 | 503 |
471 } // namespace policy | 504 } // namespace policy |
OLD | NEW |