// Copyright 2013 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 CHROMEOS_NETWORK_SHILL_PROPERTY_UTIL_H_ #define CHROMEOS_NETWORK_SHILL_PROPERTY_UTIL_H_ #include #include "base/memory/scoped_ptr.h" #include "chromeos/chromeos_export.h" namespace base { class DictionaryValue; class Value; } namespace chromeos { class NetworkUIData; namespace shill_property_util { // Sets the |ssid| in |properties|. CHROMEOS_EXPORT void SetSSID(const std::string ssid, base::DictionaryValue* properties); // Returns the SSID from |properties| in UTF-8 encoding. If |unknown_encoding| // is not NULL, it is set to whether the SSID is of unknown encoding. CHROMEOS_EXPORT std::string GetSSIDFromProperties( const base::DictionaryValue& properties, bool* unknown_encoding); // Returns the GUID (if available), SSID, or Name from |properties|. Only used // for logging and debugging. CHROMEOS_EXPORT std::string GetNetworkIdFromProperties( const base::DictionaryValue& properties); // Returns the name for the network represented by the Shill |properties|. For // WiFi it refers to the HexSSID. CHROMEOS_EXPORT std::string GetNameFromProperties( const std::string& service_path, const base::DictionaryValue& properties); // Returns the UIData specified by |value|. Returns NULL if the value cannot be // parsed. scoped_ptr GetUIDataFromValue(const base::Value& value); // Returns the NetworkUIData parsed from the UIData property of // |shill_dictionary|. If parsing fails or the field doesn't exist, returns // NULL. scoped_ptr GetUIDataFromProperties( const base::DictionaryValue& shill_dictionary); // Sets the UIData property in |shill_dictionary| to the serialization of // |ui_data|. void SetUIData(const NetworkUIData& ui_data, base::DictionaryValue* shill_dictionary); // Copy configuration properties required by Shill to identify a network in the // format that Shill expects on writes. // Only WiFi, VPN, Ethernet and EthernetEAP are supported. Wimax and Cellular // are not supported. // If |properties_read_from_shill| is true, it is assumed that // |service_properties| has the format that Shill exposes on reads, as opposed // to property dictionaries which are sent to Shill. Returns true only if all // required properties could be copied. bool CopyIdentifyingProperties(const base::DictionaryValue& service_properties, const bool properties_read_from_shill, base::DictionaryValue* dest); // Compares the identifying configuration properties of |new_properties| and // |old_properties|, returns true if they are identical. |new_properties| must // have the form that Shill expects on writes. |old_properties| must have the // form that Shill exposes on reads. See also CopyIdentifyingProperties. Only // WiFi, VPN, Ethernet and EthernetEAP are supported. Wimax and Cellular are not // supported. bool DoIdentifyingPropertiesMatch( const base::DictionaryValue& new_properties, const base::DictionaryValue& old_properties); // Returns true if |key| corresponds to a passphrase property. bool IsPassphraseKey(const std::string& key); // Parses |value| (which should be a Dictionary). Returns true and sets // |home_provider_id| if |value| was succesfully parsed. bool GetHomeProviderFromProperty(const base::Value& value, std::string* home_provider_id); } // namespace shill_property_util } // namespace chromeos #endif // CHROMEOS_NETWORK_SHILL_PROPERTY_UTIL_H_