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

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc

Issue 297663004: CapsLock indicator is shown in password field when CapsLock is on. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/ui/webui/chromeos/login/signin_screen_handler.h" 5 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/debug/trace_event.h" 12 #include "base/debug/trace_event.h"
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/metrics/histogram.h" 15 #include "base/metrics/histogram.h"
16 #include "base/prefs/pref_registry_simple.h" 16 #include "base/prefs/pref_registry_simple.h"
17 #include "base/prefs/pref_service.h" 17 #include "base/prefs/pref_service.h"
18 #include "base/prefs/scoped_user_pref_update.h" 18 #include "base/prefs/scoped_user_pref_update.h"
19 #include "base/strings/string16.h" 19 #include "base/strings/string16.h"
20 #include "base/strings/string_util.h" 20 #include "base/strings/string_util.h"
21 #include "base/strings/stringprintf.h" 21 #include "base/strings/stringprintf.h"
22 #include "base/strings/utf_string_conversions.h" 22 #include "base/strings/utf_string_conversions.h"
23 #include "base/sys_info.h"
23 #include "chrome/browser/browser_process.h" 24 #include "chrome/browser/browser_process.h"
24 #include "chrome/browser/browser_process_platform_part_chromeos.h" 25 #include "chrome/browser/browser_process_platform_part_chromeos.h"
25 #include "chrome/browser/browser_shutdown.h" 26 #include "chrome/browser/browser_shutdown.h"
26 #include "chrome/browser/chrome_notification_types.h" 27 #include "chrome/browser/chrome_notification_types.h"
27 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" 28 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
28 #include "chrome/browser/chromeos/boot_times_loader.h" 29 #include "chrome/browser/chromeos/boot_times_loader.h"
29 #include "chrome/browser/chromeos/input_method/input_method_util.h" 30 #include "chrome/browser/chromeos/input_method/input_method_util.h"
30 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h" 31 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
31 #include "chrome/browser/chromeos/login/hwid_checker.h" 32 #include "chrome/browser/chromeos/login/hwid_checker.h"
32 #include "chrome/browser/chromeos/login/lock/screen_locker.h" 33 #include "chrome/browser/chromeos/login/lock/screen_locker.h"
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 test_expects_complete_login_(false), 306 test_expects_complete_login_(false),
306 weak_factory_(this), 307 weak_factory_(this),
307 webui_visible_(false), 308 webui_visible_(false),
308 preferences_changed_delayed_(false), 309 preferences_changed_delayed_(false),
309 error_screen_actor_(error_screen_actor), 310 error_screen_actor_(error_screen_actor),
310 core_oobe_actor_(core_oobe_actor), 311 core_oobe_actor_(core_oobe_actor),
311 is_first_update_state_call_(true), 312 is_first_update_state_call_(true),
312 offline_login_active_(false), 313 offline_login_active_(false),
313 last_network_state_(NetworkStateInformer::UNKNOWN), 314 last_network_state_(NetworkStateInformer::UNKNOWN),
314 has_pending_auth_ui_(false), 315 has_pending_auth_ui_(false),
315 caps_lock_enabled_(false), 316 caps_lock_enabled_(chromeos::input_method::InputMethodManager::Get()
317 ->GetImeKeyboard()
318 ->CapsLockIsEnabled()),
316 gaia_screen_handler_(gaia_screen_handler) { 319 gaia_screen_handler_(gaia_screen_handler) {
317 DCHECK(network_state_informer_.get()); 320 DCHECK(network_state_informer_.get());
318 DCHECK(error_screen_actor_); 321 DCHECK(error_screen_actor_);
319 DCHECK(core_oobe_actor_); 322 DCHECK(core_oobe_actor_);
320 DCHECK(gaia_screen_handler_); 323 DCHECK(gaia_screen_handler_);
321 gaia_screen_handler_->SetSigninScreenHandler(this); 324 gaia_screen_handler_->SetSigninScreenHandler(this);
322 network_state_informer_->AddObserver(this); 325 network_state_informer_->AddObserver(this);
323 allow_new_user_subscription_ = CrosSettings::Get()->AddSettingsObserver( 326 allow_new_user_subscription_ = CrosSettings::Get()->AddSettingsObserver(
324 kAccountsPrefAllowNewUser, 327 kAccountsPrefAllowNewUser,
325 base::Bind(&SigninScreenHandler::UserSettingsChanged, 328 base::Bind(&SigninScreenHandler::UserSettingsChanged,
326 base::Unretained(this))); 329 base::Unretained(this)));
327 allow_guest_subscription_ = CrosSettings::Get()->AddSettingsObserver( 330 allow_guest_subscription_ = CrosSettings::Get()->AddSettingsObserver(
328 kAccountsPrefAllowGuest, 331 kAccountsPrefAllowGuest,
329 base::Bind(&SigninScreenHandler::UserSettingsChanged, 332 base::Bind(&SigninScreenHandler::UserSettingsChanged,
330 base::Unretained(this))); 333 base::Unretained(this)));
331 334
332 registrar_.Add(this, 335 registrar_.Add(this,
333 chrome::NOTIFICATION_AUTH_NEEDED, 336 chrome::NOTIFICATION_AUTH_NEEDED,
334 content::NotificationService::AllSources()); 337 content::NotificationService::AllSources());
335 registrar_.Add(this, 338 registrar_.Add(this,
336 chrome::NOTIFICATION_AUTH_SUPPLIED, 339 chrome::NOTIFICATION_AUTH_SUPPLIED,
337 content::NotificationService::AllSources()); 340 content::NotificationService::AllSources());
338 registrar_.Add(this, 341 registrar_.Add(this,
339 chrome::NOTIFICATION_AUTH_CANCELLED, 342 chrome::NOTIFICATION_AUTH_CANCELLED,
340 content::NotificationService::AllSources()); 343 content::NotificationService::AllSources());
344
345 // Since keyboard handling differs between ChromeOS and Linux we need to
346 // use different observers depending on the two platforms.
347 if (base::SysInfo::IsRunningOnChromeOS()) {
348 chromeos::input_method::ImeKeyboard* keyboard =
349 chromeos::input_method::InputMethodManager::Get()->GetImeKeyboard();
350 keyboard->AddObserver(this);
351 } else {
352 ash::Shell::GetInstance()->PrependPreTargetHandler(this);
353 }
341 } 354 }
342 355
343 SigninScreenHandler::~SigninScreenHandler() { 356 SigninScreenHandler::~SigninScreenHandler() {
344 ash::Shell::GetInstance()->RemovePreTargetHandler(this); 357 if (base::SysInfo::IsRunningOnChromeOS()) {
358 chromeos::input_method::ImeKeyboard* keyboard =
359 chromeos::input_method::InputMethodManager::Get()->GetImeKeyboard();
360 keyboard->RemoveObserver(this);
361 } else {
362 ash::Shell::GetInstance()->RemovePreTargetHandler(this);
363 }
345 weak_factory_.InvalidateWeakPtrs(); 364 weak_factory_.InvalidateWeakPtrs();
346 if (delegate_) 365 if (delegate_)
347 delegate_->SetWebUIHandler(NULL); 366 delegate_->SetWebUIHandler(NULL);
348 network_state_informer_->RemoveObserver(this); 367 network_state_informer_->RemoveObserver(this);
349 } 368 }
350 369
351 void SigninScreenHandler::DeclareLocalizedValues( 370 void SigninScreenHandler::DeclareLocalizedValues(
352 LocalizedValuesBuilder* builder) { 371 LocalizedValuesBuilder* builder) {
353 builder->Add("passwordHint", IDS_LOGIN_POD_EMPTY_PASSWORD_TEXT); 372 builder->Add("passwordHint", IDS_LOGIN_POD_EMPTY_PASSWORD_TEXT);
354 builder->Add("podMenuButtonAccessibleName", 373 builder->Add("podMenuButtonAccessibleName",
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 void SigninScreenHandler::ReloadGaiaScreen() { 738 void SigninScreenHandler::ReloadGaiaScreen() {
720 gaia_screen_handler_->ReloadGaia(); 739 gaia_screen_handler_->ReloadGaia();
721 } 740 }
722 741
723 void SigninScreenHandler::Initialize() { 742 void SigninScreenHandler::Initialize() {
724 // If delegate_ is NULL here (e.g. WebUIScreenLocker has been destroyed), 743 // If delegate_ is NULL here (e.g. WebUIScreenLocker has been destroyed),
725 // don't do anything, just return. 744 // don't do anything, just return.
726 if (!delegate_) 745 if (!delegate_)
727 return; 746 return;
728 747
729 // Make sure the event is processed by this before the IME.
730 ash::Shell::GetInstance()->PrependPreTargetHandler(this);
731
732 if (show_on_init_) { 748 if (show_on_init_) {
733 show_on_init_ = false; 749 show_on_init_ = false;
734 ShowImpl(); 750 ShowImpl();
735 } 751 }
736 } 752 }
737 753
738 gfx::NativeWindow SigninScreenHandler::GetNativeWindow() { 754 gfx::NativeWindow SigninScreenHandler::GetNativeWindow() {
739 if (native_window_delegate_) 755 if (native_window_delegate_)
740 return native_window_delegate_->GetNativeWindow(); 756 return native_window_delegate_->GetNativeWindow();
741 return NULL; 757 return NULL;
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
966 HandleShowAddUser(NULL); 982 HandleShowAddUser(NULL);
967 } 983 }
968 984
969 void SigninScreenHandler::OnCookiesCleared(base::Closure on_clear_callback) { 985 void SigninScreenHandler::OnCookiesCleared(base::Closure on_clear_callback) {
970 DCHECK_CURRENTLY_ON(BrowserThread::UI); 986 DCHECK_CURRENTLY_ON(BrowserThread::UI);
971 cookies_cleared_ = true; 987 cookies_cleared_ = true;
972 on_clear_callback.Run(); 988 on_clear_callback.Run();
973 } 989 }
974 990
975 void SigninScreenHandler::OnKeyEvent(ui::KeyEvent* key) { 991 void SigninScreenHandler::OnKeyEvent(ui::KeyEvent* key) {
976 if (key->type() == ui::ET_KEY_PRESSED && 992 if (key->type() == ui::ET_KEY_PRESSED && key->key_code() == ui::VKEY_CAPITAL)
977 key->key_code() == ui::VKEY_CAPITAL) { 993 OnCapsLockChanged(!caps_lock_enabled_);
978 caps_lock_enabled_ = !caps_lock_enabled_;
979 if (page_is_ready())
980 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_);
981 }
982 } 994 }
983 995
984 void SigninScreenHandler::Observe(int type, 996 void SigninScreenHandler::Observe(int type,
985 const content::NotificationSource& source, 997 const content::NotificationSource& source,
986 const content::NotificationDetails& details) { 998 const content::NotificationDetails& details) {
987 switch (type) { 999 switch (type) {
988 case chrome::NOTIFICATION_AUTH_NEEDED: { 1000 case chrome::NOTIFICATION_AUTH_NEEDED: {
989 has_pending_auth_ui_ = true; 1001 has_pending_auth_ui_ = true;
990 break; 1002 break;
991 } 1003 }
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after
1784 GaiaScreenHandler::FrameState SigninScreenHandler::FrameState() const { 1796 GaiaScreenHandler::FrameState SigninScreenHandler::FrameState() const {
1785 DCHECK(gaia_screen_handler_); 1797 DCHECK(gaia_screen_handler_);
1786 return gaia_screen_handler_->frame_state(); 1798 return gaia_screen_handler_->frame_state();
1787 } 1799 }
1788 1800
1789 net::Error SigninScreenHandler::FrameError() const { 1801 net::Error SigninScreenHandler::FrameError() const {
1790 DCHECK(gaia_screen_handler_); 1802 DCHECK(gaia_screen_handler_);
1791 return gaia_screen_handler_->frame_error(); 1803 return gaia_screen_handler_->frame_error();
1792 } 1804 }
1793 1805
1806 void SigninScreenHandler::OnCapsLockChanged(bool enabled) {
1807 caps_lock_enabled_ = enabled;
1808 if (page_is_ready())
1809 CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_);
ygorshenin1 2014/05/20 16:37:57 nit: could you please add to the Initialize() meth
dzhioev (left Google) 2014/05/20 16:53:11 We reset Caps Lock state in ShowImpl.
1810 }
1811
1794 } // namespace chromeos 1812 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698