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 "base/lazy_instance.h" 9 #include "components/policy/core/common/external_data_fetcher.h" 10 #include "components/policy/core/common/policy_map.h" 11 12 namespace policy { 13 14 ConfigurationPolicyProvider::Observer::~Observer() = default; 15 ConfigurationPolicyProvider()16ConfigurationPolicyProvider::ConfigurationPolicyProvider() 17 : initialized_(false), schema_registry_(nullptr) {} 18 ~ConfigurationPolicyProvider()19ConfigurationPolicyProvider::~ConfigurationPolicyProvider() { 20 DCHECK(!initialized_); 21 } 22 Init(SchemaRegistry * registry)23void ConfigurationPolicyProvider::Init(SchemaRegistry* registry) { 24 schema_registry_ = registry; 25 schema_registry_->AddObserver(this); 26 initialized_ = true; 27 } 28 Shutdown()29void ConfigurationPolicyProvider::Shutdown() { 30 initialized_ = false; 31 if (schema_registry_) { 32 // Unit tests don't initialize the BrowserPolicyConnector but call 33 // shutdown; handle that. 34 schema_registry_->RemoveObserver(this); 35 schema_registry_ = nullptr; 36 } 37 } 38 IsInitializationComplete(PolicyDomain domain) const39bool ConfigurationPolicyProvider::IsInitializationComplete( 40 PolicyDomain domain) const { 41 return true; 42 } 43 IsFirstPolicyLoadComplete(PolicyDomain domain) const44bool ConfigurationPolicyProvider::IsFirstPolicyLoadComplete( 45 PolicyDomain domain) const { 46 return true; 47 } 48 UpdatePolicy(std::unique_ptr<PolicyBundle> bundle)49void ConfigurationPolicyProvider::UpdatePolicy( 50 std::unique_ptr<PolicyBundle> bundle) { 51 if (bundle) { 52 policy_bundle_.Swap(bundle.get()); 53 } else { 54 policy_bundle_.Clear(); 55 } 56 for (auto& observer : observer_list_) 57 observer.OnUpdatePolicy(this); 58 } 59 schema_registry() const60SchemaRegistry* ConfigurationPolicyProvider::schema_registry() const { 61 return schema_registry_; 62 } 63 64 const scoped_refptr<SchemaMap>& schema_map() const65ConfigurationPolicyProvider::schema_map() const { 66 return schema_registry_->schema_map(); 67 } 68 AddObserver(Observer * observer)69void ConfigurationPolicyProvider::AddObserver(Observer* observer) { 70 observer_list_.AddObserver(observer); 71 } 72 RemoveObserver(Observer * observer)73void ConfigurationPolicyProvider::RemoveObserver(Observer* observer) { 74 observer_list_.RemoveObserver(observer); 75 } 76 OnSchemaRegistryUpdated(bool has_new_schemas)77void ConfigurationPolicyProvider::OnSchemaRegistryUpdated( 78 bool has_new_schemas) {} 79 OnSchemaRegistryReady()80void ConfigurationPolicyProvider::OnSchemaRegistryReady() {} 81 82 } // namespace policy 83