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 b9fe869f6463dea77f84237d12bbbfa33df56517..f74d1557b37d6038f3cdb00fe60feafc9daa1cd4 100644 |
--- a/content/browser/renderer_host/input/touch_event_queue_unittest.cc |
+++ b/content/browser/renderer_host/input/touch_event_queue_unittest.cc |
@@ -125,17 +125,22 @@ class TouchEventQueueTest : public testing::Test, |
sync_ack_result_.reset(new InputEventAckState(sync_ack_result)); |
} |
- void PressTouchPoint(int x, int y) { |
+ void PressTouchPoint(float x, float y) { |
touch_event_.PressPoint(x, y); |
SendTouchEvent(); |
} |
- void MoveTouchPoint(int index, int x, int y) { |
+ void MoveTouchPoint(int index, float x, float y) { |
touch_event_.MovePoint(index, x, y); |
SendTouchEvent(); |
} |
- void MoveTouchPoints(int index0, int x0, int y0, int index1, int x1, int y1) { |
+ void MoveTouchPoints(int index0, |
+ float x0, |
+ float y0, |
+ int index1, |
+ float x1, |
+ float y1) { |
touch_event_.MovePoint(index0, x0, y0); |
touch_event_.MovePoint(index1, x1, y1); |
SendTouchEvent(); |
@@ -1357,12 +1362,10 @@ TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithinSlopRegion) { |
// As soon as a TouchMove exceeds the (Euclidean) distance, no more |
// TouchMove's should be suppressed. |
- // TODO(jdduke): Remove ceil with adoption of floating point touch coords, |
- // crbug/336807. |
const double kFortyFiveDegreeSlopLengthXY = |
- std::ceil(kSlopLengthDips * std::sqrt(2.) / 2.); |
- MoveTouchPoint(0, kFortyFiveDegreeSlopLengthXY + .1, |
- kFortyFiveDegreeSlopLengthXY + .1); |
+ kSlopLengthDips * std::sqrt(2.) / 2.; |
+ MoveTouchPoint(0, kFortyFiveDegreeSlopLengthXY + .2, |
+ kFortyFiveDegreeSlopLengthXY + .2); |
EXPECT_EQ(1U, queued_event_count()); |
EXPECT_EQ(1U, GetAndResetSentEventCount()); |
EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
@@ -1386,17 +1389,16 @@ TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithinSlopRegion) { |
ASSERT_EQ(2U, GetAndResetAckedEventCount()); |
ASSERT_EQ(0U, queued_event_count()); |
- // The slop region is boundary-exclusive. |
- // TODO(jdduke): Change to inclusive upon resolving crbug.com/336807. |
+ // The slop region is boundary-inclusive. |
MoveTouchPoint(0, kSlopLengthDips - 1., 0); |
EXPECT_EQ(0U, queued_event_count()); |
EXPECT_EQ(0U, GetAndResetSentEventCount()); |
EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
MoveTouchPoint(0, kSlopLengthDips, 0); |
- EXPECT_EQ(1U, queued_event_count()); |
- EXPECT_EQ(1U, GetAndResetSentEventCount()); |
- EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
+ EXPECT_EQ(0U, queued_event_count()); |
+ EXPECT_EQ(0U, GetAndResetSentEventCount()); |
+ EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
} |
// Tests that TouchMove's are not dropped within the slop suppression region if |
@@ -1420,8 +1422,8 @@ 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. |
+// Tests that TouchMove's are not dropped due to incorrect handling of DPI |
+// scaling. |
TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithDIPScaling) { |
const float kSlopLengthPixels = 7.f; |
const float kDPIScale = 3.f; |
@@ -1433,12 +1435,11 @@ TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithDIPScaling) { |
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. |
+ // TouchMove's along the slop boundary should be suppresed. |
MoveTouchPoint(0, 0, kSlopLengthPixels / kDPIScale); |
- EXPECT_EQ(1U, queued_event_count()); |
- EXPECT_EQ(1U, GetAndResetSentEventCount()); |
- EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
+ EXPECT_EQ(0U, queued_event_count()); |
+ EXPECT_EQ(0U, GetAndResetSentEventCount()); |
+ EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
// Reset the touch sequence. |
ReleaseTouchPoint(0); |
@@ -1454,20 +1455,18 @@ TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithDIPScaling) { |
ASSERT_EQ(1U, GetAndResetAckedEventCount()); |
// TouchMove's outside the region should not be suppressed. |
- const float kPixelCoordOutsideSlopRegion = kSlopLengthPixels + 1.f; |
+ const float kPixelCoordOutsideSlopRegion = kSlopLengthPixels + 0.5f; |
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) { |
const double kSlopLengthDips = 10.; |
const double kHalfSlopLengthDips = kSlopLengthDips / 2; |
- const double kDoubleSlopLengthDips = 10.; |
SetUpForTouchMoveSlopTesting(kSlopLengthDips); |
// Queue a TouchStart. |
@@ -1483,13 +1482,13 @@ TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterMultiTouch) { |
EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
// Simulate a secondary pointer press. |
- PressTouchPoint(kDoubleSlopLengthDips, 0); |
+ PressTouchPoint(kSlopLengthDips, 0); |
SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
EXPECT_EQ(1U, GetAndResetSentEventCount()); |
EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
// TouchMove with a secondary pointer should not be suppressed. |
- MoveTouchPoint(1, kDoubleSlopLengthDips, 0); |
+ MoveTouchPoint(1, kSlopLengthDips, 0); |
EXPECT_EQ(1U, queued_event_count()); |
EXPECT_EQ(1U, GetAndResetSentEventCount()); |
SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |