| 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..f3e35249254f07f79190f1f761ca02631fb93f75 100644
|
| --- a/ash/wm/system_modal_container_layout_manager_unittest.cc
|
| +++ b/ash/wm/system_modal_container_layout_manager_unittest.cc
|
| @@ -686,49 +686,93 @@ 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_);
|
| + Reset();
|
| +
|
| + 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(0, mouse_event_count_);
|
| + EXPECT_EQ(0, scroll_event_count_);
|
| + EXPECT_EQ(0, touch_event_count_);
|
| + EXPECT_EQ(0, gesture_event_count_);
|
| + Reset();
|
| +
|
| + widget->Close();
|
| + EXPECT_FALSE(WmShell::Get()->IsSystemModalWindowOpen());
|
| +
|
| + 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_);
|
| + }
|
| +
|
| + 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());
|
| + }
|
| +
|
| + void Reset() {
|
| + mouse_event_count_ = 0;
|
| + scroll_event_count_ = 0;
|
| + touch_event_count_ = 0;
|
| + gesture_event_count_ = 0;
|
| + }
|
|
|
| - 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
|
|
|