| Index: ui/views/mus/native_widget_mus_unittest.cc
|
| diff --git a/ui/views/mus/native_widget_mus_unittest.cc b/ui/views/mus/native_widget_mus_unittest.cc
|
| index 17db5428720faa4ab30f988b80436297a0beb604..53f9338ed07a43a59f9bef8da44da03cd0c4e074 100644
|
| --- a/ui/views/mus/native_widget_mus_unittest.cc
|
| +++ b/ui/views/mus/native_widget_mus_unittest.cc
|
| @@ -418,6 +418,58 @@
|
| EXPECT_EQ(1, handler.num_mouse_events());
|
| }
|
|
|
| +// Tests that an incoming UI event is acked with the handled status.
|
| +TEST_F(NativeWidgetMusTest, EventAcked) {
|
| + std::unique_ptr<Widget> widget(CreateWidget(nullptr));
|
| + widget->Show();
|
| +
|
| + View* content = new HandleMousePressView;
|
| + content->SetBounds(10, 20, 90, 180);
|
| + widget->GetContentsView()->AddChildView(content);
|
| +
|
| + // Dispatch an input event to the window and view.
|
| + std::unique_ptr<ui::MouseEvent> event = CreateMouseEvent();
|
| + std::unique_ptr<base::Callback<void(EventResult)>> ack_callback(
|
| + new base::Callback<void(EventResult)>(base::Bind(
|
| + &NativeWidgetMusTest::AckCallback, base::Unretained(this))));
|
| + OnWindowInputEvent(
|
| + static_cast<NativeWidgetMus*>(widget->native_widget_private()),
|
| + *event,
|
| + &ack_callback);
|
| +
|
| + // The test took ownership of the callback and called it.
|
| + EXPECT_FALSE(ack_callback);
|
| + EXPECT_EQ(1, ack_callback_count());
|
| +}
|
| +
|
| +// Tests that a window that is deleted during event handling properly acks the
|
| +// event.
|
| +TEST_F(NativeWidgetMusTest, EventAckedWithWindowDestruction) {
|
| + std::unique_ptr<Widget> widget(CreateWidget(nullptr));
|
| + widget->Show();
|
| +
|
| + View* content = new DeleteWidgetView(&widget);
|
| + content->SetBounds(10, 20, 90, 180);
|
| + widget->GetContentsView()->AddChildView(content);
|
| +
|
| + // Dispatch an input event to the window and view.
|
| + std::unique_ptr<ui::MouseEvent> event = CreateMouseEvent();
|
| + std::unique_ptr<base::Callback<void(EventResult)>> ack_callback(
|
| + new base::Callback<void(EventResult)>(base::Bind(
|
| + &NativeWidgetMusTest::AckCallback, base::Unretained(this))));
|
| + OnWindowInputEvent(
|
| + static_cast<NativeWidgetMus*>(widget->native_widget_private()),
|
| + *event,
|
| + &ack_callback);
|
| +
|
| + // The widget was deleted.
|
| + EXPECT_FALSE(widget.get());
|
| +
|
| + // The test took ownership of the callback and called it.
|
| + EXPECT_FALSE(ack_callback);
|
| + EXPECT_EQ(1, ack_callback_count());
|
| +}
|
| +
|
| TEST_F(NativeWidgetMusTest, SetAndReleaseCapture) {
|
| std::unique_ptr<Widget> widget(CreateWidget(nullptr));
|
| widget->Show();
|
|
|