Index: chrome/browser/policy/configuration_policy_provider_test.cc |
diff --git a/chrome/browser/policy/configuration_policy_provider_test.cc b/chrome/browser/policy/configuration_policy_provider_test.cc |
index 6997e6140c7d42665c937a36890add40020906aa..5dadff7b042a040403490d526d137bbd9d0721e4 100644 |
--- a/chrome/browser/policy/configuration_policy_provider_test.cc |
+++ b/chrome/browser/policy/configuration_policy_provider_test.cc |
@@ -9,8 +9,13 @@ |
#include "chrome/browser/policy/asynchronous_policy_loader.h" |
#include "chrome/browser/policy/asynchronous_policy_provider.h" |
#include "chrome/browser/policy/configuration_policy_provider.h" |
+#include "chrome/browser/policy/mock_configuration_policy_provider.h" |
#include "chrome/browser/policy/policy_map.h" |
#include "policy/policy_constants.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
+ |
+using ::testing::Mock; |
+using ::testing::_; |
namespace policy { |
@@ -56,6 +61,9 @@ void ConfigurationPolicyProviderTest::SetUp() { |
provider_.reset( |
test_harness_->CreateProvider(&test_policy_definitions::kList)); |
+ // Some providers do a reload on init. Make sure any notifications generated |
+ // are fired now. |
+ loop_.RunAllPending(); |
PolicyMap policy_map; |
EXPECT_TRUE(provider_->Provide(&policy_map)); |
@@ -76,7 +84,7 @@ void ConfigurationPolicyProviderTest::CheckValue( |
base::Closure install_value) { |
// Install the value, reload policy and check the provider for the value. |
install_value.Run(); |
- provider_->ForceReload(); |
+ provider_->RefreshPolicies(); |
loop_.RunAllPending(); |
PolicyMap policy_map; |
EXPECT_TRUE(provider_->Provide(&policy_map)); |
@@ -86,7 +94,7 @@ void ConfigurationPolicyProviderTest::CheckValue( |
} |
TEST_P(ConfigurationPolicyProviderTest, Empty) { |
- provider_->ForceReload(); |
+ provider_->RefreshPolicies(); |
loop_.RunAllPending(); |
PolicyMap policy_map; |
EXPECT_TRUE(provider_->Provide(&policy_map)); |
@@ -140,4 +148,34 @@ TEST_P(ConfigurationPolicyProviderTest, StringListValue) { |
&expected_value)); |
} |
+TEST_P(ConfigurationPolicyProviderTest, RefreshPolicies) { |
+ PolicyMap policy_map; |
+ EXPECT_TRUE(provider_->Provide(&policy_map)); |
+ EXPECT_EQ(0U, policy_map.size()); |
+ |
+ // OnUpdatePolicy is called even when there are no changes. |
+ MockConfigurationPolicyObserver observer; |
+ ConfigurationPolicyObserverRegistrar registrar; |
+ registrar.Init(provider_.get(), &observer); |
+ EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1); |
+ provider_->RefreshPolicies(); |
+ loop_.RunAllPending(); |
+ Mock::VerifyAndClearExpectations(&observer); |
+ |
+ EXPECT_TRUE(provider_->Provide(&policy_map)); |
+ EXPECT_EQ(0U, policy_map.size()); |
+ |
+ // OnUpdatePolicy is called when there are changes. |
+ test_harness_->InstallStringPolicy(test_policy_definitions::kKeyString, |
+ "value"); |
+ EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1); |
+ provider_->RefreshPolicies(); |
+ loop_.RunAllPending(); |
+ Mock::VerifyAndClearExpectations(&observer); |
+ |
+ policy_map.Clear(); |
+ EXPECT_TRUE(provider_->Provide(&policy_map)); |
+ EXPECT_EQ(1U, policy_map.size()); |
+} |
+ |
} // namespace policy |