Index: chromeos/network/onc/onc_translator_onc_to_shill.cc |
diff --git a/chromeos/network/onc/onc_translator_onc_to_shill.cc b/chromeos/network/onc/onc_translator_onc_to_shill.cc |
index 8e30af55446f6889b6c35922c488bf602039aae8..5300a9d424b5e003ceb66a2c5c9b62c3922b06d1 100644 |
--- a/chromeos/network/onc/onc_translator_onc_to_shill.cc |
+++ b/chromeos/network/onc/onc_translator_onc_to_shill.cc |
@@ -27,6 +27,17 @@ |
namespace onc { |
namespace { |
+ |
+bool ConvertListValueToStringVector(const base::ListValue& string_list, |
+ std::vector<std::string>* result) { |
+ for (size_t i = 0; i < string_list.GetSize(); ++i) { |
+ std::string str; |
+ if (!string_list.GetString(i, &str)) |
+ return false; |
+ result->push_back(str); |
+ } |
+ return true; |
+} |
scoped_ptr<base::StringValue> ConvertValueToString(const base::Value& value) { |
std::string str; |
@@ -60,6 +71,7 @@ |
void TranslateVPN(); |
void TranslateWiFi(); |
void TranslateEAP(); |
+ void TranslateStaticIPConfig(); |
void TranslateNetworkConfiguration(); |
// Copies all entries from |onc_object_| to |shill_dictionary_| for which a |
@@ -96,6 +108,8 @@ |
void LocalTranslator::TranslateFields() { |
if (onc_signature_ == &kNetworkConfigurationSignature) |
TranslateNetworkConfiguration(); |
+ else if (onc_signature_ == &kStaticIPConfigSignature) |
+ TranslateStaticIPConfig(); |
else if (onc_signature_ == &kEthernetSignature) |
TranslateEthernet(); |
else if (onc_signature_ == &kVPNSignature) |
@@ -126,6 +140,20 @@ |
CopyFieldsAccordingToSignature(); |
} |
+ |
+void LocalTranslator::TranslateStaticIPConfig() { |
+ const base::ListValue* onc_nameservers = NULL; |
+ if (onc_object_->GetListWithoutPathExpansion(::onc::ipconfig::kNameServers, |
+ &onc_nameservers)) { |
+ std::vector<std::string> onc_nameservers_vector; |
+ ConvertListValueToStringVector(*onc_nameservers, &onc_nameservers_vector); |
+ std::string shill_nameservers = JoinString(onc_nameservers_vector, ','); |
+ shill_dictionary_->SetStringWithoutPathExpansion( |
+ shill::kStaticIPNameServersProperty, shill_nameservers); |
+ } |
+ |
+ CopyFieldsAccordingToSignature(); |
+} |
void LocalTranslator::TranslateOpenVPN() { |
// SaveCredentials needs special handling when translating from Shill -> ONC |