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

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

Issue 24367003: Refactored users of PolicySchema to use the new policy::Schema class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 7 years, 3 months 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
Index: chrome/browser/policy/policy_domain_descriptor.cc
diff --git a/chrome/browser/policy/policy_domain_descriptor.cc b/chrome/browser/policy/policy_domain_descriptor.cc
index c841a55a5acc32ab5e361e8654722c13b9de2114..f054710a5d13a9b953c8b99c0a74ce6ddf95c407 100644
--- a/chrome/browser/policy/policy_domain_descriptor.cc
+++ b/chrome/browser/policy/policy_domain_descriptor.cc
@@ -9,19 +9,18 @@
#include "base/values.h"
#include "chrome/browser/policy/policy_bundle.h"
#include "chrome/browser/policy/policy_map.h"
-#include "components/policy/core/common/policy_schema.h"
namespace policy {
namespace {
-bool Matches(const PolicySchema* schema, const base::Value& value) {
- if (!schema) {
+bool Matches(Schema schema, const base::Value& value) {
+ if (!schema.valid()) {
// Schema not found, invalid entry.
return false;
}
- if (!value.IsType(schema->type()))
+ if (!value.IsType(schema.type()))
return false;
const base::DictionaryValue* dict = NULL;
@@ -29,13 +28,13 @@ bool Matches(const PolicySchema* schema, const base::Value& value) {
if (value.GetAsDictionary(&dict)) {
for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd();
it.Advance()) {
- if (!Matches(schema->GetSchemaForProperty(it.key()), it.value()))
+ if (!Matches(schema.GetProperty(it.key()), it.value()))
return false;
}
} else if (value.GetAsList(&list)) {
for (base::ListValue::const_iterator it = list->begin();
it != list->end(); ++it) {
- if (!*it || !Matches(schema->GetSchemaForItems(), **it))
+ if (!*it || !Matches(schema.GetItems(), **it))
return false;
}
}
@@ -50,10 +49,11 @@ PolicyDomainDescriptor::PolicyDomainDescriptor(PolicyDomain domain)
void PolicyDomainDescriptor::RegisterComponent(
const std::string& component_id,
- scoped_ptr<PolicySchema> schema) {
- const PolicySchema*& entry = schema_map_[component_id];
+ scoped_ptr<SchemaOwner> schema) {
+ SchemaOwner*& entry = schema_owner_map_[component_id];
delete entry;
entry = schema.release();
+ schema_map_[component_id] = entry ? entry->schema() : Schema();
}
void PolicyDomainDescriptor::FilterBundle(PolicyBundle* bundle) const {
@@ -76,18 +76,17 @@ void PolicyDomainDescriptor::FilterBundle(PolicyBundle* bundle) const {
// TODO(joaodasilva): if a component is registered but doesn't have a schema
// then its policies aren't filtered. This behavior is enabled for M29 to
// allow a graceful update of the Legacy Browser Support extension; it'll
- // be removed for M30. http://crbug.com/240704
- if (!it_schema->second)
+ // be removed for M32. http://crbug.com/240704
+ Schema schema = it_schema->second;
+ if (!schema.valid())
continue;
- const PolicySchema* component_schema = it_schema->second;
PolicyMap* map = it_bundle->second;
for (PolicyMap::const_iterator it_map = map->begin();
it_map != map->end();) {
const std::string& policy_name = it_map->first;
const base::Value* policy_value = it_map->second.value;
- const PolicySchema* policy_schema =
- component_schema->GetSchemaForProperty(policy_name);
+ Schema policy_schema = schema.GetProperty(policy_name);
++it_map;
if (!policy_value || !Matches(policy_schema, *policy_value))
map->Erase(policy_name);
@@ -96,7 +95,7 @@ void PolicyDomainDescriptor::FilterBundle(PolicyBundle* bundle) const {
}
PolicyDomainDescriptor::~PolicyDomainDescriptor() {
- STLDeleteValues(&schema_map_);
+ STLDeleteValues(&schema_owner_map_);
}
} // namespace policy
« no previous file with comments | « chrome/browser/policy/policy_domain_descriptor.h ('k') | chrome/browser/policy/policy_domain_descriptor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698