Chromium Code Reviews| Index: chrome/browser/policy/policy_service_impl_unittest.cc |
| diff --git a/chrome/browser/policy/policy_service_impl_unittest.cc b/chrome/browser/policy/policy_service_impl_unittest.cc |
| index 4ee3a677677c7279a941e6d154cf1f7e67e458bb..49a9fc2d2115590c7e81b1705aacd907634ec9b1 100644 |
| --- a/chrome/browser/policy/policy_service_impl_unittest.cc |
| +++ b/chrome/browser/policy/policy_service_impl_unittest.cc |
| @@ -66,6 +66,27 @@ void AddTestPolicies(PolicyBundle* bundle, |
| base::Value::CreateStringValue(value)); |
| } |
| +// Observer class that changes the policy in the passed provider when the |
| +// callback is invoked. |
| +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
|
| + public: |
| + explicit ChangePolicyObserver(MockConfigurationPolicyProvider* provider) |
| + : provider_(provider) {} |
| + |
| + virtual void OnPolicyUpdated(PolicyDomain domain, |
| + const std::string& ns, |
| + const PolicyMap& previous, |
| + const PolicyMap& current) { |
|
Joao da Silva
2012/12/22 21:42:00
OVERRIDE
Andrew T Wilson (Slow)
2013/01/04 15:54:48
Done.
|
| + PolicyMap new_policy; |
| + new_policy.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| + base::Value::CreateIntegerValue(14)); |
| + provider_->UpdateChromePolicy(new_policy); |
| + } |
| + |
| + private: |
| + MockConfigurationPolicyProvider* provider_; |
| +}; |
| + |
| } // namespace |
| class PolicyServiceTest : public testing::Test { |
| @@ -275,6 +296,18 @@ TEST_F(PolicyServiceTest, NotifyObserversInMultipleNamespaces) { |
| &extension_observer); |
| } |
| +TEST_F(PolicyServiceTest, ObserverChangesPolicy) { |
| + ChangePolicyObserver observer(&provider0_); |
| + policy_service_->AddObserver(POLICY_DOMAIN_CHROME, &observer); |
| + policy0_.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| + base::Value::CreateIntegerValue(123)); |
| + policy0_.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| + base::Value::CreateIntegerValue(1234)); |
| + // Should not crash. |
| + provider0_.UpdateChromePolicy(policy0_); |
| + policy_service_->RemoveObserver(POLICY_DOMAIN_CHROME, &observer); |
| +} |
| + |
| TEST_F(PolicyServiceTest, Priorities) { |
| PolicyMap expected; |
| expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |