| OLD | NEW |
| 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/network_ui_data.h" | 5 #include "chromeos/network/network_ui_data.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chromeos/network/onc/onc_signature.h" | 9 #include "chromeos/network/onc/onc_signature.h" |
| 10 | 10 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 certificate_pattern_.CreateONCDictionary().release()); | 141 certificate_pattern_.CreateONCDictionary().release()); |
| 142 } | 142 } |
| 143 } | 143 } |
| 144 if (user_settings_) | 144 if (user_settings_) |
| 145 dict->SetWithoutPathExpansion(kKeyUserSettings, | 145 dict->SetWithoutPathExpansion(kKeyUserSettings, |
| 146 user_settings_->DeepCopy()); | 146 user_settings_->DeepCopy()); |
| 147 } | 147 } |
| 148 | 148 |
| 149 namespace { | 149 namespace { |
| 150 | 150 |
| 151 void TranslateClientCertType(const std::string& client_cert_type, | 151 void GetAndTranslateClientCertType(const base::DictionaryValue& onc_object, |
| 152 NetworkUIData* ui_data) { | 152 NetworkUIData* ui_data) { |
| 153 using namespace ::onc::certificate; | 153 using namespace ::onc::client_cert; |
| 154 |
| 155 std::string client_cert_type; |
| 156 if (!onc_object.GetStringWithoutPathExpansion(kClientCertType, |
| 157 &client_cert_type)) { |
| 158 return; |
| 159 } |
| 160 |
| 154 ClientCertType type; | 161 ClientCertType type; |
| 155 if (client_cert_type == kNone) { | 162 if (client_cert_type == kClientCertTypeNone) { |
| 156 type = CLIENT_CERT_TYPE_NONE; | 163 type = CLIENT_CERT_TYPE_NONE; |
| 157 } else if (client_cert_type == kRef) { | 164 } else if (client_cert_type == kRef) { |
| 158 type = CLIENT_CERT_TYPE_REF; | 165 type = CLIENT_CERT_TYPE_REF; |
| 159 } else if (client_cert_type == kPattern) { | 166 } else if (client_cert_type == kPattern) { |
| 160 type = CLIENT_CERT_TYPE_PATTERN; | 167 type = CLIENT_CERT_TYPE_PATTERN; |
| 161 } else { | 168 } else { |
| 162 type = CLIENT_CERT_TYPE_NONE; | 169 type = CLIENT_CERT_TYPE_NONE; |
| 163 NOTREACHED(); | 170 NOTREACHED(); |
| 164 } | 171 } |
| 165 | 172 |
| 166 ui_data->set_certificate_type(type); | 173 ui_data->set_certificate_type(type); |
| 167 } | 174 } |
| 168 | 175 |
| 169 void TranslateCertificatePattern(const base::DictionaryValue& onc_object, | 176 void TranslateCertificatePattern(const base::DictionaryValue& onc_object, |
| 170 NetworkUIData* ui_data) { | 177 NetworkUIData* ui_data) { |
| 171 CertificatePattern pattern; | 178 CertificatePattern pattern; |
| 172 bool success = pattern.ReadFromONCDictionary(onc_object); | 179 bool success = pattern.ReadFromONCDictionary(onc_object); |
| 173 DCHECK(success); | 180 DCHECK(success); |
| 174 ui_data->set_certificate_pattern(pattern); | 181 ui_data->set_certificate_pattern(pattern); |
| 175 } | 182 } |
| 176 | 183 |
| 177 void TranslateEAP(const base::DictionaryValue& eap, | |
| 178 NetworkUIData* ui_data) { | |
| 179 std::string client_cert_type; | |
| 180 if (eap.GetStringWithoutPathExpansion(::onc::eap::kClientCertType, | |
| 181 &client_cert_type)) { | |
| 182 TranslateClientCertType(client_cert_type, ui_data); | |
| 183 } | |
| 184 } | |
| 185 | |
| 186 void TranslateIPsec(const base::DictionaryValue& ipsec, | |
| 187 NetworkUIData* ui_data) { | |
| 188 std::string client_cert_type; | |
| 189 if (ipsec.GetStringWithoutPathExpansion(::onc::vpn::kClientCertType, | |
| 190 &client_cert_type)) { | |
| 191 TranslateClientCertType(client_cert_type, ui_data); | |
| 192 } | |
| 193 } | |
| 194 | |
| 195 void TranslateOpenVPN(const base::DictionaryValue& openvpn, | |
| 196 NetworkUIData* ui_data) { | |
| 197 std::string client_cert_type; | |
| 198 if (openvpn.GetStringWithoutPathExpansion(::onc::vpn::kClientCertType, | |
| 199 &client_cert_type)) { | |
| 200 TranslateClientCertType(client_cert_type, ui_data); | |
| 201 } | |
| 202 } | |
| 203 | |
| 204 void TranslateONCHierarchy(const onc::OncValueSignature& signature, | 184 void TranslateONCHierarchy(const onc::OncValueSignature& signature, |
| 205 const base::DictionaryValue& onc_object, | 185 const base::DictionaryValue& onc_object, |
| 206 NetworkUIData* ui_data) { | 186 NetworkUIData* ui_data) { |
| 207 if (&signature == &onc::kCertificatePatternSignature) | 187 if (&signature == &onc::kCertificatePatternSignature) { |
| 208 TranslateCertificatePattern(onc_object, ui_data); | 188 TranslateCertificatePattern(onc_object, ui_data); |
| 209 else if (&signature == &onc::kEAPSignature) | 189 } else if (&signature == &onc::kEAPSignature || |
| 210 TranslateEAP(onc_object, ui_data); | 190 &signature == &onc::kIPsecSignature || |
| 211 else if (&signature == &onc::kIPsecSignature) | 191 &signature == &onc::kOpenVPNSignature) { |
| 212 TranslateIPsec(onc_object, ui_data); | 192 GetAndTranslateClientCertType(onc_object, ui_data); |
| 213 else if (&signature == &onc::kOpenVPNSignature) | 193 } |
| 214 TranslateOpenVPN(onc_object, ui_data); | |
| 215 | 194 |
| 216 // Recurse into nested objects. | 195 // Recurse into nested objects. |
| 217 for (base::DictionaryValue::Iterator it(onc_object); !it.IsAtEnd(); | 196 for (base::DictionaryValue::Iterator it(onc_object); !it.IsAtEnd(); |
| 218 it.Advance()) { | 197 it.Advance()) { |
| 219 const base::DictionaryValue* inner_object; | 198 const base::DictionaryValue* inner_object; |
| 220 if (!it.value().GetAsDictionary(&inner_object)) | 199 if (!it.value().GetAsDictionary(&inner_object)) |
| 221 continue; | 200 continue; |
| 222 | 201 |
| 223 const onc::OncFieldSignature* field_signature = | 202 const onc::OncFieldSignature* field_signature = |
| 224 GetFieldSignature(signature, it.key()); | 203 GetFieldSignature(signature, it.key()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 237 scoped_ptr<NetworkUIData> ui_data(new NetworkUIData()); | 216 scoped_ptr<NetworkUIData> ui_data(new NetworkUIData()); |
| 238 TranslateONCHierarchy(onc::kNetworkConfigurationSignature, onc_network, | 217 TranslateONCHierarchy(onc::kNetworkConfigurationSignature, onc_network, |
| 239 ui_data.get()); | 218 ui_data.get()); |
| 240 | 219 |
| 241 ui_data->set_onc_source(onc_source); | 220 ui_data->set_onc_source(onc_source); |
| 242 | 221 |
| 243 return ui_data.Pass(); | 222 return ui_data.Pass(); |
| 244 } | 223 } |
| 245 | 224 |
| 246 } // namespace chromeos | 225 } // namespace chromeos |
| OLD | NEW |