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