summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
authorpneubeck@chromium.org <pneubeck@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-14 13:08:30 +0000
committerpneubeck@chromium.org <pneubeck@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-14 13:08:30 +0000
commitb1eff5b6e58841c1b4551a90f853b4f7a59e70f3 (patch)
treee2028b271b8c938de2ec91f1ab1b74e106ef2266 /chromeos
parent65295fbe26224e77949b1624bf5d14b9c0ce1b99 (diff)
downloadchromium_src-b1eff5b6e58841c1b4551a90f853b4f7a59e70f3.zip
chromium_src-b1eff5b6e58841c1b4551a90f853b4f7a59e70f3.tar.gz
chromium_src-b1eff5b6e58841c1b4551a90f853b4f7a59e70f3.tar.bz2
Consistently use HexSSID instead of SSID in Chrome.
Previously a complex combination of shill::kSSIDProperty, shill::kWiFiHexSsid and shill::kNameProperty were used to reconstruct the actual ssid of a network. Instead, Chrome now completely ignores kSSIDProperty. This will also simplify configuration of networks, because HexSSID can be read from a profile and be used for configuration afterwards. This CL depends on adaptions on Shill's side (always provide and accept HexSSID). BUG=285773 Review URL: https://codereview.chromium.org/25488003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@228450 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r--chromeos/dbus/shill_client_unittest_base.cc5
-rw-r--r--chromeos/dbus/shill_service_client_stub.cc5
-rw-r--r--chromeos/network/network_configuration_handler_unittest.cc16
-rw-r--r--chromeos/network/network_state_unittest.cc63
-rw-r--r--chromeos/network/onc/onc_translation_tables.cc3
-rw-r--r--chromeos/network/onc/onc_translator_onc_to_shill.cc5
-rw-r--r--chromeos/network/onc/onc_translator_shill_to_onc.cc5
-rw-r--r--chromeos/network/shill_property_util.cc135
-rw-r--r--chromeos/network/shill_property_util.h14
-rw-r--r--chromeos/test/data/network/policy/shill_managed_wifi1.json4
-rw-r--r--chromeos/test/data/network/policy/shill_policy_on_unconfigured_wifi1.json4
-rw-r--r--chromeos/test/data/network/policy/shill_policy_on_unmanaged_user_wifi1.json2
-rw-r--r--chromeos/test/data/network/policy/shill_policy_on_unmanaged_user_wifi1_wo_uidata.json4
-rw-r--r--chromeos/test/data/network/policy/shill_unmanaged_user_wifi1.json2
-rw-r--r--chromeos/test/data/network/policy/shill_unmanaged_user_wifi1_wo_uidata.json2
-rw-r--r--chromeos/test/data/network/policy/shill_unmanaged_user_wifi2.json2
-rw-r--r--chromeos/test/data/network/shill_wifi_clientcert.json4
-rw-r--r--chromeos/test/data/network/shill_wifi_clientref.json4
-rw-r--r--chromeos/test/data/network/shill_wifi_psk.json2
-rw-r--r--chromeos/test/data/network/shill_wifi_with_state.json2
-rw-r--r--chromeos/test/data/network/shill_wifi_wpa1.json4
21 files changed, 169 insertions, 118 deletions
diff --git a/chromeos/dbus/shill_client_unittest_base.cc b/chromeos/dbus/shill_client_unittest_base.cc
index ccc481c..f53586f 100644
--- a/chromeos/dbus/shill_client_unittest_base.cc
+++ b/chromeos/dbus/shill_client_unittest_base.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "base/json/json_writer.h"
#include "base/values.h"
+#include "chromeos/network/shill_property_util.h"
#include "dbus/message.h"
#include "dbus/object_path.h"
#include "dbus/values_util.h"
@@ -288,9 +289,7 @@ ShillClientUnittestBase::CreateExampleServiceProperties() {
properties->SetWithoutPathExpansion(
shill::kTypeProperty,
base::Value::CreateStringValue(shill::kTypeWifi));
- properties->SetWithoutPathExpansion(
- shill::kSSIDProperty,
- base::Value::CreateStringValue("testssid"));
+ shill_property_util::SetSSID("testssid", properties);
properties->SetWithoutPathExpansion(
shill::kSecurityProperty,
base::Value::CreateStringValue(shill::kSecurityPsk));
diff --git a/chromeos/dbus/shill_service_client_stub.cc b/chromeos/dbus/shill_service_client_stub.cc
index 8e2be67..c03fc48 100644
--- a/chromeos/dbus/shill_service_client_stub.cc
+++ b/chromeos/dbus/shill_service_client_stub.cc
@@ -16,6 +16,7 @@
#include "chromeos/dbus/shill_manager_client.h"
#include "chromeos/dbus/shill_property_changed_observer.h"
#include "chromeos/dbus/shill_stub_helper.h"
+#include "chromeos/network/shill_property_util.h"
#include "dbus/bus.h"
#include "dbus/message.h"
#include "dbus/object_path.h"
@@ -345,9 +346,7 @@ void ShillServiceClientStub::AddServiceWithIPConfig(
base::DictionaryValue* properties =
GetModifiableServiceProperties(service_path, true);
connect_behavior_.erase(service_path);
- properties->SetWithoutPathExpansion(
- shill::kSSIDProperty,
- base::Value::CreateStringValue(service_path));
+ shill_property_util::SetSSID(name, properties);
properties->SetWithoutPathExpansion(
shill::kNameProperty,
base::Value::CreateStringValue(name));
diff --git a/chromeos/network/network_configuration_handler_unittest.cc b/chromeos/network/network_configuration_handler_unittest.cc
index e353543..af8d593 100644
--- a/chromeos/network/network_configuration_handler_unittest.cc
+++ b/chromeos/network/network_configuration_handler_unittest.cc
@@ -17,6 +17,7 @@
#include "chromeos/network/network_state.h"
#include "chromeos/network/network_state_handler.h"
#include "chromeos/network/network_state_handler_observer.h"
+#include "chromeos/network/shill_property_util.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
@@ -333,11 +334,8 @@ TEST_F(NetworkConfigurationHandlerTest, CreateConfiguration) {
std::string networkName = "MyNetwork";
std::string key = "SSID";
std::string profile = "profile path";
- scoped_ptr<base::StringValue> networkNameValue(
- base::Value::CreateStringValue(networkName));
base::DictionaryValue value;
- value.SetWithoutPathExpansion(shill::kSSIDProperty,
- base::Value::CreateStringValue(networkName));
+ shill_property_util::SetSSID(networkName, &value);
value.SetWithoutPathExpansion(shill::kProfileProperty,
base::Value::CreateStringValue(profile));
@@ -581,7 +579,7 @@ TEST_F(NetworkConfigurationHandlerStubTest, StubGetNameFromWifiHex) {
TEST_F(NetworkConfigurationHandlerStubTest, StubCreateConfiguration) {
const std::string service_path("test_wifi");
base::DictionaryValue properties;
- properties.SetStringWithoutPathExpansion(shill::kSSIDProperty, service_path);
+ shill_property_util::SetSSID(service_path, &properties);
properties.SetStringWithoutPathExpansion(shill::kNameProperty, service_path);
properties.SetStringWithoutPathExpansion(shill::kGuidProperty, service_path);
properties.SetStringWithoutPathExpansion(
@@ -601,12 +599,12 @@ TEST_F(NetworkConfigurationHandlerStubTest, StubCreateConfiguration) {
EXPECT_FALSE(create_service_path_.empty());
- std::string ssid;
+ std::string guid;
EXPECT_TRUE(GetServiceStringProperty(
- create_service_path_, shill::kSSIDProperty, &ssid));
- std::string actual_profile;
- EXPECT_EQ(service_path, ssid);
+ create_service_path_, shill::kGuidProperty, &guid));
+ EXPECT_EQ(service_path, guid);
+ std::string actual_profile;
EXPECT_TRUE(GetServiceStringProperty(
create_service_path_, shill::kProfileProperty, &actual_profile));
EXPECT_EQ(shill_stub_helper::kSharedProfilePath, actual_profile);
diff --git a/chromeos/network/network_state_unittest.cc b/chromeos/network/network_state_unittest.cc
index f652493..642d77f 100644
--- a/chromeos/network/network_state_unittest.cc
+++ b/chromeos/network/network_state_unittest.cc
@@ -75,41 +75,53 @@ class NetworkStateTest : public testing::Test {
} // namespace
-// Seting kNameProperty should set network name after call to
-// InitialPropertiesReceived() in SetStringProperty().
-TEST_F(NetworkStateTest, SsidAscii) {
- std::string wifi_setname = "SSID TEST";
- std::string wifi_setname_result = "SSID TEST";
- EXPECT_TRUE(SetStringProperty(shill::kNameProperty, wifi_setname));
- EXPECT_EQ(network_state_.name(), wifi_setname_result);
+// Setting kNameProperty should set network name after call to
+// InitialPropertiesReceived().
+TEST_F(NetworkStateTest, NameAscii) {
+ EXPECT_TRUE(SetStringProperty(shill::kTypeProperty, shill::kTypeVPN));
+
+ std::string network_setname = "Name TEST";
+ EXPECT_TRUE(SetStringProperty(shill::kNameProperty, network_setname));
+ EXPECT_FALSE(SignalInitialPropertiesReceived());
+ EXPECT_EQ(network_state_.name(), network_setname);
}
-TEST_F(NetworkStateTest, SsidAsciiWithNull) {
- std::string wifi_setname = "SSID TEST\x00xxx";
- std::string wifi_setname_result = "SSID TEST";
- EXPECT_TRUE(SetStringProperty(shill::kNameProperty, wifi_setname));
- EXPECT_EQ(network_state_.name(), wifi_setname_result);
+TEST_F(NetworkStateTest, NameAsciiWithNull) {
+ EXPECT_TRUE(SetStringProperty(shill::kTypeProperty, shill::kTypeVPN));
+
+ std::string network_setname = "Name TEST\x00xxx";
+ std::string network_setname_result = "Name TEST";
+ EXPECT_TRUE(SetStringProperty(shill::kNameProperty, network_setname));
+ EXPECT_FALSE(SignalInitialPropertiesReceived());
+ EXPECT_EQ(network_state_.name(), network_setname_result);
}
-// UTF8 SSID
-TEST_F(NetworkStateTest, SsidUtf8) {
+// Truncates invalid UTF-8
+TEST_F(NetworkStateTest, NameTruncateInvalid) {
+ EXPECT_TRUE(SetStringProperty(shill::kTypeProperty, shill::kTypeVPN));
+
+ std::string network_setname = "SSID TEST \x01\xff!";
+ std::string network_setname_result = "SSID TEST \xEF\xBF\xBD\xEF\xBF\xBD!";
+ EXPECT_TRUE(SetStringProperty(shill::kNameProperty, network_setname));
+ EXPECT_TRUE(SignalInitialPropertiesReceived());
+ EXPECT_EQ(network_state_.name(), network_setname_result);
+}
+
+// If HexSSID doesn't exist, fallback to NameProperty.
+TEST_F(NetworkStateTest, SsidFromName) {
+ EXPECT_TRUE(SetStringProperty(shill::kTypeProperty, shill::kTypeWifi));
+
std::string wifi_utf8 = "UTF-8 \u3042\u3044\u3046";
std::string wifi_utf8_result = "UTF-8 \xE3\x81\x82\xE3\x81\x84\xE3\x81\x86";
EXPECT_TRUE(SetStringProperty(shill::kNameProperty, wifi_utf8));
+ EXPECT_FALSE(SignalInitialPropertiesReceived());
EXPECT_EQ(network_state_.name(), wifi_utf8_result);
}
-// Truncates invalid UTF-8
-TEST_F(NetworkStateTest, SsidTruncateInvalid) {
- std::string wifi_setname2 = "SSID TEST \x01\xff!";
- std::string wifi_setname2_result = "SSID TEST \xEF\xBF\xBD\xEF\xBF\xBD!";
- EXPECT_TRUE(SetStringProperty(shill::kNameProperty, wifi_setname2));
- EXPECT_TRUE(SignalInitialPropertiesReceived());
- EXPECT_EQ(network_state_.name(), wifi_setname2_result);
-}
-
// latin1 SSID -> UTF8 SSID (Hex)
TEST_F(NetworkStateTest, SsidLatin) {
+ EXPECT_TRUE(SetStringProperty(shill::kTypeProperty, shill::kTypeWifi));
+
std::string wifi_latin1 = "latin-1 \xc0\xcb\xcc\xd6\xfb";
std::string wifi_latin1_hex =
base::HexEncode(wifi_latin1.c_str(), wifi_latin1.length());
@@ -121,8 +133,11 @@ TEST_F(NetworkStateTest, SsidLatin) {
// Hex SSID
TEST_F(NetworkStateTest, SsidHex) {
- std::string wifi_hex = "5468697320697320484558205353494421";
+ EXPECT_TRUE(SetStringProperty(shill::kTypeProperty, shill::kTypeWifi));
+
std::string wifi_hex_result = "This is HEX SSID!";
+ std::string wifi_hex =
+ base::HexEncode(wifi_hex_result.c_str(), wifi_hex_result.length());
EXPECT_FALSE(SetStringProperty(shill::kWifiHexSsid, wifi_hex));
EXPECT_TRUE(SignalInitialPropertiesReceived());
EXPECT_EQ(network_state_.name(), wifi_hex_result);
diff --git a/chromeos/network/onc/onc_translation_tables.cc b/chromeos/network/onc/onc_translation_tables.cc
index ce6dd3e..a0bebbe 100644
--- a/chromeos/network/onc/onc_translation_tables.cc
+++ b/chromeos/network/onc/onc_translation_tables.cc
@@ -99,7 +99,8 @@ const FieldTranslationEntry wifi_fields[] = {
{ ::onc::wifi::kFrequencyList, shill::kWifiFrequencyListProperty},
{ ::onc::wifi::kHiddenSSID, shill::kWifiHiddenSsid},
{ ::onc::wifi::kPassphrase, shill::kPassphraseProperty},
- { ::onc::wifi::kSSID, shill::kSSIDProperty},
+ // This field is converted during translation, see onc_translator_*.
+ // { ::onc::wifi::kSSID, shill::kWifiHexSsid},
// This field is converted during translation, see onc_translator_*.
// { ::onc::wifi::kSecurity, shill::kSecurityProperty },
{ ::onc::wifi::kSignalStrength, shill::kSignalStrengthProperty},
diff --git a/chromeos/network/onc/onc_translator_onc_to_shill.cc b/chromeos/network/onc/onc_translator_onc_to_shill.cc
index c2ba0e8..f6b0117 100644
--- a/chromeos/network/onc/onc_translator_onc_to_shill.cc
+++ b/chromeos/network/onc/onc_translator_onc_to_shill.cc
@@ -18,6 +18,7 @@
#include "base/values.h"
#include "chromeos/network/onc/onc_signature.h"
#include "chromeos/network/onc/onc_translation_tables.h"
+#include "chromeos/network/shill_property_util.h"
#include "components/onc/onc_constants.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
@@ -156,6 +157,10 @@ void LocalTranslator::TranslateWiFi() {
TranslateWithTableAndSet(security, kWiFiSecurityTable,
shill::kSecurityProperty);
+ std::string ssid;
+ onc_object_->GetStringWithoutPathExpansion(::onc::wifi::kSSID, &ssid);
+ shill_property_util::SetSSID(ssid, shill_dictionary_);
+
// We currently only support managed and no adhoc networks.
shill_dictionary_->SetStringWithoutPathExpansion(shill::kModeProperty,
shill::kModeManaged);
diff --git a/chromeos/network/onc/onc_translator_shill_to_onc.cc b/chromeos/network/onc/onc_translator_shill_to_onc.cc
index ed1e643..bc14913 100644
--- a/chromeos/network/onc/onc_translator_shill_to_onc.cc
+++ b/chromeos/network/onc/onc_translator_shill_to_onc.cc
@@ -14,6 +14,7 @@
#include "chromeos/network/network_state.h"
#include "chromeos/network/onc/onc_signature.h"
#include "chromeos/network/onc/onc_translation_tables.h"
+#include "chromeos/network/shill_property_util.h"
#include "components/onc/onc_constants.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
@@ -216,6 +217,10 @@ void ShillToONCTranslator::TranslateVPN() {
void ShillToONCTranslator::TranslateWiFiWithState() {
TranslateWithTableAndSet(
shill::kSecurityProperty, kWiFiSecurityTable, ::onc::wifi::kSecurity);
+ std::string ssid = shill_property_util::GetSSIDFromProperties(
+ *shill_dictionary_, NULL /* ignore unknown encoding */);
+ if (!ssid.empty())
+ onc_object_->SetStringWithoutPathExpansion(::onc::wifi::kSSID, ssid);
CopyPropertiesAccordingToSignature();
}
diff --git a/chromeos/network/shill_property_util.cc b/chromeos/network/shill_property_util.cc
index 0f736d8..3077218 100644
--- a/chromeos/network/shill_property_util.cc
+++ b/chromeos/network/shill_property_util.cc
@@ -58,86 +58,105 @@ bool CopyStringFromDictionary(const base::DictionaryValue& source,
} // namespace
-std::string GetNameFromProperties(const std::string& service_path,
- const base::DictionaryValue& properties) {
- std::string name, hex_ssid;
- properties.GetStringWithoutPathExpansion(shill::kNameProperty, &name);
+void SetSSID(const std::string ssid, base::DictionaryValue* properties) {
+ std::string hex_ssid = base::HexEncode(ssid.c_str(), ssid.size());
+ properties->SetStringWithoutPathExpansion(shill::kWifiHexSsid, hex_ssid);
+}
+
+std::string GetSSIDFromProperties(const base::DictionaryValue& properties,
+ bool* unknown_encoding) {
+ if (unknown_encoding)
+ *unknown_encoding = false;
+ std::string hex_ssid;
properties.GetStringWithoutPathExpansion(shill::kWifiHexSsid, &hex_ssid);
if (hex_ssid.empty()) {
- if (name.empty())
- return name;
- // Validate name for UTF8.
- std::string valid_ssid = ValidateUTF8(name);
- if (valid_ssid != name) {
- NET_LOG_DEBUG(
- "GetNameFromProperties",
- base::StringPrintf(
- "%s: UTF8: %s", service_path.c_str(), valid_ssid.c_str()));
- }
- return valid_ssid;
+ NET_LOG_ERROR("GetSSIDFromProperties", "No HexSSID set.");
+ return std::string();
}
std::string ssid;
std::vector<uint8> raw_ssid_bytes;
if (base::HexStringToBytes(hex_ssid, &raw_ssid_bytes)) {
ssid = std::string(raw_ssid_bytes.begin(), raw_ssid_bytes.end());
- NET_LOG_DEBUG("GetNameFromProperties",
- base::StringPrintf("%s: %s, SSID: %s",
- service_path.c_str(),
- hex_ssid.c_str(),
- ssid.c_str()));
+ NET_LOG_DEBUG(
+ "GetSSIDFromProperties",
+ base::StringPrintf("%s, SSID: %s", hex_ssid.c_str(), ssid.c_str()));
} else {
- NET_LOG_ERROR("GetNameFromProperties",
- base::StringPrintf("%s: Error processing: %s",
- service_path.c_str(),
- hex_ssid.c_str()));
- return name;
+ NET_LOG_ERROR("GetSSIDFromProperties",
+ base::StringPrintf("Error processing: %s", hex_ssid.c_str()));
+ return std::string();
}
- if (IsStringUTF8(ssid)) {
- if (ssid != name) {
- NET_LOG_DEBUG("GetNameFromProperties",
- base::StringPrintf(
- "%s: UTF8: %s", service_path.c_str(), ssid.c_str()));
- }
+ if (IsStringUTF8(ssid))
return ssid;
- }
// Detect encoding and convert to UTF-8.
- std::string country_code;
- properties.GetStringWithoutPathExpansion(shill::kCountryProperty,
- &country_code);
std::string encoding;
if (!base::DetectEncoding(ssid, &encoding)) {
// TODO(stevenjb): This is currently experimental. If we find a case where
// base::DetectEncoding() fails, we need to figure out whether we can use
// country_code with ConvertToUtf8(). crbug.com/233267.
- encoding = country_code;
+ properties.GetStringWithoutPathExpansion(shill::kCountryProperty,
+ &encoding);
}
- if (!encoding.empty()) {
- std::string utf8_ssid;
- if (base::ConvertToUtf8AndNormalize(ssid, encoding, &utf8_ssid)) {
- if (utf8_ssid != name) {
- NET_LOG_DEBUG("GetNameFromProperties",
- base::StringPrintf("%s: Encoding=%s: %s",
- service_path.c_str(),
- encoding.c_str(),
- utf8_ssid.c_str()));
- }
- return utf8_ssid;
+ std::string utf8_ssid;
+ if (!encoding.empty() &&
+ base::ConvertToUtf8AndNormalize(ssid, encoding, &utf8_ssid)) {
+ if (utf8_ssid != ssid) {
+ NET_LOG_DEBUG(
+ "GetSSIDFromProperties",
+ base::StringPrintf(
+ "Encoding=%s: %s", encoding.c_str(), utf8_ssid.c_str()));
}
+ return utf8_ssid;
}
- // Unrecognized encoding. Only use raw bytes if name_ is empty.
- NET_LOG_DEBUG("GetNameFromProperties",
- base::StringPrintf("%s: Unrecognized Encoding=%s: %s",
- service_path.c_str(),
- encoding.c_str(),
- ssid.c_str()));
- if (name.empty() && !ssid.empty())
- return ssid;
- return name;
+ if (unknown_encoding)
+ *unknown_encoding = true;
+ NET_LOG_DEBUG(
+ "GetSSIDFromProperties",
+ base::StringPrintf("Unrecognized Encoding=%s", encoding.c_str()));
+ return ssid;
+}
+
+std::string GetNameFromProperties(const std::string& service_path,
+ const base::DictionaryValue& properties) {
+ std::string name;
+ properties.GetStringWithoutPathExpansion(shill::kNameProperty, &name);
+
+ std::string validated_name = ValidateUTF8(name);
+ if (validated_name != name) {
+ NET_LOG_DEBUG("GetNameFromProperties",
+ base::StringPrintf("Validated name %s: UTF8: %s",
+ service_path.c_str(),
+ validated_name.c_str()));
+ }
+
+ std::string type;
+ properties.GetStringWithoutPathExpansion(shill::kTypeProperty, &type);
+ if (!NetworkTypePattern::WiFi().MatchesType(type))
+ return validated_name;
+
+ bool unknown_ssid_encoding = false;
+ std::string ssid = GetSSIDFromProperties(properties, &unknown_ssid_encoding);
+ if (ssid.empty())
+ NET_LOG_ERROR("GetNameFromProperties", "No SSID set: " + service_path);
+
+ // Use |validated_name| if |ssid| is empty.
+ // And if the encoding of the SSID is unknown, use |ssid|, which contains raw
+ // bytes in that case, only if |validated_name| is empty.
+ if (ssid.empty() || (unknown_ssid_encoding && !validated_name.empty()))
+ return validated_name;
+
+ if (ssid != validated_name) {
+ NET_LOG_DEBUG("GetNameFromProperties",
+ base::StringPrintf("%s: SSID: %s, Name: %s",
+ service_path.c_str(),
+ ssid.c_str(),
+ validated_name.c_str()));
+ }
+ return ssid;
}
scoped_ptr<NetworkUIData> GetUIDataFromValue(const base::Value& ui_data_value) {
@@ -192,8 +211,8 @@ bool CopyIdentifyingProperties(const base::DictionaryValue& service_properties,
if (type == shill::kTypeWifi) {
success &= CopyStringFromDictionary(
service_properties, shill::kSecurityProperty, dest);
- success &= CopyStringFromDictionary(
- service_properties, shill::kSSIDProperty, dest);
+ success &=
+ CopyStringFromDictionary(service_properties, shill::kWifiHexSsid, dest);
success &= CopyStringFromDictionary(
service_properties, shill::kModeProperty, dest);
} else if (type == shill::kTypeVPN) {
diff --git a/chromeos/network/shill_property_util.h b/chromeos/network/shill_property_util.h
index 9072a28..dc1f45f 100644
--- a/chromeos/network/shill_property_util.h
+++ b/chromeos/network/shill_property_util.h
@@ -21,8 +21,18 @@ class NetworkUIData;
namespace shill_property_util {
-// Generates a name from properties."Wifi.HexSSID" if present, otherwise
-// validates properties.Name and returns a valid utf8 version.
+// 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 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);
diff --git a/chromeos/test/data/network/policy/shill_managed_wifi1.json b/chromeos/test/data/network/policy/shill_managed_wifi1.json
index 031e5cb..c138013 100644
--- a/chromeos/test/data/network/policy/shill_managed_wifi1.json
+++ b/chromeos/test/data/network/policy/shill_managed_wifi1.json
@@ -6,8 +6,8 @@
"Mode": "managed",
"Passphrase": "user's passphrase",
"Profile": "/profile/chronos/shill",
- "SSID": "wifi1",
"Security": "802_1x",
"Type": "wifi",
- "UIData": "{\"onc_source\":\"user_policy\",\"user_settings\":{\"WiFi\":{\"Passphrase\":\"FAKE_CREDENTIAL_VPaJDV9x\"}}}"
+ "UIData": "{\"onc_source\":\"user_policy\",\"user_settings\":{\"WiFi\":{\"Passphrase\":\"FAKE_CREDENTIAL_VPaJDV9x\"}}}",
+ "WiFi.HexSSID": "7769666931" // "wifi1"
}
diff --git a/chromeos/test/data/network/policy/shill_policy_on_unconfigured_wifi1.json b/chromeos/test/data/network/policy/shill_policy_on_unconfigured_wifi1.json
index c8b5929..d998ba9 100644
--- a/chromeos/test/data/network/policy/shill_policy_on_unconfigured_wifi1.json
+++ b/chromeos/test/data/network/policy/shill_policy_on_unconfigured_wifi1.json
@@ -3,8 +3,8 @@
"Mode": "managed",
"Passphrase": "policy's passphrase",
"Profile": "/profile/user1/shill",
- "SSID": "wifi1",
"Security": "psk",
"Type": "wifi",
- "UIData": "{\"onc_source\":\"user_policy\"}"
+ "UIData": "{\"onc_source\":\"user_policy\"}",
+ "WiFi.HexSSID": "7769666931" // "wifi1"
}
diff --git a/chromeos/test/data/network/policy/shill_policy_on_unmanaged_user_wifi1.json b/chromeos/test/data/network/policy/shill_policy_on_unmanaged_user_wifi1.json
index 1790bd7..7c9c4bc 100644
--- a/chromeos/test/data/network/policy/shill_policy_on_unmanaged_user_wifi1.json
+++ b/chromeos/test/data/network/policy/shill_policy_on_unmanaged_user_wifi1.json
@@ -3,7 +3,7 @@
"Mode": "managed",
"Passphrase": "user's passphrase",
"Profile": "/profile/user1/shill",
- "SSID": "wifi1",
+ "WiFi.HexSSID": "7769666931", // "wifi1"
"Security": "psk",
"Type": "wifi",
"UIData": "{\"onc_source\":\"user_policy\",\"user_settings\":{\"WiFi\":{\"Passphrase\":\"FAKE_CREDENTIAL_VPaJDV9x\"}}}"
diff --git a/chromeos/test/data/network/policy/shill_policy_on_unmanaged_user_wifi1_wo_uidata.json b/chromeos/test/data/network/policy/shill_policy_on_unmanaged_user_wifi1_wo_uidata.json
index d2c959e..9df16c0 100644
--- a/chromeos/test/data/network/policy/shill_policy_on_unmanaged_user_wifi1_wo_uidata.json
+++ b/chromeos/test/data/network/policy/shill_policy_on_unmanaged_user_wifi1_wo_uidata.json
@@ -3,8 +3,8 @@
"Mode": "managed",
"Passphrase": "user's passphrase",
"Profile": "/profile/user1/shill",
- "SSID": "wifi1",
"Security": "psk",
"Type": "wifi",
- "UIData": "{\"onc_source\":\"user_policy\"}}"
+ "UIData": "{\"onc_source\":\"user_policy\"}}",
+ "WiFi.HexSSID": "7769666931" // "wifi1"
}
diff --git a/chromeos/test/data/network/policy/shill_unmanaged_user_wifi1.json b/chromeos/test/data/network/policy/shill_unmanaged_user_wifi1.json
index 45cbe90..ebf81ef 100644
--- a/chromeos/test/data/network/policy/shill_unmanaged_user_wifi1.json
+++ b/chromeos/test/data/network/policy/shill_unmanaged_user_wifi1.json
@@ -3,7 +3,7 @@
"Mode": "managed",
"Passphrase": "user's passphrase",
"Profile": "/profile/chronos/shill",
- "SSID": "wifi1",
+ "WiFi.HexSSID": "7769666931", // "wifi1"
"Security": "psk",
"Type": "wifi",
"UIData": "{\"user_settings\":{\"WiFi\":{\"Passphrase\":\"user's passphrase\"}}}"
diff --git a/chromeos/test/data/network/policy/shill_unmanaged_user_wifi1_wo_uidata.json b/chromeos/test/data/network/policy/shill_unmanaged_user_wifi1_wo_uidata.json
index ac7fb73..f7a1e1f 100644
--- a/chromeos/test/data/network/policy/shill_unmanaged_user_wifi1_wo_uidata.json
+++ b/chromeos/test/data/network/policy/shill_unmanaged_user_wifi1_wo_uidata.json
@@ -3,7 +3,7 @@
"Mode": "managed",
"Passphrase": "user's passphrase",
"Profile": "/profile/chronos/shill",
- "SSID": "wifi1",
"Security": "psk",
"Type": "wifi",
+ "WiFi.HexSSID": "7769666931" // "wifi1"
}
diff --git a/chromeos/test/data/network/policy/shill_unmanaged_user_wifi2.json b/chromeos/test/data/network/policy/shill_unmanaged_user_wifi2.json
index 13e81fb..af7b56f 100644
--- a/chromeos/test/data/network/policy/shill_unmanaged_user_wifi2.json
+++ b/chromeos/test/data/network/policy/shill_unmanaged_user_wifi2.json
@@ -3,7 +3,7 @@
"Mode": "managed",
"Passphrase": "user's passphrase",
"Profile": "/profile/chronos/shill",
- "SSID": "wifi2",
"Security": "psk",
"Type": "wifi",
+ "WiFi.HexSSID": "7769666932" // "wifi2"
}
diff --git a/chromeos/test/data/network/shill_wifi_clientcert.json b/chromeos/test/data/network/shill_wifi_clientcert.json
index f6664d2..0015800 100644
--- a/chromeos/test/data/network/shill_wifi_clientcert.json
+++ b/chromeos/test/data/network/shill_wifi_clientcert.json
@@ -4,8 +4,8 @@
"EAP.UseSystemCAs": true,
"GUID": "{77db0089-0bc8-4358-929c-123xcv}",
"Mode": "managed",
- "SSID": "SomeWifi-XY",
"SaveCredentials": true,
"Security": "802_1x",
- "Type": "wifi"
+ "Type": "wifi",
+ "WiFi.HexSSID": "536F6D65576966692D5859" // "SomeWifi-XY"
}
diff --git a/chromeos/test/data/network/shill_wifi_clientref.json b/chromeos/test/data/network/shill_wifi_clientref.json
index 541032b8..551cda8 100644
--- a/chromeos/test/data/network/shill_wifi_clientref.json
+++ b/chromeos/test/data/network/shill_wifi_clientref.json
@@ -4,8 +4,8 @@
"EAP.UseSystemCAs": true,
"GUID": "{77db0089-0bc8-4358-929c-123xcv}",
"Mode": "managed",
- "SSID": "SomeWifi-XY",
"SaveCredentials": true,
"Security": "802_1x",
- "Type": "wifi"
+ "Type": "wifi",
+ "WiFi.HexSSID": "536F6D65576966692D5859" // "SomeWifi-XY"
}
diff --git a/chromeos/test/data/network/shill_wifi_psk.json b/chromeos/test/data/network/shill_wifi_psk.json
index e476052..9969879 100644
--- a/chromeos/test/data/network/shill_wifi_psk.json
+++ b/chromeos/test/data/network/shill_wifi_psk.json
@@ -3,9 +3,9 @@
"GUID": "{64c4f86b-cf6a-4e4a-8eff-456def}",
"Mode": "managed",
"Passphrase": "some passphrase",
- "SSID": "OpenWrt",
"Security": "psk",
"Type": "wifi",
+ "WiFi.HexSSID": "4F70656E577274", // "OpenWrt"
"WiFi.HiddenSSID": false,
"WiFi.Frequency": 2412,
"WiFi.FrequencyList": [2412, 5180]
diff --git a/chromeos/test/data/network/shill_wifi_with_state.json b/chromeos/test/data/network/shill_wifi_with_state.json
index 5697c38..865162b 100644
--- a/chromeos/test/data/network/shill_wifi_with_state.json
+++ b/chromeos/test/data/network/shill_wifi_with_state.json
@@ -4,11 +4,11 @@
"Mode": "managed",
"Name": "OpenWrt",
"Passphrase": "some passphrase",
- "SSID": "OpenWrt",
"Security": "psk",
"State": "idle",
"Strength": 10,
"Type": "wifi",
"WiFi.BSSID": "00:12:34:ca:56:8b",
+ "WiFi.HexSSID": "4F70656E577274", // "OpenWrt"
"WiFi.HiddenSSID": false
}
diff --git a/chromeos/test/data/network/shill_wifi_wpa1.json b/chromeos/test/data/network/shill_wifi_wpa1.json
index 2d92618..db1e353 100644
--- a/chromeos/test/data/network/shill_wifi_wpa1.json
+++ b/chromeos/test/data/network/shill_wifi_wpa1.json
@@ -3,7 +3,7 @@
"Mode":"managed",
"Name":"OpenWrt",
"Passphrase":"some passphrase",
- "SSID":"OpenWrt",
"Security":"wpa",
- "Type":"wifi"
+ "Type":"wifi",
+ "WiFi.HexSSID": "4F70656E577274" // "OpenWrt"
}