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()16 ConfigurationPolicyProvider::ConfigurationPolicyProvider()
17     : initialized_(false), schema_registry_(nullptr) {}
18 
~ConfigurationPolicyProvider()19 ConfigurationPolicyProvider::~ConfigurationPolicyProvider() {
20   DCHECK(!initialized_);
21 }
22 
Init(SchemaRegistry * registry)23 void ConfigurationPolicyProvider::Init(SchemaRegistry* registry) {
24   schema_registry_ = registry;
25   schema_registry_->AddObserver(this);
26   initialized_ = true;
27 }
28 
Shutdown()29 void 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) const39 bool ConfigurationPolicyProvider::IsInitializationComplete(
40     PolicyDomain domain) const {
41   return true;
42 }
43 
IsFirstPolicyLoadComplete(PolicyDomain domain) const44 bool ConfigurationPolicyProvider::IsFirstPolicyLoadComplete(
45     PolicyDomain domain) const {
46   return true;
47 }
48 
UpdatePolicy(std::unique_ptr<PolicyBundle> bundle)49 void 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() const60 SchemaRegistry* ConfigurationPolicyProvider::schema_registry() const {
61   return schema_registry_;
62 }
63 
64 const scoped_refptr<SchemaMap>&
schema_map() const65 ConfigurationPolicyProvider::schema_map() const {
66   return schema_registry_->schema_map();
67 }
68 
AddObserver(Observer * observer)69 void ConfigurationPolicyProvider::AddObserver(Observer* observer) {
70   observer_list_.AddObserver(observer);
71 }
72 
RemoveObserver(Observer * observer)73 void ConfigurationPolicyProvider::RemoveObserver(Observer* observer) {
74   observer_list_.RemoveObserver(observer);
75 }
76 
OnSchemaRegistryUpdated(bool has_new_schemas)77 void ConfigurationPolicyProvider::OnSchemaRegistryUpdated(
78     bool has_new_schemas) {}
79 
OnSchemaRegistryReady()80 void ConfigurationPolicyProvider::OnSchemaRegistryReady() {}
81 
82 }  // namespace policy
83