Index: ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc |
diff --git a/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc b/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc |
index ce2957a1ecebbf8bc1f803b49573ffef54a0e247..a8ce25f1523673bd7c92c062a39592822733c2a0 100644 |
--- a/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc |
+++ b/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc |
@@ -479,3 +479,48 @@ TEST_F(TouchEventConverterEvdevTest, Unsync) { |
dev->ReadNow(); |
EXPECT_EQ(2u, dev->size()); |
} |
+ |
+// crbug.com/407386 |
+TEST_F(TouchEventConverterEvdevTest, |
+ DontChangeMultitouchPositionFromLegacyAxes) { |
+ ui::MockTouchEventConverterEvdev* dev = device(); |
+ |
+ struct input_event mock_kernel_queue[] = { |
+ {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, |
+ {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 100}, |
+ {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 999}, |
+ {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 888}, |
+ {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 55}, |
+ {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, |
+ {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 200}, |
+ {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 44}, |
+ {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 777}, |
+ {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 666}, |
+ {{0, 0}, EV_ABS, ABS_X, 999}, |
+ {{0, 0}, EV_ABS, ABS_Y, 888}, |
+ {{0, 0}, EV_ABS, ABS_PRESSURE, 55}, |
+ {{0, 0}, EV_SYN, SYN_REPORT, 0}, |
+ }; |
+ |
+ // Check that two events are generated. |
+ dev->ConfigureReadMock(mock_kernel_queue, arraysize(mock_kernel_queue), 0); |
+ dev->ReadNow(); |
+ |
+ const unsigned int kExpectedEventCount = 2; |
+ EXPECT_EQ(kExpectedEventCount, dev->size()); |
+ if (kExpectedEventCount != dev->size()) |
+ return; |
+ |
+ ui::TouchEvent* ev0 = dev->event(0); |
+ ui::TouchEvent* ev1 = dev->event(1); |
+ |
+ EXPECT_EQ(0, ev0->touch_id()); |
+ EXPECT_EQ(999, ev0->x()); |
+ EXPECT_EQ(888, ev0->y()); |
+ EXPECT_FLOAT_EQ(0.8333333f, ev0->force()); |
+ |
+ EXPECT_EQ(1, ev1->touch_id()); |
+ EXPECT_EQ(777, ev1->x()); |
+ EXPECT_EQ(666, ev1->y()); |
+ EXPECT_FLOAT_EQ(0.4666666f, ev1->force()); |
+} |