summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authormazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-23 01:50:16 +0000
committermazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-23 01:50:16 +0000
commit646228a9066b7a3ad0c3a1b346f0e634e137fe71 (patch)
tree3ebe3799be8a166a1db818c60cb7b905e26bb5cc /ash
parent3a8e6194ab43a9a37c08423bfda2c0e461982978 (diff)
downloadchromium_src-646228a9066b7a3ad0c3a1b346f0e634e137fe71.zip
chromium_src-646228a9066b7a3ad0c3a1b346f0e634e137fe71.tar.gz
chromium_src-646228a9066b7a3ad0c3a1b346f0e634e137fe71.tar.bz2
Make caps lock disabled on shift release.
BUG=138575 TEST=Manual Review URL: https://chromiumcodereview.appspot.com/10831384 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@152915 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r--ash/accelerators/accelerator_controller.cc5
-rw-r--r--ash/accelerators/accelerator_controller_unittest.cc20
-rw-r--r--ash/accelerators/accelerator_table.cc5
-rw-r--r--ash/accelerators/accelerator_table.h1
4 files changed, 31 insertions, 0 deletions
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc
index 075e656..8948851 100644
--- a/ash/accelerators/accelerator_controller.cc
+++ b/ash/accelerators/accelerator_controller.cc
@@ -476,6 +476,11 @@ bool AcceleratorController::PerformAction(int action,
return false;
ash::Shell::GetInstance()->ToggleAppList();
return true;
+ case DISABLE_CAPS_LOCK:
+ // TODO(mazda): Handle this using |caps_lock_delegate_|.
+ if (shell->tray_delegate()->IsCapsLockOn())
+ shell->tray_delegate()->SetCapsLockEnabled(false);
+ return true;
case TOGGLE_CAPS_LOCK:
if (caps_lock_delegate_.get())
return caps_lock_delegate_->HandleToggleCapsLock();
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc
index 7bf1c13..d78b750 100644
--- a/ash/accelerators/accelerator_controller_unittest.cc
+++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -600,6 +600,26 @@ TEST_F(AcceleratorControllerTest, GlobalAccelerators) {
EXPECT_TRUE(GetController()->Process(
ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE)));
}
+ // DisableCapsLock
+ {
+ // Handled only on key release.
+ EXPECT_FALSE(GetController()->Process(
+ ui::Accelerator(ui::VKEY_LSHIFT, ui::EF_NONE)));
+ EXPECT_TRUE(GetController()->Process(
+ ReleaseAccelerator(ui::VKEY_SHIFT, ui::EF_NONE)));
+ EXPECT_FALSE(GetController()->Process(
+ ui::Accelerator(ui::VKEY_RSHIFT, ui::EF_NONE)));
+ EXPECT_TRUE(GetController()->Process(
+ ReleaseAccelerator(ui::VKEY_LSHIFT, ui::EF_NONE)));
+ EXPECT_FALSE(GetController()->Process(
+ ui::Accelerator(ui::VKEY_SHIFT, ui::EF_NONE)));
+ EXPECT_TRUE(GetController()->Process(
+ ReleaseAccelerator(ui::VKEY_RSHIFT, ui::EF_NONE)));
+
+ // Do not handle when a shift pressed with other keys.
+ EXPECT_FALSE(GetController()->Process(
+ ReleaseAccelerator(ui::VKEY_A, ui::EF_SHIFT_DOWN)));
+ }
// ToggleCapsLock
{
EXPECT_FALSE(GetController()->Process(
diff --git a/ash/accelerators/accelerator_table.cc b/ash/accelerators/accelerator_table.cc
index 6287b71..5a53ec5 100644
--- a/ash/accelerators/accelerator_table.cc
+++ b/ash/accelerators/accelerator_table.cc
@@ -19,6 +19,10 @@ const AcceleratorData kAcceleratorData[] = {
{ false, ui::VKEY_LSHIFT, ui::EF_ALT_DOWN, NEXT_IME },
{ false, ui::VKEY_SHIFT, ui::EF_ALT_DOWN, NEXT_IME },
{ false, ui::VKEY_RSHIFT, ui::EF_ALT_DOWN, NEXT_IME },
+ // Single shift release turns off caps lock.
+ { false, ui::VKEY_LSHIFT, ui::EF_NONE, DISABLE_CAPS_LOCK },
+ { false, ui::VKEY_SHIFT, ui::EF_NONE, DISABLE_CAPS_LOCK },
+ { false, ui::VKEY_RSHIFT, ui::EF_NONE, DISABLE_CAPS_LOCK },
{ true, ui::VKEY_SPACE, ui::EF_CONTROL_DOWN, PREVIOUS_IME },
// Shortcuts for Japanese IME.
@@ -189,6 +193,7 @@ const AcceleratorAction kActionsAllowedAtLoginOrLockScreen[] = {
#if defined(OS_CHROMEOS)
CYCLE_DISPLAY_MODE,
#endif // defined(OS_CHROMEOS)
+ DISABLE_CAPS_LOCK,
KEYBOARD_BRIGHTNESS_DOWN,
KEYBOARD_BRIGHTNESS_UP,
NEXT_IME,
diff --git a/ash/accelerators/accelerator_table.h b/ash/accelerators/accelerator_table.h
index c5c5462..a599460 100644
--- a/ash/accelerators/accelerator_table.h
+++ b/ash/accelerators/accelerator_table.h
@@ -19,6 +19,7 @@ enum AcceleratorAction {
CYCLE_BACKWARD_MRU,
CYCLE_FORWARD_LINEAR,
CYCLE_FORWARD_MRU,
+ DISABLE_CAPS_LOCK,
DISPLAY_ADD_REMOVE,
DISPLAY_CYCLE,
DISPLAY_TOGGLE_SCALE,