Index: chrome/browser/policy/configuration_policy_provider.cc |
diff --git a/chrome/browser/policy/configuration_policy_provider.cc b/chrome/browser/policy/configuration_policy_provider.cc |
index 18f849ce4f471b43f2df56b1d6e41a28c25054c4..2803451fefc9ac038b3cf16345b466285ca5392d 100644 |
--- a/chrome/browser/policy/configuration_policy_provider.cc |
+++ b/chrome/browser/policy/configuration_policy_provider.cc |
@@ -6,7 +6,6 @@ |
#include "base/callback.h" |
#include "chrome/browser/policy/external_data_fetcher.h" |
-#include "chrome/browser/policy/policy_domain_descriptor.h" |
#include "chrome/browser/policy/policy_map.h" |
#include "policy/policy_constants.h" |
@@ -68,16 +67,26 @@ void FixDeprecatedPolicies(PolicyMap* policies) { |
ConfigurationPolicyProvider::Observer::~Observer() {} |
ConfigurationPolicyProvider::ConfigurationPolicyProvider() |
- : did_shutdown_(false) {} |
+ : did_shutdown_(false), |
+ schema_registry_(NULL) {} |
ConfigurationPolicyProvider::~ConfigurationPolicyProvider() { |
DCHECK(did_shutdown_); |
} |
-void ConfigurationPolicyProvider::Init() {} |
+void ConfigurationPolicyProvider::Init(SchemaRegistry* registry) { |
+ schema_registry_ = registry; |
+ schema_registry_->AddObserver(this); |
+} |
void ConfigurationPolicyProvider::Shutdown() { |
did_shutdown_ = true; |
+ if (schema_registry_) { |
+ // Unit tests don't initialize the BrowserPolicyConnector but call |
+ // shutdown; handle that. |
+ schema_registry_->RemoveObserver(this); |
+ schema_registry_ = NULL; |
+ } |
} |
bool ConfigurationPolicyProvider::IsInitializationComplete( |
@@ -85,6 +94,12 @@ bool ConfigurationPolicyProvider::IsInitializationComplete( |
return true; |
} |
+void ConfigurationPolicyProvider::OnSchemaRegistryUpdated( |
+ bool has_new_schemas) { |
+ if (has_new_schemas) |
+ RefreshPolicies(); |
+} |
+ |
void ConfigurationPolicyProvider::UpdatePolicy( |
scoped_ptr<PolicyBundle> bundle) { |
if (bundle.get()) |
@@ -98,6 +113,11 @@ void ConfigurationPolicyProvider::UpdatePolicy( |
OnUpdatePolicy(this)); |
} |
+const scoped_refptr<SchemaMap>& |
+ConfigurationPolicyProvider::schema_map() const { |
+ return schema_registry_->schema_map(); |
+} |
+ |
void ConfigurationPolicyProvider::AddObserver(Observer* observer) { |
observer_list_.AddObserver(observer); |
} |
@@ -106,7 +126,4 @@ void ConfigurationPolicyProvider::RemoveObserver(Observer* observer) { |
observer_list_.RemoveObserver(observer); |
} |
-void ConfigurationPolicyProvider::RegisterPolicyDomain( |
- scoped_refptr<const PolicyDomainDescriptor> descriptor) {} |
- |
} // namespace policy |