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

Side by Side Diff: chromeos/network/onc/onc_translator_shill_to_onc.cc

Issue 762243002: Change to Shill's IPConfig objects. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/network/onc/onc_translator.h" 5 #include "chromeos/network/onc/onc_translator.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 void TranslateEthernet(); 77 void TranslateEthernet();
78 void TranslateOpenVPN(); 78 void TranslateOpenVPN();
79 void TranslateIPsec(); 79 void TranslateIPsec();
80 void TranslateVPN(); 80 void TranslateVPN();
81 void TranslateWiFiWithState(); 81 void TranslateWiFiWithState();
82 void TranslateWiMAXWithState(); 82 void TranslateWiMAXWithState();
83 void TranslateCellularWithState(); 83 void TranslateCellularWithState();
84 void TranslateCellularDevice(); 84 void TranslateCellularDevice();
85 void TranslateNetworkWithState(); 85 void TranslateNetworkWithState();
86 void TranslateIPConfig(); 86 void TranslateIPConfig();
87 void TranslateSavedOrStaticIPConfig(const std::string& nameserver_property); 87 void TranslateSavedOrStaticIPConfig();
88 void TranslateSavedIPConfig(); 88 void TranslateSavedIPConfig();
89 void TranslateStaticIPConfig(); 89 void TranslateStaticIPConfig();
90 90
91 // Creates an ONC object from |dictionary| according to the signature 91 // Creates an ONC object from |dictionary| according to the signature
92 // associated to |onc_field_name| and adds it to |onc_object_| at 92 // associated to |onc_field_name| and adds it to |onc_object_| at
93 // |onc_field_name|. 93 // |onc_field_name|.
94 void TranslateAndAddNestedObject(const std::string& onc_field_name, 94 void TranslateAndAddNestedObject(const std::string& onc_field_name,
95 const base::DictionaryValue& dictionary); 95 const base::DictionaryValue& dictionary);
96 96
97 // Creates an ONC object from |shill_dictionary_| according to the signature 97 // Creates an ONC object from |shill_dictionary_| according to the signature
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 // Shill's Service has an IPConfig property (note the singular), not an 472 // Shill's Service has an IPConfig property (note the singular), not an
473 // IPConfigs property. However, we require the caller of the translation to 473 // IPConfigs property. However, we require the caller of the translation to
474 // patch the Shill dictionary before passing it to the translator. 474 // patch the Shill dictionary before passing it to the translator.
475 const base::ListValue* shill_ipconfigs = NULL; 475 const base::ListValue* shill_ipconfigs = NULL;
476 if (shill_dictionary_->GetListWithoutPathExpansion(shill::kIPConfigsProperty, 476 if (shill_dictionary_->GetListWithoutPathExpansion(shill::kIPConfigsProperty,
477 &shill_ipconfigs)) { 477 &shill_ipconfigs)) {
478 TranslateAndAddListOfObjects(::onc::network_config::kIPConfigs, 478 TranslateAndAddListOfObjects(::onc::network_config::kIPConfigs,
479 *shill_ipconfigs); 479 *shill_ipconfigs);
480 } 480 }
481 481
482 TranslateAndAddNestedObject(::onc::network_config::kSavedIPConfig); 482 const base::DictionaryValue* saved_ipconfig = nullptr;
483 TranslateAndAddNestedObject(::onc::network_config::kStaticIPConfig); 483 if (shill_dictionary_->GetDictionaryWithoutPathExpansion(
484 shill::kSavedIPConfigProperty, &saved_ipconfig)) {
485 TranslateAndAddNestedObject(::onc::network_config::kSavedIPConfig,
486 *saved_ipconfig);
487 }
488
489 const base::DictionaryValue* static_ipconfig = nullptr;
490 if (shill_dictionary_->GetDictionaryWithoutPathExpansion(
491 shill::kStaticIPConfigProperty, &static_ipconfig)) {
492 TranslateAndAddNestedObject(::onc::network_config::kStaticIPConfig,
493 *static_ipconfig);
494 }
484 } 495 }
485 496
486 void ShillToONCTranslator::TranslateIPConfig() { 497 void ShillToONCTranslator::TranslateIPConfig() {
487 CopyPropertiesAccordingToSignature(); 498 CopyPropertiesAccordingToSignature();
488 std::string shill_ip_method; 499 std::string shill_ip_method;
489 shill_dictionary_->GetStringWithoutPathExpansion(shill::kMethodProperty, 500 shill_dictionary_->GetStringWithoutPathExpansion(shill::kMethodProperty,
490 &shill_ip_method); 501 &shill_ip_method);
491 std::string type; 502 std::string type;
492 if (shill_ip_method == shill::kTypeIPv4 || 503 if (shill_ip_method == shill::kTypeIPv4 ||
493 shill_ip_method == shill::kTypeDHCP) { 504 shill_ip_method == shill::kTypeDHCP) {
494 type = ::onc::ipconfig::kIPv4; 505 type = ::onc::ipconfig::kIPv4;
495 } else if (shill_ip_method == shill::kTypeIPv6 || 506 } else if (shill_ip_method == shill::kTypeIPv6 ||
496 shill_ip_method == shill::kTypeDHCP6) { 507 shill_ip_method == shill::kTypeDHCP6) {
497 type = ::onc::ipconfig::kIPv6; 508 type = ::onc::ipconfig::kIPv6;
498 } else { 509 } else {
499 return; // Ignore unhandled IPConfig types, e.g. bootp, zeroconf, ppp 510 return; // Ignore unhandled IPConfig types, e.g. bootp, zeroconf, ppp
500 } 511 }
501 512
502 onc_object_->SetStringWithoutPathExpansion(::onc::ipconfig::kType, type); 513 onc_object_->SetStringWithoutPathExpansion(::onc::ipconfig::kType, type);
503 } 514 }
504 515
505 void ShillToONCTranslator::TranslateSavedOrStaticIPConfig( 516 void ShillToONCTranslator::TranslateSavedOrStaticIPConfig() {
506 const std::string& nameserver_property) {
507 CopyPropertiesAccordingToSignature(); 517 CopyPropertiesAccordingToSignature();
508 // Saved/Static IP config nameservers are stored as a comma separated list. 518
509 std::string shill_nameservers;
510 shill_dictionary_->GetStringWithoutPathExpansion(
511 nameserver_property, &shill_nameservers);
512 std::vector<std::string> onc_nameserver_vector;
513 if (Tokenize(shill_nameservers, ",", &onc_nameserver_vector) > 0) {
514 scoped_ptr<base::ListValue> onc_nameservers(new base::ListValue);
515 for (std::vector<std::string>::iterator iter =
516 onc_nameserver_vector.begin();
517 iter != onc_nameserver_vector.end(); ++iter) {
518 onc_nameservers->AppendString(*iter);
519 }
520 onc_object_->SetWithoutPathExpansion(::onc::ipconfig::kNameServers,
521 onc_nameservers.release());
522 }
523 // Static and Saved IPConfig in Shill are always of type IPv4. Set this type 519 // Static and Saved IPConfig in Shill are always of type IPv4. Set this type
524 // in ONC, but not if the object would be empty except the type. 520 // in ONC, but not if the object would be empty except the type.
525 if (!onc_object_->empty()) { 521 if (!onc_object_->empty()) {
526 onc_object_->SetStringWithoutPathExpansion(::onc::ipconfig::kType, 522 onc_object_->SetStringWithoutPathExpansion(::onc::ipconfig::kType,
527 ::onc::ipconfig::kIPv4); 523 ::onc::ipconfig::kIPv4);
528 } 524 }
529 } 525 }
530 526
531 void ShillToONCTranslator::TranslateSavedIPConfig() { 527 void ShillToONCTranslator::TranslateSavedIPConfig() {
532 TranslateSavedOrStaticIPConfig(shill::kSavedIPNameServersProperty); 528 TranslateSavedOrStaticIPConfig();
533 } 529 }
534 530
535 void ShillToONCTranslator::TranslateStaticIPConfig() { 531 void ShillToONCTranslator::TranslateStaticIPConfig() {
536 TranslateSavedOrStaticIPConfig(shill::kStaticIPNameServersProperty); 532 TranslateSavedOrStaticIPConfig();
537 } 533 }
538 534
539 void ShillToONCTranslator::TranslateAndAddNestedObject( 535 void ShillToONCTranslator::TranslateAndAddNestedObject(
540 const std::string& onc_field_name) { 536 const std::string& onc_field_name) {
541 TranslateAndAddNestedObject(onc_field_name, *shill_dictionary_); 537 TranslateAndAddNestedObject(onc_field_name, *shill_dictionary_);
542 } 538 }
543 539
544 void ShillToONCTranslator::TranslateAndAddNestedObject( 540 void ShillToONCTranslator::TranslateAndAddNestedObject(
545 const std::string& onc_field_name, 541 const std::string& onc_field_name,
546 const base::DictionaryValue& dictionary) { 542 const base::DictionaryValue& dictionary) {
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 ::onc::ONCSource onc_source, 679 ::onc::ONCSource onc_source,
684 const OncValueSignature* onc_signature) { 680 const OncValueSignature* onc_signature) {
685 CHECK(onc_signature != NULL); 681 CHECK(onc_signature != NULL);
686 682
687 ShillToONCTranslator translator(shill_dictionary, onc_source, *onc_signature); 683 ShillToONCTranslator translator(shill_dictionary, onc_source, *onc_signature);
688 return translator.CreateTranslatedONCObject(); 684 return translator.CreateTranslatedONCObject();
689 } 685 }
690 686
691 } // namespace onc 687 } // namespace onc
692 } // namespace chromeos 688 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698