configuration_policy_provider.cc revision 4a5e2dc747d50c653511c68ccb2cfbfb740bd5a7
1// Copyright (c) 2010 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 "chrome/browser/policy/configuration_policy_provider.h"
6
7#include "base/values.h"
8#include "chrome/common/notification_service.h"
9
10namespace policy {
11
12ConfigurationPolicyProvider::ConfigurationPolicyProvider(
13    const PolicyDefinitionList* policy_list)
14    : policy_definition_list_(policy_list) {
15}
16
17ConfigurationPolicyProvider::~ConfigurationPolicyProvider() {}
18
19void ConfigurationPolicyProvider::NotifyStoreOfPolicyChange() {
20  NotificationService::current()->Notify(
21      NotificationType::POLICY_CHANGED,
22      Source<ConfigurationPolicyProvider>(this),
23      NotificationService::NoDetails());
24}
25
26void ConfigurationPolicyProvider::DecodePolicyValueTree(
27    DictionaryValue* policies,
28    ConfigurationPolicyStoreInterface* store) {
29  const PolicyDefinitionList* policy_list(policy_definition_list());
30  for (const PolicyDefinitionList::Entry* i = policy_list->begin;
31       i != policy_list->end; ++i) {
32    Value* value;
33    if (policies->Get(i->name, &value) && value->IsType(i->value_type))
34      store->Apply(i->policy_type, value->DeepCopy());
35  }
36
37  // TODO(mnissler): Handle preference overrides once |ConfigurationPolicyStore|
38  // supports it.
39}
40
41}  // namespace policy
42