Commit 8981b7ec authored by Daniel Erat's avatar Daniel Erat Committed by Commit Bot

chromeos: Fix "Print Screen" screenshot accelerator.

Make ash map VKEY_SNAPSHOT to the TAKE_SCREENSHOT action.
7ab3497a updated Chrome to map the "Print Screen" key to
VKEY_SNAPSHOT rather than VKEY_PRINT.

Bug: 683097, 846919, 872094
Change-Id: I3e8de9e8b2d110d8e06649fc0553c6d9b7cab35a
Reviewed-on: https://chromium-review.googlesource.com/1166037
Commit-Queue: Dan Erat <derat@chromium.org>
Reviewed-by: default avatarKevin Schoedel <kpschoedel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#581711}
parent da86b34b
......@@ -653,7 +653,7 @@ TEST_F(AcceleratorControllerTest, GlobalAccelerators) {
EXPECT_TRUE(ProcessInController(
ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN)));
EXPECT_TRUE(
ProcessInController(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE)));
ProcessInController(ui::Accelerator(ui::VKEY_SNAPSHOT, ui::EF_NONE)));
EXPECT_TRUE(ProcessInController(ui::Accelerator(
ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
......@@ -663,7 +663,7 @@ TEST_F(AcceleratorControllerTest, GlobalAccelerators) {
ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN)));
EXPECT_EQ(1, delegate->handle_take_screenshot_count());
EXPECT_TRUE(
ProcessInController(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE)));
ProcessInController(ui::Accelerator(ui::VKEY_SNAPSHOT, ui::EF_NONE)));
EXPECT_EQ(2, delegate->handle_take_screenshot_count());
EXPECT_TRUE(ProcessInController(ui::Accelerator(
ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
......@@ -909,9 +909,9 @@ TEST_F(AcceleratorControllerTest, PreferredReservedAccelerators) {
// Others are not reserved nor preferred
EXPECT_FALSE(GetController()->IsReserved(
ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE)));
ui::Accelerator(ui::VKEY_SNAPSHOT, ui::EF_NONE)));
EXPECT_FALSE(GetController()->IsPreferred(
ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE)));
ui::Accelerator(ui::VKEY_SNAPSHOT, ui::EF_NONE)));
EXPECT_FALSE(
GetController()->IsReserved(ui::Accelerator(ui::VKEY_TAB, ui::EF_NONE)));
EXPECT_FALSE(
......@@ -1119,7 +1119,7 @@ TEST_F(AcceleratorControllerTest, DisallowedAtModalWindow) {
EXPECT_TRUE(ProcessInController(
ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN)));
EXPECT_TRUE(
ProcessInController(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE)));
ProcessInController(ui::Accelerator(ui::VKEY_SNAPSHOT, ui::EF_NONE)));
EXPECT_TRUE(ProcessInController(ui::Accelerator(
ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
delegate->set_can_take_screenshot(true);
......@@ -1128,7 +1128,7 @@ TEST_F(AcceleratorControllerTest, DisallowedAtModalWindow) {
ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN)));
EXPECT_EQ(1, delegate->handle_take_screenshot_count());
EXPECT_TRUE(
ProcessInController(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE)));
ProcessInController(ui::Accelerator(ui::VKEY_SNAPSHOT, ui::EF_NONE)));
EXPECT_EQ(2, delegate->handle_take_screenshot_count());
EXPECT_TRUE(ProcessInController(ui::Accelerator(
ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
......
......@@ -35,10 +35,11 @@ TEST_F(AcceleratorFilterTest, TestFilterWithoutFocus) {
ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
// AcceleratorController calls ScreenshotDelegate::HandleTakeScreenshot() when
// VKEY_PRINT is pressed. See kAcceleratorData[] in accelerator_controller.cc.
generator.PressKey(ui::VKEY_PRINT, 0);
// VKEY_SNAPSHOT is pressed. See kAcceleratorData[] in
// accelerator_controller.cc.
generator.PressKey(ui::VKEY_SNAPSHOT, 0);
EXPECT_EQ(1, delegate->handle_take_screenshot_count());
generator.ReleaseKey(ui::VKEY_PRINT, 0);
generator.ReleaseKey(ui::VKEY_SNAPSHOT, 0);
EXPECT_EQ(1, delegate->handle_take_screenshot_count());
}
......@@ -55,9 +56,9 @@ TEST_F(AcceleratorFilterTest, TestFilterWithFocus) {
// AcceleratorFilter should ignore the key events since the root window is
// not focused.
ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
generator.PressKey(ui::VKEY_PRINT, 0);
generator.PressKey(ui::VKEY_SNAPSHOT, 0);
EXPECT_EQ(0, delegate->handle_take_screenshot_count());
generator.ReleaseKey(ui::VKEY_PRINT, 0);
generator.ReleaseKey(ui::VKEY_SNAPSHOT, 0);
EXPECT_EQ(0, delegate->handle_take_screenshot_count());
// Reset window before |test_delegate| gets deleted.
......@@ -70,16 +71,16 @@ TEST_F(AcceleratorFilterTest, TestCapsLockMask) {
EXPECT_EQ(0, delegate->handle_take_screenshot_count());
ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
generator.PressKey(ui::VKEY_PRINT, 0);
generator.PressKey(ui::VKEY_SNAPSHOT, 0);
EXPECT_EQ(1, delegate->handle_take_screenshot_count());
generator.ReleaseKey(ui::VKEY_PRINT, 0);
generator.ReleaseKey(ui::VKEY_SNAPSHOT, 0);
EXPECT_EQ(1, delegate->handle_take_screenshot_count());
// Check if AcceleratorFilter ignores the mask for Caps Lock. Note that there
// is no ui::EF_ mask for Num Lock.
generator.PressKey(ui::VKEY_PRINT, ui::EF_CAPS_LOCK_ON);
generator.PressKey(ui::VKEY_SNAPSHOT, ui::EF_CAPS_LOCK_ON);
EXPECT_EQ(2, delegate->handle_take_screenshot_count());
generator.ReleaseKey(ui::VKEY_PRINT, ui::EF_CAPS_LOCK_ON);
generator.ReleaseKey(ui::VKEY_SNAPSHOT, ui::EF_CAPS_LOCK_ON);
EXPECT_EQ(2, delegate->handle_take_screenshot_count());
}
......
......@@ -155,7 +155,7 @@ TEST_F(AcceleratorInteractiveUITest, MAYBE_ChromeOsAccelerators) {
EXPECT_EQ(0, screenshot_delegate->handle_take_screenshot_count());
SendKeyPressSync(ui::VKEY_MEDIA_LAUNCH_APP1, true, false, false);
EXPECT_EQ(1, screenshot_delegate->handle_take_screenshot_count());
SendKeyPressSync(ui::VKEY_PRINT, false, false, false);
SendKeyPressSync(ui::VKEY_SNAPSHOT, false, false, false);
EXPECT_EQ(2, screenshot_delegate->handle_take_screenshot_count());
SendKeyPressSync(ui::VKEY_MEDIA_LAUNCH_APP1, true, true, false);
EXPECT_EQ(2, screenshot_delegate->handle_take_screenshot_count());
......
......@@ -16,12 +16,11 @@ namespace ash {
namespace {
// The number of non-Search-based accelerators as of 2018-04-30.
constexpr int kNonSearchAcceleratorsNum = 88;
// The hash of non-Search-based accelerators as of 2018-04-30.
// See HashAcceleratorData().
// The number of non-Search-based accelerators.
constexpr int kNonSearchAcceleratorsNum = 89;
// The hash of non-Search-based accelerators. See HashAcceleratorData().
constexpr char kNonSearchAcceleratorsHash[] =
"06096f5c3177fd99f7c30cfbf4b7d635";
"1da4d0dbc648ec0f008837da1066599e";
struct Cmp {
bool operator()(const AcceleratorData& lhs, const AcceleratorData& rhs) {
......
......@@ -99,7 +99,12 @@ const AcceleratorData kAcceleratorData[] = {
{true, ui::VKEY_BROWSER_REFRESH,
ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ROTATE_WINDOW},
{true, ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, RESTORE_TAB},
// These correspond to the "Print Screen" key, which changed from VKEY_PRINT
// to VKEY_SNAPSHOT in the XKB code used by Chrome OS in M66. The X11 code
// used when running an OS_CHROMEOS build on a Linux workstation still uses
// VKEY_PRINT: https://crbug.com/872094
{true, ui::VKEY_PRINT, ui::EF_NONE, TAKE_SCREENSHOT},
{true, ui::VKEY_SNAPSHOT, ui::EF_NONE, TAKE_SCREENSHOT},
// On Chrome OS, Search key is mapped to LWIN. The Search key binding should
// act on release instead of press when using Search as a modifier key for
// extended keyboard shortcuts.
......
......@@ -20,9 +20,9 @@
namespace {
// The total number of Ash accelerators.
constexpr int kAshAcceleratorsTotalNum = 100;
constexpr int kAshAcceleratorsTotalNum = 101;
// The hash of Ash accelerators.
constexpr char kAshAcceleratorsHash[] = "4232f3c0c55cc5e487c820b1c2813dcc";
constexpr char kAshAcceleratorsHash[] = "48e2af8115132ccec79dc16ebe7da7fb";
#if defined(GOOGLE_CHROME_BUILD)
// Internal builds add an extra accelerator for the Feedback app.
// The total number of Chrome accelerators (available on Chrome OS).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment