| Index: chromeos/network/shill_property_util.cc
|
| diff --git a/chromeos/network/shill_property_util.cc b/chromeos/network/shill_property_util.cc
|
| index 6f03eea8e48cea6a87e082a2179a65e7a67e86d4..d47156215240fbbc5fc60f842e379853fa56524e 100644
|
| --- a/chromeos/network/shill_property_util.cc
|
| +++ b/chromeos/network/shill_property_util.cc
|
| @@ -43,12 +43,17 @@ std::string ValidateUTF8(const std::string& str) {
|
| return result;
|
| }
|
|
|
| -void CopyStringFromDictionary(const base::DictionaryValue& source,
|
| +// If existent and non-empty, copies the string at |key| from |source| to
|
| +// |dest|. Returns true if the string was copied.
|
| +bool CopyStringFromDictionary(const base::DictionaryValue& source,
|
| const std::string& key,
|
| base::DictionaryValue* dest) {
|
| std::string string_value;
|
| - if (source.GetStringWithoutPathExpansion(key, &string_value))
|
| - dest->SetStringWithoutPathExpansion(key, string_value);
|
| + if (!source.GetStringWithoutPathExpansion(key, &string_value) ||
|
| + string_value.empty())
|
| + return false;
|
| + dest->SetStringWithoutPathExpansion(key, string_value);
|
| + return true;
|
| }
|
|
|
| } // namespace
|
| @@ -175,36 +180,45 @@ void SetUIData(const NetworkUIData& ui_data,
|
|
|
| bool CopyIdentifyingProperties(const base::DictionaryValue& service_properties,
|
| base::DictionaryValue* dest) {
|
| + bool success = true;
|
| +
|
| + // GUID is optional.
|
| CopyStringFromDictionary(service_properties, flimflam::kGuidProperty, dest);
|
|
|
| std::string type;
|
| service_properties.GetStringWithoutPathExpansion(flimflam::kTypeProperty,
|
| &type);
|
| + success &= !type.empty();
|
| dest->SetStringWithoutPathExpansion(flimflam::kTypeProperty, type);
|
| if (type == flimflam::kTypeWifi) {
|
| - CopyStringFromDictionary(
|
| + success &= CopyStringFromDictionary(
|
| service_properties, flimflam::kSecurityProperty, dest);
|
| - CopyStringFromDictionary(service_properties, flimflam::kSSIDProperty, dest);
|
| - CopyStringFromDictionary(service_properties, flimflam::kModeProperty, dest);
|
| + success &= CopyStringFromDictionary(
|
| + service_properties, flimflam::kSSIDProperty, dest);
|
| + success &= CopyStringFromDictionary(
|
| + service_properties, flimflam::kModeProperty, dest);
|
| } else if (type == flimflam::kTypeVPN) {
|
| - CopyStringFromDictionary(service_properties, flimflam::kNameProperty, dest);
|
| + success &= CopyStringFromDictionary(
|
| + service_properties, flimflam::kNameProperty, dest);
|
| // VPN Provider values are read from the "Provider" dictionary, but written
|
| // with the keys "Provider.Type" and "Provider.Host".
|
| - const base::DictionaryValue* provider_properties;
|
| + const base::DictionaryValue* provider_properties = NULL;
|
| if (!service_properties.GetDictionaryWithoutPathExpansion(
|
| flimflam::kProviderProperty, &provider_properties)) {
|
| - LOG(ERROR) << "Incomplete Shill dictionary missing VPN provider dict.";
|
| + NET_LOG_ERROR("CopyIdentifyingProperties", "Missing VPN provider dict");
|
| return false;
|
| }
|
| std::string vpn_provider_type;
|
| provider_properties->GetStringWithoutPathExpansion(flimflam::kTypeProperty,
|
| &vpn_provider_type);
|
| + success &= !vpn_provider_type.empty();
|
| dest->SetStringWithoutPathExpansion(flimflam::kProviderTypeProperty,
|
| vpn_provider_type);
|
|
|
| std::string vpn_provider_host;
|
| provider_properties->GetStringWithoutPathExpansion(flimflam::kHostProperty,
|
| &vpn_provider_host);
|
| + success &= !vpn_provider_host.empty();
|
| dest->SetStringWithoutPathExpansion(flimflam::kProviderHostProperty,
|
| vpn_provider_host);
|
| } else if (type == flimflam::kTypeEthernet ||
|
| @@ -213,8 +227,11 @@ bool CopyIdentifyingProperties(const base::DictionaryValue& service_properties,
|
| // properties.
|
| } else {
|
| NOTREACHED() << "Unsupported network type " << type;
|
| + success = false;
|
| }
|
| - return true;
|
| + if (!success)
|
| + NET_LOG_ERROR("CopyIdentifyingProperties", "Missing required properties");
|
| + return success;
|
| }
|
|
|
| } // namespace shill_property_util
|
|
|