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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
index 3624e4028278f4a459a0d966d87ddfb9edbde56c..5fc0e64462cbc8b8571935e8b5f21828277586e3 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -20,6 +20,7 @@
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/sys_info.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_process_platform_part_chromeos.h"
#include "chrome/browser/browser_shutdown.h"
@@ -312,7 +313,9 @@ SigninScreenHandler::SigninScreenHandler(
offline_login_active_(false),
last_network_state_(NetworkStateInformer::UNKNOWN),
has_pending_auth_ui_(false),
- caps_lock_enabled_(false),
+ caps_lock_enabled_(chromeos::input_method::InputMethodManager::Get()
+ ->GetImeKeyboard()
+ ->CapsLockIsEnabled()),
gaia_screen_handler_(gaia_screen_handler) {
DCHECK(network_state_informer_.get());
DCHECK(error_screen_actor_);
@@ -338,10 +341,26 @@ SigninScreenHandler::SigninScreenHandler(
registrar_.Add(this,
chrome::NOTIFICATION_AUTH_CANCELLED,
content::NotificationService::AllSources());
+
+ // Since keyboard handling differs between ChromeOS and Linux we need to
+ // use different observers depending on the two platforms.
+ if (base::SysInfo::IsRunningOnChromeOS()) {
+ chromeos::input_method::ImeKeyboard* keyboard =
+ chromeos::input_method::InputMethodManager::Get()->GetImeKeyboard();
+ keyboard->AddObserver(this);
+ } else {
+ ash::Shell::GetInstance()->PrependPreTargetHandler(this);
+ }
}
SigninScreenHandler::~SigninScreenHandler() {
- ash::Shell::GetInstance()->RemovePreTargetHandler(this);
+ if (base::SysInfo::IsRunningOnChromeOS()) {
+ chromeos::input_method::ImeKeyboard* keyboard =
+ chromeos::input_method::InputMethodManager::Get()->GetImeKeyboard();
+ keyboard->RemoveObserver(this);
+ } else {
+ ash::Shell::GetInstance()->RemovePreTargetHandler(this);
+ }
weak_factory_.InvalidateWeakPtrs();
if (delegate_)
delegate_->SetWebUIHandler(NULL);
@@ -726,9 +745,6 @@ void SigninScreenHandler::Initialize() {
if (!delegate_)
return;
- // Make sure the event is processed by this before the IME.
- ash::Shell::GetInstance()->PrependPreTargetHandler(this);
-
if (show_on_init_) {
show_on_init_ = false;
ShowImpl();
@@ -973,12 +989,8 @@ void SigninScreenHandler::OnCookiesCleared(base::Closure on_clear_callback) {
}
void SigninScreenHandler::OnKeyEvent(ui::KeyEvent* key) {
- if (key->type() == ui::ET_KEY_PRESSED &&
- key->key_code() == ui::VKEY_CAPITAL) {
- caps_lock_enabled_ = !caps_lock_enabled_;
- if (page_is_ready())
- CallJS("login.AccountPickerScreen.setCapsLockState", caps_lock_enabled_);
- }
+ if (key->type() == ui::ET_KEY_PRESSED && key->key_code() == ui::VKEY_CAPITAL)
+ OnCapsLockChanged(!caps_lock_enabled_);
}
void SigninScreenHandler::Observe(int type,
@@ -1791,4 +1803,10 @@ net::Error SigninScreenHandler::FrameError() const {
return gaia_screen_handler_->frame_error();
}
+void SigninScreenHandler::OnCapsLockChanged(bool enabled) {
+ caps_lock_enabled_ = enabled;
+ if (page_is_ready())
+ 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.
+}
+
} // namespace chromeos
« 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