| 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;
|
| +}
|
| +
|
| 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.
|
|
|