| Index: chrome/browser/policy/policy_loader_win.cc
|
| diff --git a/chrome/browser/policy/policy_loader_win.cc b/chrome/browser/policy/policy_loader_win.cc
|
| index 57bea21b921f26cdd04f68c102153c610fea0172..4f708a66e337d20442f178536314f620c3a2e32e 100644
|
| --- a/chrome/browser/policy/policy_loader_win.cc
|
| +++ b/chrome/browser/policy/policy_loader_win.cc
|
| @@ -33,6 +33,8 @@
|
| #include "chrome/browser/policy/preg_parser_win.h"
|
| #include "chrome/browser/policy/registry_dict_win.h"
|
| #include "components/json_schema/json_schema_constants.h"
|
| +#include "components/policy/core/common/policy_namespace.h"
|
| +#include "components/policy/core/common/schema.h"
|
| #include "policy/policy_constants.h"
|
|
|
| namespace schema = json_schema_constants;
|
| @@ -210,12 +212,10 @@ const base::FilePath::CharType PolicyLoaderWin::kPRegFileName[] =
|
|
|
| PolicyLoaderWin::PolicyLoaderWin(
|
| scoped_refptr<base::SequencedTaskRunner> task_runner,
|
| - const PolicyDefinitionList* policy_list,
|
| const string16& chrome_policy_key,
|
| AppliedGPOListProvider* gpo_provider)
|
| : AsyncPolicyLoader(task_runner),
|
| is_initialized_(false),
|
| - policy_list_(policy_list),
|
| chrome_policy_key_(chrome_policy_key),
|
| gpo_provider_(gpo_provider),
|
| user_policy_changed_event_(false, false),
|
| @@ -245,10 +245,10 @@ PolicyLoaderWin::~PolicyLoaderWin() {
|
|
|
| // static
|
| scoped_ptr<PolicyLoaderWin> PolicyLoaderWin::Create(
|
| - scoped_refptr<base::SequencedTaskRunner> task_runner,
|
| - const PolicyDefinitionList* policy_list) {
|
| + scoped_refptr<base::SequencedTaskRunner> task_runner) {
|
| return make_scoped_ptr(
|
| - new PolicyLoaderWin(task_runner, policy_list, kRegistryChromePolicyKey,
|
| + new PolicyLoaderWin(task_runner,
|
| + kRegistryChromePolicyKey,
|
| g_win_gpo_list_provider.Pointer()));
|
| }
|
|
|
| @@ -327,15 +327,20 @@ scoped_ptr<PolicyBundle> PolicyLoaderWin::Load() {
|
| }
|
|
|
| void PolicyLoaderWin::BuildChromePolicySchema() {
|
| + // TODO(joaodasilva): use the Schema directly instead of building this
|
| + // DictionaryValue.
|
| scoped_ptr<base::DictionaryValue> properties(new base::DictionaryValue());
|
| - for (const PolicyDefinitionList::Entry* e = policy_list_->begin;
|
| - e != policy_list_->end; ++e) {
|
| - const std::string schema_type = GetSchemaTypeForValueType(e->value_type);
|
| + const Schema* chrome_schema =
|
| + schema_map()->GetSchema(PolicyNamespace(POLICY_DOMAIN_CHROME, ""));
|
| + for (Schema::Iterator it = chrome_schema->GetPropertiesIterator();
|
| + !it.IsAtEnd(); it.Advance()) {
|
| + const std::string schema_type =
|
| + GetSchemaTypeForValueType(it.schema().type());
|
| scoped_ptr<base::DictionaryValue> entry_schema(new base::DictionaryValue());
|
| entry_schema->SetStringWithoutPathExpansion(json_schema_constants::kType,
|
| schema_type);
|
|
|
| - if (e->value_type == base::Value::TYPE_LIST) {
|
| + if (it.schema().type() == base::Value::TYPE_LIST) {
|
| scoped_ptr<base::DictionaryValue> items_schema(
|
| new base::DictionaryValue());
|
| items_schema->SetStringWithoutPathExpansion(
|
| @@ -343,7 +348,7 @@ void PolicyLoaderWin::BuildChromePolicySchema() {
|
| entry_schema->SetWithoutPathExpansion(json_schema_constants::kItems,
|
| items_schema.release());
|
| }
|
| - properties->SetWithoutPathExpansion(e->name, entry_schema.release());
|
| + properties->SetWithoutPathExpansion(it.key(), entry_schema.release());
|
| }
|
| chrome_policy_schema_.SetStringWithoutPathExpansion(
|
| json_schema_constants::kType, json_schema_constants::kObject);
|
|
|