Index: chrome/browser/chromeos/options/vpn_config_view.cc |
diff --git a/chrome/browser/chromeos/options/vpn_config_view.cc b/chrome/browser/chromeos/options/vpn_config_view.cc |
index f8ac211a713aae6b78b73a4de876f7c49908b856..42d06f6df724920520d5ae6a46084525713b09bd 100644 |
--- a/chrome/browser/chromeos/options/vpn_config_view.cc |
+++ b/chrome/browser/chromeos/options/vpn_config_view.cc |
@@ -51,6 +51,23 @@ string16 ProviderTypeToString(chromeos::ProviderType type) { |
return string16(); |
} |
+// Translates the provider type to the name of the respective ONC dictionary |
+// containing configuration data for the type. |
+std::string ProviderTypeToONCDictKey(chromeos::ProviderType type) { |
+ switch (type) { |
+ case chromeos::PROVIDER_TYPE_L2TP_IPSEC_PSK: |
+ case chromeos::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT: |
+ return chromeos::onc::vpn::kIPsec; |
+ case chromeos::PROVIDER_TYPE_OPEN_VPN: |
+ return chromeos::onc::vpn::kOpenVPN; |
+ case chromeos::PROVIDER_TYPE_MAX: |
+ break; |
+ } |
+ |
+ NOTREACHED() << "Unhandled provider type " << type; |
+ return std::string(); |
+} |
+ |
} // namespace |
namespace chromeos { |
@@ -434,12 +451,24 @@ const std::string VPNConfigView::GetUserCertID() const { |
void VPNConfigView::Init(VirtualNetwork* vpn) { |
if (vpn) { |
- ParseVPNUIProperty(&ca_cert_ui_data_, vpn, onc::vpn::kServerCARef); |
- ParseVPNUIProperty(&psk_passphrase_ui_data_, vpn, onc::vpn::kPSK); |
- ParseVPNUIProperty(&user_cert_ui_data_, vpn, onc::vpn::kClientCertRef); |
- ParseVPNUIProperty(&username_ui_data_, vpn, onc::vpn::kUsername); |
- ParseVPNUIProperty(&user_passphrase_ui_data_, vpn, onc::vpn::kPassword); |
- ParseVPNUIProperty(&group_name_ui_data_, vpn, onc::vpn::kGroup); |
+ ProviderType type = vpn->provider_type(); |
+ std::string type_dict_name = ProviderTypeToONCDictKey(type); |
+ ParseVPNUIProperty(&ca_cert_ui_data_, vpn, type_dict_name, |
+ onc::vpn::kServerCARef); |
+ ParseVPNUIProperty(&psk_passphrase_ui_data_, vpn, type_dict_name, |
+ onc::vpn::kPSK); |
+ ParseVPNUIProperty(&user_cert_ui_data_, vpn, type_dict_name, |
+ onc::vpn::kClientCertRef); |
+ ParseVPNUIProperty(&group_name_ui_data_, vpn, type_dict_name, |
+ onc::vpn::kGroup); |
+ |
+ const std::string credentials_dict_name( |
+ type == PROVIDER_TYPE_L2TP_IPSEC_PSK ? |
+ onc::vpn::kL2TP : type_dict_name); |
+ ParseVPNUIProperty(&username_ui_data_, vpn, credentials_dict_name, |
+ onc::vpn::kUsername); |
+ ParseVPNUIProperty(&user_passphrase_ui_data_, vpn, credentials_dict_name, |
+ onc::vpn::kPassword); |
} |
views::GridLayout* layout = views::GridLayout::CreatePanel(this); |
@@ -853,22 +882,15 @@ const std::string VPNConfigView::GetPassphraseFromField( |
void VPNConfigView::ParseVPNUIProperty(NetworkPropertyUIData* property_ui_data, |
Network* network, |
+ const std::string& dict_key, |
const std::string& key) { |
NetworkLibrary* network_library = CrosLibrary::Get()->GetNetworkLibrary(); |
const base::DictionaryValue* onc = |
network_library->FindOncForNetwork(network->unique_id()); |
- base::DictionaryValue* vpn_dict = NULL; |
- if (!onc || !onc->GetDictionary(onc::kVPN, &vpn_dict)) |
- return; |
- |
- std::string vpn_type; |
- if (!vpn_dict || !vpn_dict->GetString(onc::kType, &vpn_type)) |
- return; |
- |
property_ui_data->ParseOncProperty( |
network->ui_data(), onc, |
- base::StringPrintf("%s.%s.%s", onc::kVPN, vpn_type.c_str(), key.c_str())); |
+ base::StringPrintf("%s.%s.%s", onc::kVPN, dict_key.c_str(), key.c_str())); |
} |
} // namespace chromeos |