Index: ui/views/widget/widget_unittest.cc |
diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc |
index e006e068aae4f74568a33c440149b9647211d1df..d0e80fd738a9b592a841df8f1b170fe1b35a01c3 100644 |
--- a/ui/views/widget/widget_unittest.cc |
+++ b/ui/views/widget/widget_unittest.cc |
@@ -3193,6 +3193,35 @@ TEST_F(WidgetTest, MouseEventTypesViaGenerator) { |
widget->CloseNow(); |
} |
+// Tests that a view does not receive entered, dragged, or moved events if |
+// a mouse cursor is moved into it while the left mouse button is pressed. |
+TEST_F(WidgetTest, DragIntoView) { |
+ EventCountView* container = new EventCountView; |
+ container->SetBounds(0, 0, 100, 80); |
+ |
+ EventCountView* consume_view = new EventCountView; |
+ consume_view->set_handle_mode(EventCountView::CONSUME_EVENTS); |
+ consume_view->SetBounds(10, 10, 50, 40); |
+ |
+ Widget* widget = CreateTopLevelFramelessPlatformWidget(); |
+ widget->SetBounds(gfx::Rect(0, 0, 100, 80)); |
+ widget->SetContentsView(container); |
+ container->AddChildView(consume_view); |
+ |
+ widget->Show(); |
+ |
+ ui::test::EventGenerator generator(GetContext(), widget->GetNativeWindow()); |
+ generator.set_current_location(gfx::Point(75, 15)); |
+ |
+ generator.PressLeftButton(); |
+ generator.MoveMouseTo(gfx::Point(20, 20)); |
+ EXPECT_EQ(0, consume_view->GetEventCount(ui::ET_MOUSE_ENTERED)); |
+ EXPECT_EQ(0, consume_view->GetEventCount(ui::ET_MOUSE_DRAGGED)); |
+ EXPECT_EQ(0, consume_view->GetEventCount(ui::ET_MOUSE_MOVED)); |
+ |
+ widget->CloseNow(); |
+} |
+ |
// Tests that the root view is correctly set up for Widget types that do not |
// require a non-client view, before any other views are added to the widget. |
// That is, before Widget::ReorderNativeViews() is called which, if called with |