1// Copyright 2013 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#ifndef CHROMEOS_NETWORK_POLICY_UTIL_H_ 6#define CHROMEOS_NETWORK_POLICY_UTIL_H_ 7 8#include <map> 9#include <string> 10 11#include "base/memory/scoped_ptr.h" 12 13namespace base { 14class DictionaryValue; 15} 16 17namespace chromeos { 18 19struct NetworkProfile; 20 21namespace policy_util { 22 23typedef std::map<std::string, const base::DictionaryValue*> GuidToPolicyMap; 24 25// Creates a managed ONC dictionary from the given arguments. Depending on the 26// profile type, the policies are assumed to come from the user or device policy 27// and and |user_settings| to be the user's non-shared or shared settings. 28// Each of the arguments can be NULL. 29// TODO(pneubeck): Add documentation of the returned format, see 30// https://crbug.com/408990 . 31scoped_ptr<base::DictionaryValue> CreateManagedONC( 32 const base::DictionaryValue* global_policy, 33 const base::DictionaryValue* network_policy, 34 const base::DictionaryValue* user_settings, 35 const base::DictionaryValue* active_settings, 36 const NetworkProfile* profile); 37 38// Adds properties to |shill_properties_to_update|, which are enforced on an 39// unamaged network by the global config |global_network_policy| of the policy. 40// |shill_dictionary| are the network's current properties read from Shill. 41void SetShillPropertiesForGlobalPolicy( 42 const base::DictionaryValue& shill_dictionary, 43 const base::DictionaryValue& global_network_policy, 44 base::DictionaryValue* shill_properties_to_update); 45 46// Creates a Shill property dictionary from the given arguments. The resulting 47// dictionary will be sent to Shill by the caller. Depending on the profile 48// type, |network_policy| is interpreted as the user or device policy and 49// |user_settings| as the user or shared settings. |network_policy| or 50// |user_settings| can be NULL, but not both. 51scoped_ptr<base::DictionaryValue> CreateShillConfiguration( 52 const NetworkProfile& profile, 53 const std::string& guid, 54 const base::DictionaryValue* global_policy, 55 const base::DictionaryValue* network_policy, 56 const base::DictionaryValue* user_settings); 57 58// Returns the policy from |policies| matching |actual_network|, if any exists. 59// Returns NULL otherwise. |actual_network| must be part of a ONC 60// NetworkConfiguration. 61const base::DictionaryValue* FindMatchingPolicy( 62 const GuidToPolicyMap& policies, 63 const base::DictionaryValue& actual_network); 64 65} // namespace policy_util 66 67} // namespace chromeos 68 69#endif // CHROMEOS_NETWORK_POLICY_UTIL_H_ 70