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());