Index: chrome/browser/policy/policy_service_unittest.cc |
diff --git a/chrome/browser/policy/policy_service_unittest.cc b/chrome/browser/policy/policy_service_unittest.cc |
index ad99a7b22b47d710deaf9d0b504d639b76fec4b4..9fa0de5991ac795e5f00de52f2feaaa5ca169dd0 100644 |
--- a/chrome/browser/policy/policy_service_unittest.cc |
+++ b/chrome/browser/policy/policy_service_unittest.cc |
@@ -21,9 +21,20 @@ namespace { |
class MockPolicyServiceObserver : public PolicyService::Observer { |
public: |
virtual ~MockPolicyServiceObserver() {} |
- MOCK_METHOD2(OnPolicyUpdated, void(PolicyDomain, const std::string&)); |
+ MOCK_METHOD4(OnPolicyUpdated, void(PolicyDomain, |
+ const std::string&, |
+ const PolicyMap& previous, |
+ const PolicyMap& current)); |
}; |
+// Helper to compare the arguments to an EXPECT_CALL of OnPolicyUpdated() with |
+// their expected values. |
+MATCHER_P(PolicyEquals, expected, "") { |
+ return arg.Equals(*expected); |
+} |
+ |
+} // namespace |
+ |
class PolicyServiceTest : public testing::Test { |
public: |
PolicyServiceTest() {} |
@@ -73,57 +84,71 @@ TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) { |
} |
TEST_F(PolicyServiceTest, NotifyObservers) { |
- PolicyMap expected; |
- expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
- base::Value::CreateIntegerValue(13)); |
- |
- expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
- base::Value::CreateIntegerValue(123)); |
+ PolicyMap expectedPrevious; |
+ expectedPrevious.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
+ base::Value::CreateIntegerValue(13)); |
+ |
+ PolicyMap expectedCurrent; |
+ expectedCurrent.CopyFrom(expectedPrevious); |
+ expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
+ base::Value::CreateIntegerValue(123)); |
provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(123)); |
- EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); |
+ EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", |
+ PolicyEquals(&expectedPrevious), |
+ PolicyEquals(&expectedCurrent))); |
provider0_.RefreshPolicies(); |
Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); |
+ |
// No changes. |
- EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(0); |
+ EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(0); |
provider0_.RefreshPolicies(); |
Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); |
+ EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent)); |
+ |
// New policy. |
- expected.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
- base::Value::CreateIntegerValue(456)); |
+ expectedPrevious.CopyFrom(expectedCurrent); |
+ expectedCurrent.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
+ base::Value::CreateIntegerValue(456)); |
provider0_.AddMandatoryPolicy("bbb", base::Value::CreateIntegerValue(456)); |
- EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); |
+ EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", |
+ PolicyEquals(&expectedPrevious), |
+ PolicyEquals(&expectedCurrent))); |
provider0_.RefreshPolicies(); |
Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); |
+ |
// Removed policy. |
- expected.Erase("bbb"); |
+ expectedPrevious.CopyFrom(expectedCurrent); |
+ expectedCurrent.Erase("bbb"); |
provider0_.RemovePolicy("bbb"); |
- EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); |
+ EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", |
+ PolicyEquals(&expectedPrevious), |
+ PolicyEquals(&expectedCurrent))); |
provider0_.RefreshPolicies(); |
Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); |
+ |
// Changed policy. |
- expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
- base::Value::CreateIntegerValue(789)); |
+ expectedPrevious.CopyFrom(expectedCurrent); |
+ expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
+ base::Value::CreateIntegerValue(789)); |
provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(789)); |
- EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); |
+ EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", |
+ PolicyEquals(&expectedPrevious), |
+ PolicyEquals(&expectedCurrent))); |
provider0_.RefreshPolicies(); |
Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); |
+ |
// No changes again. |
- EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(0); |
+ EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(0); |
provider0_.RefreshPolicies(); |
Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); |
+ EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent)); |
} |
TEST_F(PolicyServiceTest, Priorities) { |
PolicyMap expected; |
expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
base::Value::CreateIntegerValue(13)); |
- EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(AnyNumber()); |
+ EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(AnyNumber()); |
expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
base::Value::CreateIntegerValue(0)); |
@@ -148,6 +173,4 @@ TEST_F(PolicyServiceTest, Priorities) { |
EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); |
} |
-} // namespace |
- |
} // namespace policy |