blob: 35d076267a7d0963bda11f5e342ab413bb4b37ee [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_NET_ONC_UTILS_H_
#define CHROME_BROWSER_CHROMEOS_NET_ONC_UTILS_H_
#include <string>
#include "base/memory/scoped_ptr.h"
#include "components/onc/onc_constants.h"
class PrefService;
namespace base {
class DictionaryValue;
class ListValue;
}
namespace chromeos {
class FavoriteState;
class NetworkState;
class User;
namespace onc {
// Translates |onc_proxy_settings|, which has to be a valid ONC ProxySettings
// dictionary, to a ProxyConfig dictionary (see
// chrome/browser/prefs/proxy_config_dictionary.h).
//
// This function is used to translate ONC ProxySettings to the "ProxyConfig"
// field of the Shill configuration.
scoped_ptr<base::DictionaryValue> ConvertOncProxySettingsToProxyConfig(
const base::DictionaryValue& onc_proxy_settings);
// Replaces string placeholders in |network_configs|, which must be a list of
// ONC NetworkConfigurations. Currently only user name placeholders are
// implemented, which are replaced by attributes of the logged-in user with
// |hashed_username|.
void ExpandStringPlaceholdersInNetworksForUser(
const chromeos::User* user,
base::ListValue* network_configs);
void ImportNetworksForUser(const chromeos::User* user,
const base::ListValue& network_configs,
std::string* error);
// Looks up the policy for |guid| for the current active user and sets
// |onc_source| accordingly.
const base::DictionaryValue* FindPolicyForActiveUser(
const std::string& guid,
::onc::ONCSource* onc_source);
// Returns the effective (user or device) policy for network |favorite|. Both
// |profile_prefs| and |local_state_prefs| might be NULL. Returns NULL if no
// applicable policy is found. Sets |onc_source| accordingly.
const base::DictionaryValue* GetPolicyForFavoriteNetwork(
const PrefService* profile_prefs,
const PrefService* local_state_prefs,
const FavoriteState& favorite,
::onc::ONCSource* onc_source);
// Convenience function to check only whether a policy for a network exists.
bool HasPolicyForFavoriteNetwork(const PrefService* profile_prefs,
const PrefService* local_state_prefs,
const FavoriteState& network);
} // namespace onc
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_NET_ONC_UTILS_H_