Index: ash/root_window_controller_unittest.cc |
diff --git a/ash/root_window_controller_unittest.cc b/ash/root_window_controller_unittest.cc |
index 67a70ee2c0cdad7a4d93aa628bfab2c4220b5fdd..31b68f9e92225c969fe556985744087863e686ca 100644 |
--- a/ash/root_window_controller_unittest.cc |
+++ b/ash/root_window_controller_unittest.cc |
@@ -606,7 +606,8 @@ TEST_F(NoSessionRootWindowControllerTest, Event) { |
gfx::Point(size.width() - 1, size.height() - 1))); |
} |
-class VirtualKeyboardRootWindowControllerTest : public test::AshTestBase { |
+class VirtualKeyboardRootWindowControllerTest : public RootWindowControllerTest |
+{ |
public: |
VirtualKeyboardRootWindowControllerTest() {}; |
virtual ~VirtualKeyboardRootWindowControllerTest() {}; |
@@ -728,5 +729,46 @@ TEST_F(VirtualKeyboardRootWindowControllerTest, RestoreWorkspaceAfterLogin) { |
EXPECT_EQ(ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(), before); |
} |
+// Ensure that system modal dialogs do not block events targeted at the virtual |
+// keyboard. |
+TEST_F(VirtualKeyboardRootWindowControllerTest, ClickWithActiveModalDialog) { |
+ aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
+ aura::Window* keyboard_container = Shell::GetContainer(root_window, |
+ internal::kShellWindowId_VirtualKeyboardContainer); |
+ ASSERT_TRUE(keyboard_container); |
+ keyboard_container->Show(); |
+ |
+ aura::Window* keyboard_window = Shell::GetInstance()->keyboard_controller()-> |
+ proxy()->GetKeyboardWindow(); |
+ keyboard_container->AddChild(keyboard_window); |
+ keyboard_window->set_owned_by_parent(false); |
+ keyboard_window->SetBounds(gfx::Rect()); |
+ keyboard_window->Show(); |
+ |
+ ui::test::TestEventHandler* handler = new ui::test::TestEventHandler; |
+ root_window->SetEventFilter(handler); |
+ aura::test::EventGenerator root_window_event_generator(root_window); |
+ aura::test::EventGenerator keyboard_event_generator(root_window, |
+ keyboard_window); |
+ |
+ views::Widget* modal_widget = |
+ CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
+ |
+ // Verify that mouse events to the root window are block with a visble modal |
+ // dialog. |
+ root_window_event_generator.ClickLeftButton(); |
+ EXPECT_EQ(0, handler->num_mouse_events()); |
+ |
+ // Verify that event dispatch to the virtual keyboard is unblocked. |
+ keyboard_event_generator.ClickLeftButton(); |
+ EXPECT_EQ(1, handler->num_mouse_events() / 2); |
+ |
+ modal_widget->Close(); |
+ |
+ // Verify that mouse events are now unblocked to the root window. |
+ root_window_event_generator.ClickLeftButton(); |
+ EXPECT_EQ(2, handler->num_mouse_events() / 2); |
+} |
+ |
} // namespace test |
} // namespace ash |