Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(465)

Unified Diff: chrome/browser/policy/schema_registry.cc

Issue 78453005: Move PolicySchema and PolicySchemaRegistry to components/policy/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: export nested class on win Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/policy/schema_registry.h ('k') | chrome/browser/policy/schema_registry_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/policy/schema_registry.cc
diff --git a/chrome/browser/policy/schema_registry.cc b/chrome/browser/policy/schema_registry.cc
deleted file mode 100644
index d1c083523d6961ae2df54aadc995520bfcc26039..0000000000000000000000000000000000000000
--- a/chrome/browser/policy/schema_registry.cc
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/policy/schema_registry.h"
-
-#include "base/logging.h"
-
-namespace policy {
-
-SchemaRegistry::Observer::~Observer() {}
-
-SchemaRegistry::SchemaRegistry() : schema_map_(new SchemaMap) {
- for (int i = 0; i < POLICY_DOMAIN_SIZE; ++i)
- domains_ready_[i] = false;
-#if !defined(ENABLE_EXTENSIONS)
- domains_ready_[POLICY_DOMAIN_EXTENSIONS] = true;
-#endif
-}
-
-SchemaRegistry::~SchemaRegistry() {}
-
-void SchemaRegistry::RegisterComponent(const PolicyNamespace& ns,
- const Schema& schema) {
- ComponentMap map;
- map[ns.component_id] = schema;
- RegisterComponents(ns.domain, map);
-}
-
-void SchemaRegistry::RegisterComponents(PolicyDomain domain,
- const ComponentMap& components) {
- // Assume that a schema was updated if the namespace was already registered
- // before.
- DomainMap map(schema_map_->GetDomains());
- for (ComponentMap::const_iterator it = components.begin();
- it != components.end(); ++it) {
- map[domain][it->first] = it->second;
- }
- schema_map_ = new SchemaMap(map);
- Notify(true);
-}
-
-void SchemaRegistry::UnregisterComponent(const PolicyNamespace& ns) {
- DomainMap map(schema_map_->GetDomains());
- if (map[ns.domain].erase(ns.component_id) != 0) {
- schema_map_ = new SchemaMap(map);
- Notify(false);
- } else {
- NOTREACHED();
- }
-}
-
-bool SchemaRegistry::IsReady() const {
- for (int i = 0; i < POLICY_DOMAIN_SIZE; ++i) {
- if (!domains_ready_[i])
- return false;
- }
- return true;
-}
-
-void SchemaRegistry::SetReady(PolicyDomain domain) {
- if (domains_ready_[domain])
- return;
- domains_ready_[domain] = true;
- if (IsReady())
- FOR_EACH_OBSERVER(Observer, observers_, OnSchemaRegistryReady());
-}
-
-void SchemaRegistry::AddObserver(Observer* observer) {
- observers_.AddObserver(observer);
-}
-
-void SchemaRegistry::RemoveObserver(Observer* observer) {
- observers_.RemoveObserver(observer);
-}
-
-void SchemaRegistry::Notify(bool has_new_schemas) {
- FOR_EACH_OBSERVER(
- Observer, observers_, OnSchemaRegistryUpdated(has_new_schemas));
-}
-
-bool SchemaRegistry::HasObservers() const {
- return observers_.might_have_observers();
-}
-
-CombinedSchemaRegistry::CombinedSchemaRegistry()
- : own_schema_map_(new SchemaMap) {
- // The combined registry is always ready, since it can always start tracking
- // another registry that is not ready yet and going from "ready" to "not
- // ready" is not allowed.
- for (int i = 0; i < POLICY_DOMAIN_SIZE; ++i)
- SetReady(static_cast<PolicyDomain>(i));
-}
-
-CombinedSchemaRegistry::~CombinedSchemaRegistry() {}
-
-void CombinedSchemaRegistry::Track(SchemaRegistry* registry) {
- registries_.insert(registry);
- registry->AddObserver(this);
- // Recombine the maps only if the |registry| has any components other than
- // POLICY_DOMAIN_CHROME.
- if (registry->schema_map()->HasComponents())
- Combine(true);
-}
-
-void CombinedSchemaRegistry::Untrack(SchemaRegistry* registry) {
- registry->RemoveObserver(this);
- if (registries_.erase(registry) != 0) {
- if (registry->schema_map()->HasComponents())
- Combine(false);
- } else {
- NOTREACHED();
- }
-}
-
-void CombinedSchemaRegistry::RegisterComponents(
- PolicyDomain domain,
- const ComponentMap& components) {
- DomainMap map(own_schema_map_->GetDomains());
- for (ComponentMap::const_iterator it = components.begin();
- it != components.end(); ++it) {
- map[domain][it->first] = it->second;
- }
- own_schema_map_ = new SchemaMap(map);
- Combine(true);
-}
-
-void CombinedSchemaRegistry::UnregisterComponent(const PolicyNamespace& ns) {
- DomainMap map(own_schema_map_->GetDomains());
- if (map[ns.domain].erase(ns.component_id) != 0) {
- own_schema_map_ = new SchemaMap(map);
- Combine(false);
- } else {
- NOTREACHED();
- }
-}
-
-void CombinedSchemaRegistry::OnSchemaRegistryUpdated(bool has_new_schemas) {
- Combine(has_new_schemas);
-}
-
-void CombinedSchemaRegistry::OnSchemaRegistryReady() {
- // Ignore.
-}
-
-void CombinedSchemaRegistry::Combine(bool has_new_schemas) {
- // If two registries publish a Schema for the same component then it's
- // undefined which version gets in the combined registry.
- //
- // The common case is that both registries want policy for the same component,
- // and the Schemas should be the same; in that case this makes no difference.
- //
- // But if the Schemas are different then one of the components is out of date.
- // In that case the policy loaded will be valid only for one of them, until
- // the outdated components are updated. This is a known limitation of the
- // way policies are loaded currently, but isn't a problem worth fixing for
- // the time being.
- DomainMap map(own_schema_map_->GetDomains());
- for (std::set<SchemaRegistry*>::const_iterator reg_it = registries_.begin();
- reg_it != registries_.end(); ++reg_it) {
- const DomainMap& reg_domain_map = (*reg_it)->schema_map()->GetDomains();
- for (DomainMap::const_iterator domain_it = reg_domain_map.begin();
- domain_it != reg_domain_map.end(); ++domain_it) {
- const ComponentMap& reg_component_map = domain_it->second;
- for (ComponentMap::const_iterator comp_it = reg_component_map.begin();
- comp_it != reg_component_map.end(); ++comp_it) {
- map[domain_it->first][comp_it->first] = comp_it->second;
- }
- }
- }
- schema_map_ = new SchemaMap(map);
- Notify(has_new_schemas);
-}
-
-} // namespace policy
« no previous file with comments | « chrome/browser/policy/schema_registry.h ('k') | chrome/browser/policy/schema_registry_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698