| Index: content/browser/renderer_host/input/touch_event_queue_unittest.cc
|
| diff --git a/content/browser/renderer_host/input/touch_event_queue_unittest.cc b/content/browser/renderer_host/input/touch_event_queue_unittest.cc
|
| index 91bcbf1feaa8b1bfa6964289b5ff3052eb1c327a..7d2c086e412b91fe7a59495f9a32fd25cc8cfcdb 100644
|
| --- a/content/browser/renderer_host/input/touch_event_queue_unittest.cc
|
| +++ b/content/browser/renderer_host/input/touch_event_queue_unittest.cc
|
| @@ -1336,13 +1336,14 @@ TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithinSlopRegion) {
|
| ASSERT_EQ(2U, GetAndResetAckedEventCount());
|
| ASSERT_EQ(0U, queued_event_count());
|
|
|
| - // The slop region is boundary-inclusive.
|
| - MoveTouchPoint(0, kSlopLengthDips, 0);
|
| + // The slop region is boundary-exclusive.
|
| + // TODO(jdduke): Change to inclusive upon resolving crbug.com/336807.
|
| + MoveTouchPoint(0, kSlopLengthDips - 1., 0);
|
| EXPECT_EQ(0U, queued_event_count());
|
| EXPECT_EQ(0U, GetAndResetSentEventCount());
|
| EXPECT_EQ(1U, GetAndResetAckedEventCount());
|
|
|
| - MoveTouchPoint(0, kSlopLengthDips + 1., 0);
|
| + MoveTouchPoint(0, kSlopLengthDips, 0);
|
| EXPECT_EQ(1U, queued_event_count());
|
| EXPECT_EQ(1U, GetAndResetSentEventCount());
|
| EXPECT_EQ(0U, GetAndResetAckedEventCount());
|
| @@ -1356,7 +1357,7 @@ TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterTouchConsumed) {
|
| SetUpForTouchMoveSlopTesting(kSlopLengthDips);
|
|
|
| // Queue a TouchStart.
|
| - PressTouchPoint(0, 1);
|
| + PressTouchPoint(0, 0);
|
| SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
|
| ASSERT_EQ(1U, GetAndResetSentEventCount());
|
| ASSERT_EQ(1U, GetAndResetAckedEventCount());
|
| @@ -1369,6 +1370,48 @@ TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterTouchConsumed) {
|
| EXPECT_EQ(0U, GetAndResetAckedEventCount());
|
| }
|
|
|
| +// Tests that TouchMove's are not dropped due to integral truncation of
|
| +// WebTouchPoint coordinates after DPI scaling.
|
| +TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithDIPScaling) {
|
| + const float kSlopLengthPixels = 7.f;
|
| + const float kDPIScale = 3.f;
|
| + SetUpForTouchMoveSlopTesting(kSlopLengthPixels / kDPIScale);
|
| +
|
| + // Queue a TouchStart.
|
| + PressTouchPoint(0, 0);
|
| + SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
|
| + ASSERT_EQ(1U, GetAndResetSentEventCount());
|
| + ASSERT_EQ(1U, GetAndResetAckedEventCount());
|
| +
|
| + // TouchMove's along the slop boundary should not be suppresed.
|
| + // TODO(jdduke): These should be suppressed, crbug.com/336807.
|
| + MoveTouchPoint(0, 0, kSlopLengthPixels / kDPIScale);
|
| + EXPECT_EQ(1U, queued_event_count());
|
| + EXPECT_EQ(1U, GetAndResetSentEventCount());
|
| + EXPECT_EQ(0U, GetAndResetAckedEventCount());
|
| +
|
| + // Reset the touch sequence.
|
| + ReleaseTouchPoint(0);
|
| + SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
|
| + SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
|
| + GetAndResetSentEventCount();
|
| + GetAndResetAckedEventCount();
|
| +
|
| + // Queue a TouchStart.
|
| + PressTouchPoint(0, 0);
|
| + SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
|
| + ASSERT_EQ(1U, GetAndResetSentEventCount());
|
| + ASSERT_EQ(1U, GetAndResetAckedEventCount());
|
| +
|
| + // TouchMove's outside the region should not be suppressed.
|
| + const float kPixelCoordOutsideSlopRegion = kSlopLengthPixels + 1.f;
|
| + MoveTouchPoint(0, 0, kPixelCoordOutsideSlopRegion / kDPIScale);
|
| + EXPECT_EQ(1U, queued_event_count());
|
| + EXPECT_EQ(1U, GetAndResetSentEventCount());
|
| + EXPECT_EQ(0U, GetAndResetAckedEventCount());
|
| +}
|
| +
|
| +
|
| // Tests that TouchMove's are not dropped if a secondary pointer is present
|
| // during any movement.
|
| TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterMultiTouch) {
|
| @@ -1378,7 +1421,7 @@ TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterMultiTouch) {
|
| SetUpForTouchMoveSlopTesting(kSlopLengthDips);
|
|
|
| // Queue a TouchStart.
|
| - PressTouchPoint(0, 1);
|
| + PressTouchPoint(0, 0);
|
| SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
|
| ASSERT_EQ(1U, GetAndResetSentEventCount());
|
| ASSERT_EQ(1U, GetAndResetAckedEventCount());
|
|
|