Chromium Code Reviews| 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 |