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

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

Issue 2853563002: ONC: Translate EAP from Shill to ONC (Closed)
Patch Set: Test for empty EAP field and cl format Created 3 years, 7 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 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 <string> 5 #include <string>
6 #include <utility> 6 #include <utility>
7 7
8 #include "base/json/json_reader.h" 8 #include "base/json/json_reader.h"
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 void CopyProperty(const OncFieldSignature* field_signature); 129 void CopyProperty(const OncFieldSignature* field_signature);
130 130
131 // If existent, translates the entry at |shill_property_name| in 131 // If existent, translates the entry at |shill_property_name| in
132 // |shill_dictionary_| using |table|. It is an error if no matching table 132 // |shill_dictionary_| using |table|. It is an error if no matching table
133 // entry is found. Writes the result as entry at |onc_field_name| in 133 // entry is found. Writes the result as entry at |onc_field_name| in
134 // |onc_object_|. 134 // |onc_object_|.
135 void TranslateWithTableAndSet(const std::string& shill_property_name, 135 void TranslateWithTableAndSet(const std::string& shill_property_name,
136 const StringTranslationEntry table[], 136 const StringTranslationEntry table[],
137 const std::string& onc_field_name); 137 const std::string& onc_field_name);
138 138
139 // Same as above but for nested properties.
140 bool TranslateWithTableAndSetNested(const std::string& shill_property_name,
141 const StringTranslationEntry table[],
142 const std::string& onc_dictionary_name,
143 const std::string& onc_field_name);
144
139 // Returns the name of the Shill service provided in |shill_dictionary_| 145 // Returns the name of the Shill service provided in |shill_dictionary_|
140 // for debugging. 146 // for debugging.
141 std::string GetName(); 147 std::string GetName();
142 148
143 const base::DictionaryValue* shill_dictionary_; 149 const base::DictionaryValue* shill_dictionary_;
144 ::onc::ONCSource onc_source_; 150 ::onc::ONCSource onc_source_;
145 const OncValueSignature* onc_signature_; 151 const OncValueSignature* onc_signature_;
146 const FieldTranslationEntry* field_translation_table_; 152 const FieldTranslationEntry* field_translation_table_;
147 std::unique_ptr<base::DictionaryValue> onc_object_; 153 std::unique_ptr<base::DictionaryValue> onc_object_;
148 const NetworkState* network_state_; 154 const NetworkState* network_state_;
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 358
353 bool link_monitor_disable; 359 bool link_monitor_disable;
354 if (shill_dictionary_->GetBooleanWithoutPathExpansion( 360 if (shill_dictionary_->GetBooleanWithoutPathExpansion(
355 shill::kLinkMonitorDisableProperty, &link_monitor_disable)) { 361 shill::kLinkMonitorDisableProperty, &link_monitor_disable)) {
356 onc_object_->SetBooleanWithoutPathExpansion( 362 onc_object_->SetBooleanWithoutPathExpansion(
357 ::onc::wifi::kAllowGatewayARPPolling, !link_monitor_disable); 363 ::onc::wifi::kAllowGatewayARPPolling, !link_monitor_disable);
358 } 364 }
359 365
360 CopyPropertiesAccordingToSignature(); 366 CopyPropertiesAccordingToSignature();
361 TranslateAndAddNestedObject(::onc::wifi::kEAP); 367 TranslateAndAddNestedObject(::onc::wifi::kEAP);
368
369 // Translate EAP Outer and Inner values. Note: Shill provides an empty
370 // EAP property for non EAP networks, so check that before appmpting to
371 // translate.
372 std::string eap;
tbarzic 2017/05/01 18:05:56 Could this be done as part of TranslateAndAddNeste
stevenjb 2017/05/01 20:12:04 Yes, thanks, I've been out of this code for too lo
373 shill_dictionary_->GetStringWithoutPathExpansion(shill::kEapMethodProperty,
374 &eap);
375 if (!eap.empty() &&
376 TranslateWithTableAndSetNested(shill::kEapMethodProperty, kEAPOuterTable,
377 ::onc::wifi::kEAP, ::onc::eap::kOuter)) {
378 TranslateWithTableAndSetNested(shill::kEapPhase2AuthProperty,
379 kEAP_TTLS_InnerTable, ::onc::wifi::kEAP,
380 ::onc::eap::kInner);
381 }
362 } 382 }
363 383
364 void ShillToONCTranslator::TranslateWiMAXWithState() { 384 void ShillToONCTranslator::TranslateWiMAXWithState() {
365 CopyPropertiesAccordingToSignature(); 385 CopyPropertiesAccordingToSignature();
366 TranslateAndAddNestedObject(::onc::wimax::kEAP); 386 TranslateAndAddNestedObject(::onc::wimax::kEAP);
367 } 387 }
368 388
369 void ShillToONCTranslator::TranslateCellularWithState() { 389 void ShillToONCTranslator::TranslateCellularWithState() {
370 CopyPropertiesAccordingToSignature(); 390 CopyPropertiesAccordingToSignature();
371 TranslateWithTableAndSet(shill::kActivationStateProperty, 391 TranslateWithTableAndSet(shill::kActivationStateProperty,
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 } 775 }
756 std::string onc_value; 776 std::string onc_value;
757 if (TranslateStringToONC(table, shill_value, &onc_value)) { 777 if (TranslateStringToONC(table, shill_value, &onc_value)) {
758 onc_object_->SetStringWithoutPathExpansion(onc_field_name, onc_value); 778 onc_object_->SetStringWithoutPathExpansion(onc_field_name, onc_value);
759 return; 779 return;
760 } 780 }
761 LOG(ERROR) << "Shill property '" << shill_property_name << "' with value " 781 LOG(ERROR) << "Shill property '" << shill_property_name << "' with value "
762 << shill_value << " couldn't be translated to ONC: " << GetName(); 782 << shill_value << " couldn't be translated to ONC: " << GetName();
763 } 783 }
764 784
785 bool ShillToONCTranslator::TranslateWithTableAndSetNested(
786 const std::string& shill_property_name,
787 const StringTranslationEntry table[],
788 const std::string& onc_dictionary_name,
789 const std::string& onc_field_name) {
790 std::string shill_value;
791 if (!shill_dictionary_->GetStringWithoutPathExpansion(shill_property_name,
792 &shill_value)) {
793 return false;
794 }
795 std::string onc_value;
796 if (TranslateStringToONC(table, shill_value, &onc_value)) {
797 SetNestedOncValue(onc_dictionary_name, onc_field_name,
798 base::Value(onc_value));
799 return true;
800 }
801 LOG(ERROR) << "Shill property '" << shill_property_name << "' with value "
802 << shill_value << " couldn't be translated to ONC: " << GetName();
803 return false;
804 }
805
765 std::string ShillToONCTranslator::GetName() { 806 std::string ShillToONCTranslator::GetName() {
766 DCHECK(shill_dictionary_); 807 DCHECK(shill_dictionary_);
767 std::string name; 808 std::string name;
768 shill_dictionary_->GetStringWithoutPathExpansion(shill::kNameProperty, &name); 809 shill_dictionary_->GetStringWithoutPathExpansion(shill::kNameProperty, &name);
769 return name; 810 return name;
770 } 811 }
771 812
772 } // namespace 813 } // namespace
773 814
774 std::unique_ptr<base::DictionaryValue> TranslateShillServiceToONCPart( 815 std::unique_ptr<base::DictionaryValue> TranslateShillServiceToONCPart(
775 const base::DictionaryValue& shill_dictionary, 816 const base::DictionaryValue& shill_dictionary,
776 ::onc::ONCSource onc_source, 817 ::onc::ONCSource onc_source,
777 const OncValueSignature* onc_signature, 818 const OncValueSignature* onc_signature,
778 const NetworkState* network_state) { 819 const NetworkState* network_state) {
779 CHECK(onc_signature != NULL); 820 CHECK(onc_signature != NULL);
780 821
781 ShillToONCTranslator translator(shill_dictionary, onc_source, *onc_signature, 822 ShillToONCTranslator translator(shill_dictionary, onc_source, *onc_signature,
782 network_state); 823 network_state);
783 return translator.CreateTranslatedONCObject(); 824 return translator.CreateTranslatedONCObject();
784 } 825 }
785 826
786 } // namespace onc 827 } // namespace onc
787 } // namespace chromeos 828 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698