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 8af9452b2b39c33bb0cc50ed2b60fd99526b364d..acd84eb1d497ae434371aa34d80580c6660dd2a7 100644 |
--- a/ui/views/mus/native_widget_mus_unittest.cc |
+++ b/ui/views/mus/native_widget_mus_unittest.cc |
@@ -43,9 +43,16 @@ class HandleMousePressView : public View { |
~HandleMousePressView() override {} |
// View: |
- bool OnMousePressed(const ui::MouseEvent& event) override { return true; } |
+ bool OnMousePressed(const ui::MouseEvent& event) override { |
+ latest_event_location_ = event.location(); |
+ return true; |
+ } |
+ |
+ gfx::Point latest_event_location() { return latest_event_location_; } |
private: |
+ gfx::Point latest_event_location_; |
+ |
DISALLOW_COPY_AND_ASSIGN(HandleMousePressView); |
}; |
@@ -171,7 +178,7 @@ class NativeWidgetMusTest : public ViewsTestBase { |
// widget coordinate space such that they respond correctly. |
std::unique_ptr<ui::MouseEvent> CreateMouseEvent() { |
return base::WrapUnique(new ui::MouseEvent( |
- ui::ET_MOUSE_PRESSED, gfx::Point(50, 50), gfx::Point(50, 50), |
+ ui::ET_MOUSE_PRESSED, mouse_location(), mouse_location(), |
base::TimeDelta(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
} |
@@ -188,6 +195,10 @@ class NativeWidgetMusTest : public ViewsTestBase { |
protected: |
gfx::Rect initial_bounds() { return gfx::Rect(10, 20, 100, 200); } |
+ gfx::Point mouse_location() { |
+ return gfx::Point(50, 50); |
+ } |
+ |
private: |
int ack_callback_count_ = 0; |
@@ -421,6 +432,28 @@ TEST_F(NativeWidgetMusTest, WidgetReceivesEvent) { |
EXPECT_EQ(1, handler.num_mouse_events()); |
} |
+TEST_F(NativeWidgetMusTest, WidgetViewMouseEventAgreement) { |
+ std::unique_ptr<Widget> widget(CreateWidget(nullptr)); |
+ widget->Show(); |
+ |
+ HandleMousePressView* content = new HandleMousePressView; |
+ int content_x = 10; |
+ int content_y = 20; |
+ content->SetBounds(content_x, content_y, 90, 180); |
+ widget->GetContentsView()->AddChildView(content); |
+ |
+ std::unique_ptr<ui::MouseEvent> mouse = CreateMouseEvent(); |
+ NativeWidgetMus* native_widget = |
+ static_cast<NativeWidgetMus*>(widget->native_widget_private()); |
+ mus::WindowTreeClientImplPrivate test_api(native_widget->window()); |
+ test_api.CallOnWindowInputEvent(native_widget->window(), *mouse); |
+ |
+ // Location delivered to view should be relative to view's origin. |
+ EXPECT_EQ(gfx::Point(mouse_location().x() - content_x, |
+ mouse_location().y() - content_y), |
+ content->latest_event_location()); |
+} |
+ |
// Tests that an incoming UI event is acked with the handled status. |
TEST_F(NativeWidgetMusTest, EventAcked) { |
std::unique_ptr<Widget> widget(CreateWidget(nullptr)); |