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

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: Merge conflict resolved. 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 bf59270675b8c4b353455f840c87dfef340fb635..9f905f077324579e2de62575ed5ad387b379de07 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"
@@ -315,7 +316,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_);
@@ -341,10 +344,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);
@@ -730,9 +749,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();
@@ -929,12 +945,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,
@@ -1817,4 +1829,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_);
+}
+
} // 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