| 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 |