| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef COMPONENTS_POLICY_CORE_COMMON_SCHEMA_REGISTRY_H_ | 5 #ifndef COMPONENTS_POLICY_CORE_COMMON_SCHEMA_REGISTRY_H_ |
| 6 #define COMPONENTS_POLICY_CORE_COMMON_SCHEMA_REGISTRY_H_ | 6 #define COMPONENTS_POLICY_CORE_COMMON_SCHEMA_REGISTRY_H_ |
| 7 | 7 |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "base/observer_list.h" | 13 #include "base/observer_list.h" |
| 14 #include "base/threading/non_thread_safe.h" | 14 #include "base/sequence_checker.h" |
| 15 #include "components/policy/core/common/policy_namespace.h" | 15 #include "components/policy/core/common/policy_namespace.h" |
| 16 #include "components/policy/core/common/schema.h" | 16 #include "components/policy/core/common/schema.h" |
| 17 #include "components/policy/core/common/schema_map.h" | 17 #include "components/policy/core/common/schema_map.h" |
| 18 #include "components/policy/policy_export.h" | 18 #include "components/policy/policy_export.h" |
| 19 | 19 |
| 20 namespace policy { | 20 namespace policy { |
| 21 | 21 |
| 22 class SchemaMap; | 22 class SchemaMap; |
| 23 | 23 |
| 24 // Holds the main reference to the current SchemaMap, and allows a list of | 24 // Holds the main reference to the current SchemaMap, and allows a list of |
| 25 // observers to get notified whenever it is updated. | 25 // observers to get notified whenever it is updated. |
| 26 // This object is not thread safe and must be used from the owner's thread, | 26 // This object is not thread safe and must be used from the owner's thread, |
| 27 // usually UI. | 27 // usually UI. |
| 28 class POLICY_EXPORT SchemaRegistry : public base::NonThreadSafe { | 28 class POLICY_EXPORT SchemaRegistry { |
| 29 public: | 29 public: |
| 30 class POLICY_EXPORT Observer { | 30 class POLICY_EXPORT Observer { |
| 31 public: | 31 public: |
| 32 // Invoked whenever schemas are registered or unregistered. | 32 // Invoked whenever schemas are registered or unregistered. |
| 33 // |has_new_schemas| is true if a new component has been registered since | 33 // |has_new_schemas| is true if a new component has been registered since |
| 34 // the last update; this allows observers to ignore updates when | 34 // the last update; this allows observers to ignore updates when |
| 35 // components are unregistered but still get a handle to the current map | 35 // components are unregistered but still get a handle to the current map |
| 36 // (e.g. for periodic reloads). | 36 // (e.g. for periodic reloads). |
| 37 virtual void OnSchemaRegistryUpdated(bool has_new_schemas) = 0; | 37 virtual void OnSchemaRegistryUpdated(bool has_new_schemas) = 0; |
| 38 | 38 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 protected: | 91 protected: |
| 92 void Notify(bool has_new_schemas); | 92 void Notify(bool has_new_schemas); |
| 93 | 93 |
| 94 scoped_refptr<SchemaMap> schema_map_; | 94 scoped_refptr<SchemaMap> schema_map_; |
| 95 | 95 |
| 96 private: | 96 private: |
| 97 base::ObserverList<Observer, true> observers_; | 97 base::ObserverList<Observer, true> observers_; |
| 98 base::ObserverList<InternalObserver, true> internal_observers_; | 98 base::ObserverList<InternalObserver, true> internal_observers_; |
| 99 bool domains_ready_[POLICY_DOMAIN_SIZE]; | 99 bool domains_ready_[POLICY_DOMAIN_SIZE]; |
| 100 | 100 |
| 101 SEQUENCE_CHECKER(sequence_checker_); |
| 102 |
| 101 DISALLOW_COPY_AND_ASSIGN(SchemaRegistry); | 103 DISALLOW_COPY_AND_ASSIGN(SchemaRegistry); |
| 102 }; | 104 }; |
| 103 | 105 |
| 104 // A registry that combines the maps of other registries. | 106 // A registry that combines the maps of other registries. |
| 105 class POLICY_EXPORT CombinedSchemaRegistry | 107 class POLICY_EXPORT CombinedSchemaRegistry |
| 106 : public SchemaRegistry, | 108 : public SchemaRegistry, |
| 107 public SchemaRegistry::Observer, | 109 public SchemaRegistry::Observer, |
| 108 public SchemaRegistry::InternalObserver { | 110 public SchemaRegistry::InternalObserver { |
| 109 public: | 111 public: |
| 110 CombinedSchemaRegistry(); | 112 CombinedSchemaRegistry(); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 void UpdateReadiness(); | 161 void UpdateReadiness(); |
| 160 | 162 |
| 161 SchemaRegistry* wrapped_; | 163 SchemaRegistry* wrapped_; |
| 162 | 164 |
| 163 DISALLOW_COPY_AND_ASSIGN(ForwardingSchemaRegistry); | 165 DISALLOW_COPY_AND_ASSIGN(ForwardingSchemaRegistry); |
| 164 }; | 166 }; |
| 165 | 167 |
| 166 } // namespace policy | 168 } // namespace policy |
| 167 | 169 |
| 168 #endif // COMPONENTS_POLICY_CORE_COMMON_SCHEMA_REGISTRY_H_ | 170 #endif // COMPONENTS_POLICY_CORE_COMMON_SCHEMA_REGISTRY_H_ |
| OLD | NEW |