OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/renderer_host/input/passthrough_touch_event_queue.h" | 5 #include "content/browser/renderer_host/input/passthrough_touch_event_queue.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
(...skipping 1272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1283 SetUpForTouchMoveSlopTesting(kSlopLengthDips); | 1283 SetUpForTouchMoveSlopTesting(kSlopLengthDips); |
1284 | 1284 |
1285 // Queue a TouchStart. | 1285 // Queue a TouchStart. |
1286 PressTouchPoint(0, 0); | 1286 PressTouchPoint(0, 0); |
1287 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1287 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1288 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 1288 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
1289 ASSERT_EQ(1U, GetAndResetAckedEventCount()); | 1289 ASSERT_EQ(1U, GetAndResetAckedEventCount()); |
1290 | 1290 |
1291 // TouchMove's movedBeyondSlopRegion within the slop region is set to false. | 1291 // TouchMove's movedBeyondSlopRegion within the slop region is set to false. |
1292 MoveTouchPoint(0, 0, kHalfSlopLengthDips); | 1292 MoveTouchPoint(0, 0, kHalfSlopLengthDips); |
1293 EXPECT_EQ(1U, queued_event_count()); | 1293 EXPECT_EQ(0U, queued_event_count()); |
1294 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1294 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1295 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1296 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1295 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1297 EXPECT_FALSE(acked_event().moved_beyond_slop_region); | 1296 EXPECT_FALSE(acked_event().moved_beyond_slop_region); |
1298 | 1297 |
1299 MoveTouchPoint(0, kHalfSlopLengthDips, 0); | 1298 MoveTouchPoint(0, kHalfSlopLengthDips, 0); |
1300 EXPECT_EQ(1U, queued_event_count()); | 1299 EXPECT_EQ(0U, queued_event_count()); |
1301 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1300 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1302 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1303 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1301 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1304 EXPECT_FALSE(acked_event().moved_beyond_slop_region); | 1302 EXPECT_FALSE(acked_event().moved_beyond_slop_region); |
1305 | 1303 |
1306 MoveTouchPoint(0, -kHalfSlopLengthDips, 0); | 1304 MoveTouchPoint(0, -kHalfSlopLengthDips, 0); |
1307 EXPECT_EQ(1U, queued_event_count()); | 1305 EXPECT_EQ(0U, queued_event_count()); |
1308 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1306 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1309 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1310 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1307 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1311 EXPECT_FALSE(acked_event().moved_beyond_slop_region); | 1308 EXPECT_FALSE(acked_event().moved_beyond_slop_region); |
1312 | 1309 |
1313 MoveTouchPoint(0, -kSlopLengthDips, 0); | 1310 MoveTouchPoint(0, -kSlopLengthDips, 0); |
1314 EXPECT_EQ(1U, queued_event_count()); | 1311 EXPECT_EQ(0U, queued_event_count()); |
1315 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1312 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1316 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1317 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1313 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1318 EXPECT_FALSE(acked_event().moved_beyond_slop_region); | 1314 EXPECT_FALSE(acked_event().moved_beyond_slop_region); |
1319 | 1315 |
1320 MoveTouchPoint(0, 0, kSlopLengthDips); | 1316 MoveTouchPoint(0, 0, kSlopLengthDips); |
1321 EXPECT_EQ(1U, queued_event_count()); | 1317 EXPECT_EQ(0U, queued_event_count()); |
1322 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1318 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1323 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1324 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1319 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1325 EXPECT_FALSE(acked_event().moved_beyond_slop_region); | 1320 EXPECT_FALSE(acked_event().moved_beyond_slop_region); |
1326 | 1321 |
1327 // When a TouchMove exceeds the (Euclidean) distance, the TouchMove's | 1322 // When a TouchMove exceeds the (Euclidean) distance, the TouchMove's |
1328 // movedBeyondSlopRegion is set to true. | 1323 // movedBeyondSlopRegion is set to true. |
1329 const float kFortyFiveDegreeSlopLengthXY = | 1324 const float kFortyFiveDegreeSlopLengthXY = |
1330 kSlopLengthDips * std::sqrt(2.f) / 2; | 1325 kSlopLengthDips * std::sqrt(2.f) / 2; |
1331 MoveTouchPoint(0, kFortyFiveDegreeSlopLengthXY + .2f, | 1326 MoveTouchPoint(0, kFortyFiveDegreeSlopLengthXY + .2f, |
1332 kFortyFiveDegreeSlopLengthXY + .2f); | 1327 kFortyFiveDegreeSlopLengthXY + .2f); |
1333 EXPECT_EQ(1U, queued_event_count()); | 1328 EXPECT_EQ(1U, queued_event_count()); |
1334 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1329 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1335 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1330 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1336 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1331 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1337 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1332 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1338 EXPECT_TRUE(acked_event().moved_beyond_slop_region); | |
1339 } | 1333 } |
1340 | 1334 |
1341 // Tests that even very small TouchMove's movedBeyondSlopRegion is set to true | 1335 // Tests that even very small TouchMove's movedBeyondSlopRegion is set to true |
1342 // when the slop region's dimension is 0. | 1336 // when the slop region's dimension is 0. |
1343 TEST_F(PassthroughTouchEventQueueTest, | 1337 TEST_F(PassthroughTouchEventQueueTest, |
1344 MovedBeyondSlopRegionAlwaysTrueIfDimensionZero) { | 1338 MovedBeyondSlopRegionAlwaysTrueIfDimensionZero) { |
1345 // Queue a TouchStart. | 1339 // Queue a TouchStart. |
1346 PressTouchPoint(0, 0); | 1340 PressTouchPoint(0, 0); |
1347 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1341 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1348 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 1342 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1765 EXPECT_EQ(WebInputEvent::kTouchMove, sent_event().GetType()); | 1759 EXPECT_EQ(WebInputEvent::kTouchMove, sent_event().GetType()); |
1766 EXPECT_FALSE(sent_event().touch_start_or_first_touch_move); | 1760 EXPECT_FALSE(sent_event().touch_start_or_first_touch_move); |
1767 | 1761 |
1768 ReleaseTouchPoint(0); | 1762 ReleaseTouchPoint(0); |
1769 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 1763 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
1770 EXPECT_EQ(WebInputEvent::kTouchEnd, sent_event().GetType()); | 1764 EXPECT_EQ(WebInputEvent::kTouchEnd, sent_event().GetType()); |
1771 EXPECT_FALSE(sent_event().touch_start_or_first_touch_move); | 1765 EXPECT_FALSE(sent_event().touch_start_or_first_touch_move); |
1772 } | 1766 } |
1773 | 1767 |
1774 } // namespace content | 1768 } // namespace content |
OLD | NEW |