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.
5 #ifndef CHROMEOS_NETWORK_SHILL_PROPERTY_UTIL_H_
6 #define CHROMEOS_NETWORK_SHILL_PROPERTY_UTIL_H_
10 #include "base/memory/scoped_ptr.h"
11 #include "chromeos/chromeos_export.h"
14 class DictionaryValue
;
22 namespace shill_property_util
{
24 // Sets the |ssid| in |properties|.
25 CHROMEOS_EXPORT
void SetSSID(const std::string ssid
,
26 base::DictionaryValue
* properties
);
28 // Returns the SSID from |properties| in UTF-8 encoding. If |unknown_encoding|
29 // is not NULL, it is set to whether the SSID is of unknown encoding.
30 CHROMEOS_EXPORT
std::string
GetSSIDFromProperties(
31 const base::DictionaryValue
& properties
,
32 bool* unknown_encoding
);
34 // Returns the GUID (if available), SSID, or Name from |properties|. Only used
35 // for logging and debugging.
36 CHROMEOS_EXPORT
std::string
GetNetworkIdFromProperties(
37 const base::DictionaryValue
& properties
);
39 // Returns the name for the network represented by the Shill |properties|. For
40 // WiFi it refers to the HexSSID.
41 CHROMEOS_EXPORT
std::string
GetNameFromProperties(
42 const std::string
& service_path
,
43 const base::DictionaryValue
& properties
);
45 // Returns the UIData specified by |value|. Returns NULL if the value cannot be
47 scoped_ptr
<NetworkUIData
> GetUIDataFromValue(const base::Value
& value
);
49 // Returns the NetworkUIData parsed from the UIData property of
50 // |shill_dictionary|. If parsing fails or the field doesn't exist, returns
52 scoped_ptr
<NetworkUIData
> GetUIDataFromProperties(
53 const base::DictionaryValue
& shill_dictionary
);
55 // Sets the UIData property in |shill_dictionary| to the serialization of
57 void SetUIData(const NetworkUIData
& ui_data
,
58 base::DictionaryValue
* shill_dictionary
);
60 // Copy configuration properties required by Shill to identify a network in the
61 // format that Shill expects on writes.
62 // Only WiFi, VPN, Ethernet and EthernetEAP are supported. Wimax and Cellular
64 // If |properties_read_from_shill| is true, it is assumed that
65 // |service_properties| has the format that Shill exposes on reads, as opposed
66 // to property dictionaries which are sent to Shill. Returns true only if all
67 // required properties could be copied.
68 bool CopyIdentifyingProperties(const base::DictionaryValue
& service_properties
,
69 const bool properties_read_from_shill
,
70 base::DictionaryValue
* dest
);
72 // Compares the identifying configuration properties of |new_properties| and
73 // |old_properties|, returns true if they are identical. |new_properties| must
74 // have the form that Shill expects on writes. |old_properties| must have the
75 // form that Shill exposes on reads. See also CopyIdentifyingProperties. Only
76 // WiFi, VPN, Ethernet and EthernetEAP are supported. Wimax and Cellular are not
78 bool DoIdentifyingPropertiesMatch(
79 const base::DictionaryValue
& new_properties
,
80 const base::DictionaryValue
& old_properties
);
82 // Returns true if |key| corresponds to a passphrase property.
83 bool IsPassphraseKey(const std::string
& key
);
85 // Parses |value| (which should be a Dictionary). Returns true and sets
86 // |home_provider_id| if |value| was succesfully parsed.
87 bool GetHomeProviderFromProperty(const base::Value
& value
,
88 std::string
* home_provider_id
);
90 } // namespace shill_property_util
92 } // namespace chromeos
94 #endif // CHROMEOS_NETWORK_SHILL_PROPERTY_UTIL_H_