1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "components/policy/core/common/configuration_policy_provider.h" 6 7 #include "base/callback.h" 8 #include "components/policy/core/common/external_data_fetcher.h" 9 #include "components/policy/core/common/policy_map.h" 10 11 namespace policy { 12 13 ConfigurationPolicyProvider::Observer::~Observer() {} 14 15 ConfigurationPolicyProvider::ConfigurationPolicyProvider() 16 : did_shutdown_(false), 17 schema_registry_(NULL) {} 18 19 ConfigurationPolicyProvider::~ConfigurationPolicyProvider() { 20 DCHECK(did_shutdown_); 21 } 22 23 void ConfigurationPolicyProvider::Init(SchemaRegistry* registry) { 24 schema_registry_ = registry; 25 schema_registry_->AddObserver(this); 26 } 27 28 void ConfigurationPolicyProvider::Shutdown() { 29 did_shutdown_ = true; 30 if (schema_registry_) { 31 // Unit tests don't initialize the BrowserPolicyConnector but call 32 // shutdown; handle that. 33 schema_registry_->RemoveObserver(this); 34 schema_registry_ = NULL; 35 } 36 } 37 38 bool ConfigurationPolicyProvider::IsInitializationComplete( 39 PolicyDomain domain) const { 40 return true; 41 } 42 43 void ConfigurationPolicyProvider::UpdatePolicy( 44 scoped_ptr<PolicyBundle> bundle) { 45 if (bundle.get()) 46 policy_bundle_.Swap(bundle.get()); 47 else 48 policy_bundle_.Clear(); 49 FOR_EACH_OBSERVER(ConfigurationPolicyProvider::Observer, 50 observer_list_, 51 OnUpdatePolicy(this)); 52 } 53 54 SchemaRegistry* ConfigurationPolicyProvider::schema_registry() const { 55 return schema_registry_; 56 } 57 58 const scoped_refptr<SchemaMap>& 59 ConfigurationPolicyProvider::schema_map() const { 60 return schema_registry_->schema_map(); 61 } 62 63 void ConfigurationPolicyProvider::AddObserver(Observer* observer) { 64 observer_list_.AddObserver(observer); 65 } 66 67 void ConfigurationPolicyProvider::RemoveObserver(Observer* observer) { 68 observer_list_.RemoveObserver(observer); 69 } 70 71 void ConfigurationPolicyProvider::OnSchemaRegistryUpdated( 72 bool has_new_schemas) {} 73 74 void ConfigurationPolicyProvider::OnSchemaRegistryReady() {} 75 76 } // namespace policy 77