Index: ash/accelerators/accelerator_filter_unittest.cc |
diff --git a/ash/accelerators/accelerator_filter_unittest.cc b/ash/accelerators/accelerator_filter_unittest.cc |
index 603bbefc4c0ef3f128037b1173aacb8137c72af8..3b1897cba48dee2cb27ded32c78cfcd12da6ed0f 100644 |
--- a/ash/accelerators/accelerator_filter_unittest.cc |
+++ b/ash/accelerators/accelerator_filter_unittest.cc |
@@ -18,6 +18,8 @@ |
#include "ash/wm/window_state.h" |
#include "ash/wm/window_util.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "ui/app_list/presenter/app_list.h" |
+#include "ui/app_list/presenter/test/test_app_list_presenter.h" |
#include "ui/aura/client/aura_constants.h" |
#include "ui/aura/test/aura_test_base.h" |
#include "ui/aura/test/test_windows.h" |
@@ -185,5 +187,27 @@ TEST_F(AcceleratorFilterTest, SearchKeyShortcutsAreAlwaysHandled) { |
EXPECT_FALSE(session_controller->IsScreenLocked()); |
} |
+TEST_F(AcceleratorFilterTest, ToggleAppListInterruptedByMouseEvent) { |
+ ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); |
+ app_list::test::TestAppListPresenter test_app_list_presenter; |
+ Shell::Get()->app_list()->SetAppListPresenter( |
+ test_app_list_presenter.CreateInterfacePtrAndBind()); |
+ EXPECT_EQ(0u, test_app_list_presenter.toggle_count()); |
+ |
+ // The AppList should toggle if no mouse event occurs between key press and |
+ // key release. |
+ generator.PressKey(ui::VKEY_LWIN, ui::EF_NONE); |
+ generator.ReleaseKey(ui::VKEY_LWIN, ui::EF_NONE); |
+ RunAllPendingInMessageLoop(); |
+ EXPECT_EQ(1u, test_app_list_presenter.toggle_count()); |
+ |
+ // When pressed key is interrupted by mouse, the AppList should not toggle. |
+ generator.PressKey(ui::VKEY_LWIN, ui::EF_NONE); |
+ generator.ClickLeftButton(); |
+ generator.ReleaseKey(ui::VKEY_LWIN, ui::EF_NONE); |
+ RunAllPendingInMessageLoop(); |
+ EXPECT_EQ(1u, test_app_list_presenter.toggle_count()); |
+} |
+ |
} // namespace test |
} // namespace ash |