Chromium Code Reviews| Index: ash/wm/system_modal_container_layout_manager_unittest.cc |
| diff --git a/ash/wm/system_modal_container_layout_manager_unittest.cc b/ash/wm/system_modal_container_layout_manager_unittest.cc |
| index 28730623c0f9a7c4872560e86a26f625e656dde8..c2a4213440b9bec599cc99a8b4a3c7609b3491b4 100644 |
| --- a/ash/wm/system_modal_container_layout_manager_unittest.cc |
| +++ b/ash/wm/system_modal_container_layout_manager_unittest.cc |
| @@ -686,49 +686,84 @@ class InputTestDelegate : public aura::test::TestWindowDelegate { |
| InputTestDelegate() {} |
| ~InputTestDelegate() override {} |
| + void RunTest(test::AshTestBase* test_base) { |
| + std::unique_ptr<aura::Window> window( |
| + test_base->CreateTestWindowInShellWithDelegate( |
| + this, 0, gfx::Rect(0, 0, 100, 100))); |
| + window->Show(); |
| + |
| + GenerateEvents(window.get()); |
| + |
| + EXPECT_EQ(2, mouse_event_count_); |
| + EXPECT_EQ(3, scroll_event_count_); |
| + EXPECT_EQ(4, touch_event_count_); |
| + EXPECT_EQ(10, gesture_event_count_); |
| + |
| + views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds( |
| + new TestWindow(true), Shell::GetPrimaryRootWindow(), |
| + gfx::Rect(200, 200, 100, 100)); |
| + widget->Show(); |
| + EXPECT_TRUE(WmShell::Get()->IsSystemModalWindowOpen()); |
| + |
| + // Events should be blocked. |
| + GenerateEvents(window.get()); |
| + |
| + EXPECT_EQ(2, mouse_event_count_); |
|
James Cook
2016/06/20 17:33:20
nit: Can you add a Reset() method that puts all th
oshima
2016/06/20 18:23:54
Done.
|
| + EXPECT_EQ(3, scroll_event_count_); |
| + EXPECT_EQ(4, touch_event_count_); |
| + EXPECT_EQ(10, gesture_event_count_); |
| + |
| + widget->Close(); |
| + EXPECT_FALSE(WmShell::Get()->IsSystemModalWindowOpen()); |
| + |
| + GenerateEvents(window.get()); |
| + |
| + EXPECT_EQ(4, mouse_event_count_); |
| + EXPECT_EQ(6, scroll_event_count_); |
| + EXPECT_EQ(8, touch_event_count_); |
| + EXPECT_EQ(20, gesture_event_count_); |
| + } |
| + |
| + private: |
| // ui::EventHandler: |
| void OnMouseEvent(ui::MouseEvent* event) override { mouse_event_count_++; } |
| + void OnScrollEvent(ui::ScrollEvent* event) override { scroll_event_count_++; } |
| + void OnTouchEvent(ui::TouchEvent* event) override { touch_event_count_++; } |
| + void OnGestureEvent(ui::GestureEvent* event) override { |
| + gesture_event_count_++; |
| + } |
| - int mouse_event_count() const { return mouse_event_count_; } |
| + void GenerateEvents(aura::Window* window) { |
| + ui::test::EventGenerator event_generator(Shell::GetPrimaryRootWindow(), |
| + window); |
| + event_generator.ClickLeftButton(); |
| + event_generator.ScrollSequence(window->bounds().CenterPoint(), |
| + base::TimeDelta(), 0, 10, 1, 2); |
| + event_generator.PressTouch(); |
| + event_generator.ReleaseTouch(); |
| + event_generator.GestureTapAt(window->bounds().CenterPoint()); |
| + } |
| - private: |
| int mouse_event_count_ = 0; |
| + int scroll_event_count_ = 0; |
| + int touch_event_count_ = 0; |
| + int gesture_event_count_ = 0; |
| DISALLOW_COPY_AND_ASSIGN(InputTestDelegate); |
| }; |
| } // namespace |
| +TEST_F(SystemModalContainerLayoutManagerTest, BlockAllEvents) { |
| + InputTestDelegate delegate; |
| + delegate.RunTest(this); |
| +} |
| + |
| // Make sure that events are properly blocked in multi displays environment. |
| -TEST_F(SystemModalContainerLayoutManagerTest, BlockEvent) { |
| +TEST_F(SystemModalContainerLayoutManagerTest, BlockEventsInMultiDisplays) { |
| UpdateDisplay("500x500, 500x500"); |
| InputTestDelegate delegate; |
| - std::unique_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate( |
| - &delegate, 0, gfx::Rect(0, 0, 100, 100))); |
| - window->Show(); |
| - |
| - ui::test::EventGenerator event_generator(Shell::GetPrimaryRootWindow(), |
| - window.get()); |
| - event_generator.ClickLeftButton(); |
| - EXPECT_EQ(2, delegate.mouse_event_count()); |
| - |
| - views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds( |
| - new TestWindow(true), Shell::GetPrimaryRootWindow(), |
| - gfx::Rect(200, 200, 100, 100)); |
| - widget->Show(); |
| - EXPECT_TRUE(WmShell::Get()->IsSystemModalWindowOpen()); |
| - |
| - // Events should be blocked. |
| - event_generator.ClickLeftButton(); |
| - EXPECT_EQ(2, delegate.mouse_event_count()); |
| - widget->Close(); |
| - |
| - EXPECT_FALSE(WmShell::Get()->IsSystemModalWindowOpen()); |
| - event_generator.ClickLeftButton(); |
| - EXPECT_EQ(4, delegate.mouse_event_count()); |
| - |
| - // We need to delete window here because delegate is on the stack. |
| - window.reset(); |
| + delegate.RunTest(this); |
| } |
| } // namespace test |