Handle policy refresh internally in ConfigurationPolicyPrefStore.
This removes the final bits of thread-switching madness from PrefValueStore and also makes sure only the PrefStores and PrefService instances that are actually affected by a policy change get reconfigured.
BUG=67715
TEST=unit tests in configuration_policy_provider_unittest.cc
Review URL: http://codereview.chromium.org/6074003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70050 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/policy/mock_configuration_policy_provider.cc b/chrome/browser/policy/mock_configuration_policy_provider.cc
index 9c2db8d..a2566b0 100644
--- a/chrome/browser/policy/mock_configuration_policy_provider.cc
+++ b/chrome/browser/policy/mock_configuration_policy_provider.cc
@@ -11,7 +11,8 @@
MockConfigurationPolicyProvider::MockConfigurationPolicyProvider()
: ConfigurationPolicyProvider(
- ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList()) {
+ ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList()),
+ initialization_complete_(false) {
}
MockConfigurationPolicyProvider::~MockConfigurationPolicyProvider() {
@@ -24,6 +25,20 @@
delete value;
}
+void MockConfigurationPolicyProvider::RemovePolicy(
+ ConfigurationPolicyType policy) {
+ const PolicyMap::iterator entry = policy_map_.find(policy);
+ if (entry != policy_map_.end()) {
+ delete entry->second;
+ policy_map_.erase(entry);
+ }
+}
+
+void MockConfigurationPolicyProvider::SetInitializationComplete(
+ bool initialization_complete) {
+ initialization_complete_ = initialization_complete;
+}
+
bool MockConfigurationPolicyProvider::Provide(
ConfigurationPolicyStoreInterface* store) {
for (PolicyMap::const_iterator current = policy_map_.begin();
@@ -33,4 +48,8 @@
return true;
}
+bool MockConfigurationPolicyProvider::IsInitializationComplete() const {
+ return initialization_complete_;
+}
+
}