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 13 namespace base { 14 class DictionaryValue; 15 } 16 17 namespace chromeos { 18 19 struct NetworkProfile; 20 21 namespace policy_util { 22 23 typedef 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 . 31 scoped_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. 41 void 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. 51 scoped_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. 61 const 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