Chromium Code Reviews| 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 e7e77829d18f7f733c8b7735cb798e84830724c7..6a3ce6bccd4da419b6bc7b26fc263eda19b8a29d 100644 |
| --- a/chromeos/network/onc/onc_translator_onc_to_shill.cc |
| +++ b/chromeos/network/onc/onc_translator_onc_to_shill.cc |
| @@ -15,6 +15,7 @@ |
| #include "base/json/json_reader.h" |
| #include "base/json/json_writer.h" |
| #include "base/logging.h" |
| +#include "base/strings/string_util.h" |
| #include "base/values.h" |
| #include "chromeos/network/onc/onc_signature.h" |
| #include "chromeos/network/onc/onc_translation_tables.h" |
| @@ -27,6 +28,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; |
| +} |
|
stevenjb
2014/09/08 17:23:14
nit: Since this isn't someplace where it can be re
pneubeck (no reviews)
2014/09/09 07:36:03
There are two other usages, which I can unify in a
|
| + |
| scoped_ptr<base::StringValue> ConvertValueToString(const base::Value& value) { |
| std::string str; |
| if (!value.GetAsString(&str)) |
| @@ -59,6 +71,7 @@ class LocalTranslator { |
| void TranslateVPN(); |
| void TranslateWiFi(); |
| void TranslateEAP(); |
| + void TranslateStaticIPConfig(); |
| void TranslateNetworkConfiguration(); |
| // Copies all entries from |onc_object_| to |shill_dictionary_| for which a |
| @@ -89,6 +102,8 @@ class LocalTranslator { |
| 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) |
| @@ -119,6 +134,21 @@ void LocalTranslator::TranslateEthernet() { |
| 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 |
| // so handle it explicitly here. |