Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Unified Diff: chromeos/network/onc/onc_translator_shill_to_onc.cc

Issue 540613002: Translate Saved/StaticIPConfig properties from ONC to Shill (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromeos/network/onc/onc_translator_shill_to_onc.cc
diff --git a/chromeos/network/onc/onc_translator_shill_to_onc.cc b/chromeos/network/onc/onc_translator_shill_to_onc.cc
index 1b1ba7082c874bd936b9ed4f52b7b877c0eb319c..764dc02e8815d19c1ce6f1d2ac11ffecb67b5623 100644
--- a/chromeos/network/onc/onc_translator_shill_to_onc.cc
+++ b/chromeos/network/onc/onc_translator_shill_to_onc.cc
@@ -10,6 +10,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/network_state.h"
#include "chromeos/network/network_util.h"
@@ -77,6 +78,9 @@ class ShillToONCTranslator {
void TranslateCellularDevice();
void TranslateNetworkWithState();
void TranslateIPConfig();
+ void TranslateSavedOrStaticIPConfig(const std::string& nameserver_property);
+ void TranslateSavedIPConfig();
+ void TranslateStaticIPConfig();
// Creates an ONC object from |dictionary| according to the signature
// associated to |onc_field_name| and adds it to |onc_object_| at
@@ -157,6 +161,10 @@ ShillToONCTranslator::CreateTranslatedONCObject() {
TranslateCellularWithState();
} else if (onc_signature_ == &kIPConfigSignature) {
TranslateIPConfig();
+ } else if (onc_signature_ == &kSavedIPConfigSignature) {
+ TranslateSavedIPConfig();
+ } else if (onc_signature_ == &kStaticIPConfigSignature) {
+ TranslateStaticIPConfig();
} else {
CopyPropertiesAccordingToSignature();
}
@@ -371,8 +379,7 @@ void ShillToONCTranslator::TranslateNetworkWithState() {
// Since Name is a read only field in Shill unless it's a VPN, it is copied
// here, but not when going the other direction (if it's not a VPN).
std::string name;
- shill_dictionary_->GetStringWithoutPathExpansion(shill::kNameProperty,
- &name);
+ shill_dictionary_->GetStringWithoutPathExpansion(shill::kNameProperty, &name);
onc_object_->SetStringWithoutPathExpansion(::onc::network_config::kName,
name);
@@ -410,6 +417,9 @@ void ShillToONCTranslator::TranslateNetworkWithState() {
TranslateAndAddListOfObjects(::onc::network_config::kIPConfigs,
*shill_ipconfigs);
}
+
+ TranslateAndAddNestedObject(::onc::network_config::kSavedIPConfig);
+ TranslateAndAddNestedObject(::onc::network_config::kStaticIPConfig);
}
void ShillToONCTranslator::TranslateIPConfig() {
@@ -431,6 +441,34 @@ void ShillToONCTranslator::TranslateIPConfig() {
onc_object_->SetStringWithoutPathExpansion(::onc::ipconfig::kType, type);
}
+void ShillToONCTranslator::TranslateSavedOrStaticIPConfig(
+ const std::string& nameserver_property) {
+ CopyPropertiesAccordingToSignature();
+ // Saved IP config nameservers are stored as a comma separated list.
pneubeck (no reviews) 2014/09/04 12:38:45 nit: Saved and static ...
stevenjb 2014/09/04 15:26:21 Done.
+ std::string shill_nameservers;
+ shill_dictionary_->GetStringWithoutPathExpansion(
+ nameserver_property, &shill_nameservers);
+ std::vector<std::string> onc_nameserver_vector;
+ if (Tokenize(shill_nameservers, ",", &onc_nameserver_vector) > 0) {
+ scoped_ptr<base::ListValue> onc_nameservers(new base::ListValue);
+ for (std::vector<std::string>::iterator iter =
+ onc_nameserver_vector.begin();
+ iter != onc_nameserver_vector.end(); ++iter) {
+ onc_nameservers->AppendString(*iter);
+ }
+ onc_object_->SetWithoutPathExpansion(::onc::ipconfig::kNameServers,
+ onc_nameservers.release());
+ }
+}
+
+void ShillToONCTranslator::TranslateSavedIPConfig() {
+ TranslateSavedOrStaticIPConfig(shill::kSavedIPNameServersProperty);
+}
+
+void ShillToONCTranslator::TranslateStaticIPConfig() {
+ TranslateSavedOrStaticIPConfig(shill::kStaticIPNameServersProperty);
+}
+
void ShillToONCTranslator::TranslateAndAddNestedObject(
const std::string& onc_field_name) {
TranslateAndAddNestedObject(onc_field_name, *shill_dictionary_);
@@ -509,6 +547,8 @@ void ShillToONCTranslator::CopyPropertiesAccordingToSignature(
const OncValueSignature* value_signature) {
if (value_signature->base_signature)
CopyPropertiesAccordingToSignature(value_signature->base_signature);
+ if (!value_signature->fields)
+ return;
for (const OncFieldSignature* field_signature = value_signature->fields;
field_signature->onc_field_name != NULL; ++field_signature) {
CopyProperty(field_signature);

Powered by Google App Engine
This is Rietveld 408576698