From 971df8873e1e84eee68245770ed7c7481a99611e Mon Sep 17 00:00:00 2001 From: Mitsuru Oshima Date: Wed, 30 Jan 2019 18:55:16 +0000 Subject: [PATCH] Don't mark event handled unless it's handled. in OverviewSession::OnKeyEvent Bug: 925878 Test: covered by unittest Change-Id: I712acfcc7127e86e30d5d1be3ef8f86831c12368 Reviewed-on: https://chromium-review.googlesource.com/c/1440913 Reviewed-by: Sammie Quon Commit-Queue: Mitsuru Oshima Cr-Original-Commit-Position: refs/heads/master@{#626807}(cherry picked from commit 8d4ae6df8681d42ee42527ed9a5b9542dc31244b) Reviewed-on: https://chromium-review.googlesource.com/c/1446404 Reviewed-by: Mitsuru Oshima Cr-Commit-Position: refs/branch-heads/3683@{#72} Cr-Branched-From: e51029943e0a38dd794b73caaf6373d5496ae783-refs/heads/master@{#625896} --- ash/accelerators/exit_warning_handler.h | 1 + ash/wm/overview/overview_session.cc | 2 +- ash/wm/overview/overview_session_unittest.cc | 23 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/ash/accelerators/exit_warning_handler.h b/ash/accelerators/exit_warning_handler.h index c678f84d0c48..75884c8ade0a 100644 --- a/ash/accelerators/exit_warning_handler.h +++ b/ash/accelerators/exit_warning_handler.h @@ -56,6 +56,7 @@ class ASH_EXPORT ExitWarningHandler { private: friend class AcceleratorControllerTest; + friend class OverviewSessionTest; enum State { IDLE, WAIT_FOR_DOUBLE_PRESS, EXITING }; diff --git a/ash/wm/overview/overview_session.cc b/ash/wm/overview/overview_session.cc index bfdfeebebd39..0736b1a82c67 100644 --- a/ash/wm/overview/overview_session.cc +++ b/ash/wm/overview/overview_session.cc @@ -755,7 +755,7 @@ void OverviewSession::OnKeyEvent(ui::KeyEvent* event) { SelectWindow(grid_list_[selected_grid_index_]->SelectedWindow()); break; default: - break; + return; } event->SetHandled(); diff --git a/ash/wm/overview/overview_session_unittest.cc b/ash/wm/overview/overview_session_unittest.cc index 6599b1c6c9aa..dd5962838ec8 100644 --- a/ash/wm/overview/overview_session_unittest.cc +++ b/ash/wm/overview/overview_session_unittest.cc @@ -6,6 +6,8 @@ #include #include +#include "ash/accelerators/accelerator_controller.h" +#include "ash/accelerators/exit_warning_handler.h" #include "ash/accessibility/accessibility_controller.h" #include "ash/accessibility/test_accessibility_controller_client.h" #include "ash/app_list/app_list_controller_impl.h" @@ -314,6 +316,11 @@ class OverviewSessionTest : public AshTestBase { return !!item->transform_window_.mask_; } + static void StubForTest(ExitWarningHandler* ewh) { + ewh->stub_timer_for_test_ = true; + } + static bool is_ui_shown(ExitWarningHandler* ewh) { return !!ewh->widget_; } + private: std::unique_ptr shelf_view_test_api_; @@ -1197,6 +1204,22 @@ TEST_F(OverviewSessionTest, BasicTabKeyNavigation) { EXPECT_EQ(GetSelectedWindow(), overview_windows[0]->GetWindow()); } +TEST_F(OverviewSessionTest, AcceleratorInOverviewSession) { + ToggleOverview(); + auto* accelerator_controller = Shell::Get()->accelerator_controller(); + auto* ewh = accelerator_controller->GetExitWarningHandlerForTest(); + ASSERT_TRUE(ewh); + StubForTest(ewh); + EXPECT_FALSE(is_ui_shown(ewh)); + + ui::test::EventGenerator event_generator(Shell::GetPrimaryRootWindow()); + event_generator.PressKey(ui::VKEY_Q, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN); + event_generator.ReleaseKey(ui::VKEY_Q, + ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN); + + EXPECT_TRUE(is_ui_shown(ewh)); +} + // Tests that pressing Ctrl+W while a window is selected in overview closes it. TEST_F(OverviewSessionTest, CloseWindowWithKey) { std::unique_ptr widget(CreateTestWidget());