onc_utils.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1// Copyright (c) 2012 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 CHROME_BROWSER_CHROMEOS_NET_ONC_UTILS_H_ 6#define CHROME_BROWSER_CHROMEOS_NET_ONC_UTILS_H_ 7 8#include <string> 9 10#include "base/memory/scoped_ptr.h" 11#include "components/onc/onc_constants.h" 12 13class PrefService; 14 15namespace base { 16class DictionaryValue; 17class ListValue; 18} 19 20namespace user_manager { 21class User; 22} 23 24namespace chromeos { 25 26class NetworkState; 27 28namespace onc { 29 30// Translates |onc_proxy_settings|, which has to be a valid ONC ProxySettings 31// dictionary, to a ProxyConfig dictionary (see 32// chrome/browser/prefs/proxy_config_dictionary.h). 33// 34// This function is used to translate ONC ProxySettings to the "ProxyConfig" 35// field of the Shill configuration. 36scoped_ptr<base::DictionaryValue> ConvertOncProxySettingsToProxyConfig( 37 const base::DictionaryValue& onc_proxy_settings); 38 39// Replaces string placeholders in |network_configs|, which must be a list of 40// ONC NetworkConfigurations. Currently only user name placeholders are 41// implemented, which are replaced by attributes of the logged-in user with 42// |hashed_username|. 43void ExpandStringPlaceholdersInNetworksForUser( 44 const user_manager::User* user, 45 base::ListValue* network_configs); 46 47void ImportNetworksForUser(const user_manager::User* user, 48 const base::ListValue& network_configs, 49 std::string* error); 50 51// Looks up the policy for |guid| for the current active user and sets 52// |global_config| (if not NULL) and |onc_source| (if not NULL) accordingly. If 53// |guid| is empty, returns NULL and sets the |global_config| and |onc_source| 54// if a policy is found. 55const base::DictionaryValue* FindPolicyForActiveUser( 56 const std::string& guid, 57 ::onc::ONCSource* onc_source); 58 59// Returns the global network configuration section of the active user's network 60// policy (if |for_active_user| is true) or of the device policy. 61const base::DictionaryValue* GetGlobalConfigFromPolicy(bool for_active_user); 62 63// Convenvience function to retrieve the "AllowOnlyPolicyNetworksToAutoconnect" 64// setting from the global network configuration (see 65// GetGlobalConfigFromPolicy). 66bool PolicyAllowsOnlyPolicyNetworksToAutoconnect(bool for_active_user); 67 68// Returns the effective (user or device) policy for network |network|. Both 69// |profile_prefs| and |local_state_prefs| might be NULL. Returns NULL if no 70// applicable policy is found. Sets |onc_source| accordingly. 71const base::DictionaryValue* GetPolicyForNetwork( 72 const PrefService* profile_prefs, 73 const PrefService* local_state_prefs, 74 const NetworkState& network, 75 ::onc::ONCSource* onc_source); 76 77// Convenience function to check only whether a policy for a network exists. 78bool HasPolicyForNetwork(const PrefService* profile_prefs, 79 const PrefService* local_state_prefs, 80 const NetworkState& network); 81 82} // namespace onc 83} // namespace chromeos 84 85#endif // CHROME_BROWSER_CHROMEOS_NET_ONC_UTILS_H_ 86