OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/chromeos/options/wifi_config_view.h" | 5 #include "chrome/browser/chromeos/options/wifi_config_view.h" |
6 | 6 |
7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "chrome/browser/chromeos/cros/cros_library.h" | 9 #include "chrome/browser/chromeos/cros/cros_library.h" |
10 #include "chrome/browser/chromeos/cros/network_library.h" | 10 #include "chrome/browser/chromeos/cros/network_library.h" |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 | 307 |
308 bool WifiConfigView::CanLogin() { | 308 bool WifiConfigView::CanLogin() { |
309 static const size_t kMinWirelessPasswordLen = 5; | 309 static const size_t kMinWirelessPasswordLen = 5; |
310 | 310 |
311 // We either have an existing wifi network or the user entered an SSID. | 311 // We either have an existing wifi network or the user entered an SSID. |
312 if (service_path_.empty() && GetSsid().empty()) | 312 if (service_path_.empty() && GetSsid().empty()) |
313 return false; | 313 return false; |
314 | 314 |
315 // If the network requires a passphrase, make sure it is the right length. | 315 // If the network requires a passphrase, make sure it is the right length. |
316 if (passphrase_textfield_ != NULL | 316 if (passphrase_textfield_ != NULL |
317 && passphrase_textfield_->IsEnabled() | 317 && passphrase_textfield_->enabled() |
318 && passphrase_textfield_->text().length() < kMinWirelessPasswordLen) | 318 && passphrase_textfield_->text().length() < kMinWirelessPasswordLen) |
319 return false; | 319 return false; |
320 | 320 |
321 // If we're using EAP, we must have a method. | 321 // If we're using EAP, we must have a method. |
322 if (eap_method_combobox_ | 322 if (eap_method_combobox_ |
323 && eap_method_combobox_->IsEnabled() | 323 && eap_method_combobox_->enabled() |
324 && eap_method_combobox_->selected_item() == EAP_METHOD_INDEX_NONE) | 324 && eap_method_combobox_->selected_item() == EAP_METHOD_INDEX_NONE) |
325 return false; | 325 return false; |
326 | 326 |
327 // Block login if certs are required but user has none. | 327 // Block login if certs are required but user has none. |
328 if (UserCertRequired() && (!HaveUserCerts() || !IsUserCertValid())) | 328 if (UserCertRequired() && (!HaveUserCerts() || !IsUserCertValid())) |
329 return false; | 329 return false; |
330 | 330 |
331 return true; | 331 return true; |
332 } | 332 } |
333 | 333 |
334 bool WifiConfigView::UserCertRequired() const { | 334 bool WifiConfigView::UserCertRequired() const { |
335 if (!cert_library_) | 335 if (!cert_library_) |
336 return false; // return false until cert_library_ is initialized. | 336 return false; // return false until cert_library_ is initialized. |
337 // Only EAP-TLS requires a user certificate. | 337 // Only EAP-TLS requires a user certificate. |
338 if (eap_method_combobox_ && | 338 if (eap_method_combobox_ && |
339 eap_method_combobox_->IsEnabled() && | 339 eap_method_combobox_->enabled() && |
340 eap_method_combobox_->selected_item() == EAP_METHOD_INDEX_TLS) { | 340 eap_method_combobox_->selected_item() == EAP_METHOD_INDEX_TLS) { |
341 return true; | 341 return true; |
342 } | 342 } |
343 return false; | 343 return false; |
344 } | 344 } |
345 | 345 |
346 bool WifiConfigView::HaveUserCerts() const { | 346 bool WifiConfigView::HaveUserCerts() const { |
347 return cert_library_->GetUserCertificates().Size() > 0; | 347 return cert_library_->GetUserCertificates().Size() > 0; |
348 } | 348 } |
349 | 349 |
350 bool WifiConfigView::IsUserCertValid() const { | 350 bool WifiConfigView::IsUserCertValid() const { |
351 if (!user_cert_combobox_ || !user_cert_combobox_->IsEnabled()) | 351 if (!user_cert_combobox_ || !user_cert_combobox_->enabled()) |
352 return false; | 352 return false; |
353 int selected = user_cert_combobox_->selected_item(); | 353 int selected = user_cert_combobox_->selected_item(); |
354 if (selected < 0) | 354 if (selected < 0) |
355 return false; | 355 return false; |
356 // Currently only hardware-backed user certificates are valid. | 356 // Currently only hardware-backed user certificates are valid. |
357 if (cert_library_->IsHardwareBacked() && | 357 if (cert_library_->IsHardwareBacked() && |
358 !cert_library_->GetUserCertificates().IsHardwareBackedAt(selected)) | 358 !cert_library_->GetUserCertificates().IsHardwareBackedAt(selected)) |
359 return false; | 359 return false; |
360 return true; | 360 return true; |
361 } | 361 } |
362 | 362 |
363 void WifiConfigView::UpdateDialogButtons() { | 363 void WifiConfigView::UpdateDialogButtons() { |
364 parent_->GetDialogClientView()->UpdateDialogButtons(); | 364 parent_->GetDialogClientView()->UpdateDialogButtons(); |
365 } | 365 } |
366 | 366 |
367 void WifiConfigView::RefreshEapFields() { | 367 void WifiConfigView::RefreshEapFields() { |
368 DCHECK(cert_library_); | 368 DCHECK(cert_library_); |
369 int selected = eap_method_combobox_->selected_item(); | 369 int selected = eap_method_combobox_->selected_item(); |
370 | 370 |
371 // If EAP method changes, the phase 2 auth choices may have changed also. | 371 // If EAP method changes, the phase 2 auth choices may have changed also. |
372 phase_2_auth_combobox_->ModelChanged(); | 372 phase_2_auth_combobox_->ModelChanged(); |
373 phase_2_auth_combobox_->SetSelectedItem(0); | 373 phase_2_auth_combobox_->SetSelectedItem(0); |
374 phase_2_auth_combobox_->SetEnabled( | 374 phase_2_auth_combobox_->SetEnabled( |
375 phase_2_auth_combobox_->model()->GetItemCount() > 1 && | 375 phase_2_auth_combobox_->model()->GetItemCount() > 1 && |
376 phase_2_auth_ui_data_.editable()); | 376 phase_2_auth_ui_data_.editable()); |
377 phase_2_auth_label_->SetEnabled(phase_2_auth_combobox_->IsEnabled()); | 377 phase_2_auth_label_->SetEnabled(phase_2_auth_combobox_->enabled()); |
378 | 378 |
379 // No password for EAP-TLS | 379 // No password for EAP-TLS |
380 passphrase_textfield_->SetEnabled(selected != EAP_METHOD_INDEX_NONE && | 380 passphrase_textfield_->SetEnabled(selected != EAP_METHOD_INDEX_NONE && |
381 selected != EAP_METHOD_INDEX_TLS && | 381 selected != EAP_METHOD_INDEX_TLS && |
382 passphrase_ui_data_.editable()); | 382 passphrase_ui_data_.editable()); |
383 passphrase_label_->SetEnabled(passphrase_textfield_->IsEnabled()); | 383 passphrase_label_->SetEnabled(passphrase_textfield_->enabled()); |
384 if (!passphrase_textfield_->IsEnabled()) | 384 if (!passphrase_textfield_->enabled()) |
385 passphrase_textfield_->SetText(string16()); | 385 passphrase_textfield_->SetText(string16()); |
386 | 386 |
387 // User certs only for EAP-TLS | 387 // User certs only for EAP-TLS |
388 bool certs_loading = cert_library_->CertificatesLoading(); | 388 bool certs_loading = cert_library_->CertificatesLoading(); |
389 bool user_cert_enabled = (selected == EAP_METHOD_INDEX_TLS); | 389 bool user_cert_enabled = (selected == EAP_METHOD_INDEX_TLS); |
390 user_cert_label_->SetEnabled(user_cert_enabled); | 390 user_cert_label_->SetEnabled(user_cert_enabled); |
391 bool have_user_certs = !certs_loading && HaveUserCerts(); | 391 bool have_user_certs = !certs_loading && HaveUserCerts(); |
392 user_cert_combobox_->SetEnabled(user_cert_enabled && | 392 user_cert_combobox_->SetEnabled(user_cert_enabled && |
393 have_user_certs && | 393 have_user_certs && |
394 user_cert_ui_data_.editable()); | 394 user_cert_ui_data_.editable()); |
395 user_cert_combobox_->ModelChanged(); | 395 user_cert_combobox_->ModelChanged(); |
396 user_cert_combobox_->SetSelectedItem(0); | 396 user_cert_combobox_->SetSelectedItem(0); |
397 | 397 |
398 // No server CA certs for LEAP | 398 // No server CA certs for LEAP |
399 bool ca_cert_enabled = | 399 bool ca_cert_enabled = |
400 (selected != EAP_METHOD_INDEX_NONE && selected != EAP_METHOD_INDEX_LEAP); | 400 (selected != EAP_METHOD_INDEX_NONE && selected != EAP_METHOD_INDEX_LEAP); |
401 server_ca_cert_label_->SetEnabled(ca_cert_enabled); | 401 server_ca_cert_label_->SetEnabled(ca_cert_enabled); |
402 server_ca_cert_combobox_->SetEnabled(ca_cert_enabled && | 402 server_ca_cert_combobox_->SetEnabled(ca_cert_enabled && |
403 !certs_loading && | 403 !certs_loading && |
404 server_ca_cert_ui_data_.editable()); | 404 server_ca_cert_ui_data_.editable()); |
405 server_ca_cert_combobox_->ModelChanged(); | 405 server_ca_cert_combobox_->ModelChanged(); |
406 server_ca_cert_combobox_->SetSelectedItem(0); | 406 server_ca_cert_combobox_->SetSelectedItem(0); |
407 | 407 |
408 // No anonymous identity if no phase 2 auth. | 408 // No anonymous identity if no phase 2 auth. |
409 identity_anonymous_textfield_->SetEnabled( | 409 identity_anonymous_textfield_->SetEnabled( |
410 phase_2_auth_combobox_->IsEnabled() && | 410 phase_2_auth_combobox_->enabled() && |
411 identity_anonymous_ui_data_.editable()); | 411 identity_anonymous_ui_data_.editable()); |
412 identity_anonymous_label_->SetEnabled( | 412 identity_anonymous_label_->SetEnabled( |
413 identity_anonymous_textfield_->IsEnabled()); | 413 identity_anonymous_textfield_->enabled()); |
414 if (!identity_anonymous_textfield_->IsEnabled()) | 414 if (!identity_anonymous_textfield_->enabled()) |
415 identity_anonymous_textfield_->SetText(string16()); | 415 identity_anonymous_textfield_->SetText(string16()); |
416 | 416 |
417 RefreshShareCheckbox(); | 417 RefreshShareCheckbox(); |
418 } | 418 } |
419 | 419 |
420 void WifiConfigView::RefreshShareCheckbox() { | 420 void WifiConfigView::RefreshShareCheckbox() { |
421 if (!share_network_checkbox_) | 421 if (!share_network_checkbox_) |
422 return; | 422 return; |
423 | 423 |
424 if (security_combobox_ && | 424 if (security_combobox_ && |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
642 return result; | 642 return result; |
643 } | 643 } |
644 | 644 |
645 bool WifiConfigView::GetSaveCredentials() const { | 645 bool WifiConfigView::GetSaveCredentials() const { |
646 if (!save_credentials_checkbox_) | 646 if (!save_credentials_checkbox_) |
647 return true; // share networks by default (e.g. non 8021x). | 647 return true; // share networks by default (e.g. non 8021x). |
648 return save_credentials_checkbox_->checked(); | 648 return save_credentials_checkbox_->checked(); |
649 } | 649 } |
650 | 650 |
651 bool WifiConfigView::GetShareNetwork(bool share_default) const { | 651 bool WifiConfigView::GetShareNetwork(bool share_default) const { |
652 if (!share_network_checkbox_ || !share_network_checkbox_->IsEnabled()) | 652 if (!share_network_checkbox_ || !share_network_checkbox_->enabled()) |
653 return share_default; | 653 return share_default; |
654 return share_network_checkbox_->checked(); | 654 return share_network_checkbox_->checked(); |
655 } | 655 } |
656 | 656 |
657 EAPMethod WifiConfigView::GetEapMethod() const { | 657 EAPMethod WifiConfigView::GetEapMethod() const { |
658 DCHECK(eap_method_combobox_); | 658 DCHECK(eap_method_combobox_); |
659 switch (eap_method_combobox_->selected_item()) { | 659 switch (eap_method_combobox_->selected_item()) { |
660 case EAP_METHOD_INDEX_NONE: | 660 case EAP_METHOD_INDEX_NONE: |
661 return EAP_METHOD_UNKNOWN; | 661 return EAP_METHOD_UNKNOWN; |
662 case EAP_METHOD_INDEX_PEAP: | 662 case EAP_METHOD_INDEX_PEAP: |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1026 break; | 1026 break; |
1027 case EAP_METHOD_LEAP: | 1027 case EAP_METHOD_LEAP: |
1028 eap_method_combobox_->SetSelectedItem(EAP_METHOD_INDEX_LEAP); | 1028 eap_method_combobox_->SetSelectedItem(EAP_METHOD_INDEX_LEAP); |
1029 break; | 1029 break; |
1030 default: | 1030 default: |
1031 break; | 1031 break; |
1032 } | 1032 } |
1033 RefreshEapFields(); | 1033 RefreshEapFields(); |
1034 | 1034 |
1035 // Phase 2 authentication | 1035 // Phase 2 authentication |
1036 if (phase_2_auth_combobox_->IsEnabled()) { | 1036 if (phase_2_auth_combobox_->enabled()) { |
1037 EAPPhase2Auth eap_phase_2_auth = | 1037 EAPPhase2Auth eap_phase_2_auth = |
1038 (wifi ? wifi->eap_phase_2_auth() : EAP_PHASE_2_AUTH_AUTO); | 1038 (wifi ? wifi->eap_phase_2_auth() : EAP_PHASE_2_AUTH_AUTO); |
1039 switch (eap_phase_2_auth) { | 1039 switch (eap_phase_2_auth) { |
1040 case EAP_PHASE_2_AUTH_MD5: | 1040 case EAP_PHASE_2_AUTH_MD5: |
1041 phase_2_auth_combobox_->SetSelectedItem(PHASE_2_AUTH_INDEX_MD5); | 1041 phase_2_auth_combobox_->SetSelectedItem(PHASE_2_AUTH_INDEX_MD5); |
1042 break; | 1042 break; |
1043 case EAP_PHASE_2_AUTH_MSCHAPV2: | 1043 case EAP_PHASE_2_AUTH_MSCHAPV2: |
1044 phase_2_auth_combobox_->SetSelectedItem(PHASE_2_AUTH_INDEX_MSCHAPV2); | 1044 phase_2_auth_combobox_->SetSelectedItem(PHASE_2_AUTH_INDEX_MSCHAPV2); |
1045 break; | 1045 break; |
1046 case EAP_PHASE_2_AUTH_MSCHAP: | 1046 case EAP_PHASE_2_AUTH_MSCHAP: |
1047 phase_2_auth_combobox_->SetSelectedItem(PHASE_2_AUTH_INDEX_MSCHAP); | 1047 phase_2_auth_combobox_->SetSelectedItem(PHASE_2_AUTH_INDEX_MSCHAP); |
1048 break; | 1048 break; |
1049 case EAP_PHASE_2_AUTH_PAP: | 1049 case EAP_PHASE_2_AUTH_PAP: |
1050 phase_2_auth_combobox_->SetSelectedItem(PHASE_2_AUTH_INDEX_PAP); | 1050 phase_2_auth_combobox_->SetSelectedItem(PHASE_2_AUTH_INDEX_PAP); |
1051 break; | 1051 break; |
1052 case EAP_PHASE_2_AUTH_CHAP: | 1052 case EAP_PHASE_2_AUTH_CHAP: |
1053 phase_2_auth_combobox_->SetSelectedItem(PHASE_2_AUTH_INDEX_CHAP); | 1053 phase_2_auth_combobox_->SetSelectedItem(PHASE_2_AUTH_INDEX_CHAP); |
1054 break; | 1054 break; |
1055 default: | 1055 default: |
1056 break; | 1056 break; |
1057 } | 1057 } |
1058 } | 1058 } |
1059 | 1059 |
1060 // Server CA certificate | 1060 // Server CA certificate |
1061 if (server_ca_cert_combobox_->IsEnabled()) { | 1061 if (server_ca_cert_combobox_->enabled()) { |
1062 const std::string& nss_nickname = | 1062 const std::string& nss_nickname = |
1063 (wifi ? wifi->eap_server_ca_cert_nss_nickname() : std::string()); | 1063 (wifi ? wifi->eap_server_ca_cert_nss_nickname() : std::string()); |
1064 if (nss_nickname.empty()) { | 1064 if (nss_nickname.empty()) { |
1065 if (wifi->eap_use_system_cas()) { | 1065 if (wifi->eap_use_system_cas()) { |
1066 // "Default" | 1066 // "Default" |
1067 server_ca_cert_combobox_->SetSelectedItem(0); | 1067 server_ca_cert_combobox_->SetSelectedItem(0); |
1068 } else { | 1068 } else { |
1069 // "Do not check" | 1069 // "Do not check" |
1070 server_ca_cert_combobox_->SetSelectedItem( | 1070 server_ca_cert_combobox_->SetSelectedItem( |
1071 server_ca_cert_combobox_->model()->GetItemCount() - 1); | 1071 server_ca_cert_combobox_->model()->GetItemCount() - 1); |
1072 } | 1072 } |
1073 } else { | 1073 } else { |
1074 // select the certificate if available | 1074 // select the certificate if available |
1075 int cert_index = | 1075 int cert_index = |
1076 cert_library_->GetCACertificates().FindCertByNickname(nss_nickname); | 1076 cert_library_->GetCACertificates().FindCertByNickname(nss_nickname); |
1077 if (cert_index >= 0) { | 1077 if (cert_index >= 0) { |
1078 // Skip item for "Default" | 1078 // Skip item for "Default" |
1079 server_ca_cert_combobox_->SetSelectedItem(1 + cert_index); | 1079 server_ca_cert_combobox_->SetSelectedItem(1 + cert_index); |
1080 } | 1080 } |
1081 } | 1081 } |
1082 } | 1082 } |
1083 | 1083 |
1084 // User certificate | 1084 // User certificate |
1085 if (user_cert_combobox_->IsEnabled()) { | 1085 if (user_cert_combobox_->enabled()) { |
1086 const std::string& pkcs11_id = | 1086 const std::string& pkcs11_id = |
1087 (wifi ? wifi->eap_client_cert_pkcs11_id() : std::string()); | 1087 (wifi ? wifi->eap_client_cert_pkcs11_id() : std::string()); |
1088 if (!pkcs11_id.empty()) { | 1088 if (!pkcs11_id.empty()) { |
1089 int cert_index = | 1089 int cert_index = |
1090 cert_library_->GetUserCertificates().FindCertByPkcs11Id(pkcs11_id); | 1090 cert_library_->GetUserCertificates().FindCertByPkcs11Id(pkcs11_id); |
1091 if (cert_index >= 0) { | 1091 if (cert_index >= 0) { |
1092 user_cert_combobox_->SetSelectedItem(cert_index); | 1092 user_cert_combobox_->SetSelectedItem(cert_index); |
1093 } | 1093 } |
1094 } | 1094 } |
1095 } | 1095 } |
1096 | 1096 |
1097 // Identity | 1097 // Identity |
1098 if (identity_textfield_->IsEnabled()) { | 1098 if (identity_textfield_->enabled()) { |
1099 const std::string& eap_identity = | 1099 const std::string& eap_identity = |
1100 (wifi ? wifi->eap_identity() : std::string()); | 1100 (wifi ? wifi->eap_identity() : std::string()); |
1101 identity_textfield_->SetText(UTF8ToUTF16(eap_identity)); | 1101 identity_textfield_->SetText(UTF8ToUTF16(eap_identity)); |
1102 } | 1102 } |
1103 | 1103 |
1104 // Anonymous identity | 1104 // Anonymous identity |
1105 if (identity_anonymous_textfield_->IsEnabled()) { | 1105 if (identity_anonymous_textfield_->enabled()) { |
1106 const std::string& eap_anonymous_identity = | 1106 const std::string& eap_anonymous_identity = |
1107 (wifi ? wifi->eap_anonymous_identity() : std::string()); | 1107 (wifi ? wifi->eap_anonymous_identity() : std::string()); |
1108 identity_anonymous_textfield_->SetText( | 1108 identity_anonymous_textfield_->SetText( |
1109 UTF8ToUTF16(eap_anonymous_identity)); | 1109 UTF8ToUTF16(eap_anonymous_identity)); |
1110 } | 1110 } |
1111 | 1111 |
1112 // Passphrase | 1112 // Passphrase |
1113 if (passphrase_textfield_->IsEnabled()) { | 1113 if (passphrase_textfield_->enabled()) { |
1114 const std::string& eap_passphrase = | 1114 const std::string& eap_passphrase = |
1115 (wifi ? wifi->eap_passphrase() : std::string()); | 1115 (wifi ? wifi->eap_passphrase() : std::string()); |
1116 passphrase_textfield_->SetText(UTF8ToUTF16(eap_passphrase)); | 1116 passphrase_textfield_->SetText(UTF8ToUTF16(eap_passphrase)); |
1117 } | 1117 } |
1118 | 1118 |
1119 // Save credentials | 1119 // Save credentials |
1120 bool save_credentials = (wifi ? wifi->save_credentials() : false); | 1120 bool save_credentials = (wifi ? wifi->save_credentials() : false); |
1121 save_credentials_checkbox_->SetChecked(save_credentials); | 1121 save_credentials_checkbox_->SetChecked(save_credentials); |
1122 } | 1122 } |
1123 | 1123 |
1124 RefreshShareCheckbox(); | 1124 RefreshShareCheckbox(); |
1125 UpdateErrorLabel(); | 1125 UpdateErrorLabel(); |
1126 } | 1126 } |
1127 | 1127 |
1128 void WifiConfigView::InitFocus() { | 1128 void WifiConfigView::InitFocus() { |
1129 // Set focus to a reasonable widget, depending on what we're showing. | 1129 // Set focus to a reasonable widget, depending on what we're showing. |
1130 if (ssid_textfield_) | 1130 if (ssid_textfield_) |
1131 ssid_textfield_->RequestFocus(); | 1131 ssid_textfield_->RequestFocus(); |
1132 else if (eap_method_combobox_) | 1132 else if (eap_method_combobox_) |
1133 eap_method_combobox_->RequestFocus(); | 1133 eap_method_combobox_->RequestFocus(); |
1134 else if (passphrase_textfield_ && passphrase_textfield_->IsEnabled()) | 1134 else if (passphrase_textfield_ && passphrase_textfield_->enabled()) |
1135 passphrase_textfield_->RequestFocus(); | 1135 passphrase_textfield_->RequestFocus(); |
1136 } | 1136 } |
1137 | 1137 |
1138 } // namespace chromeos | 1138 } // namespace chromeos |
OLD | NEW |