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 1232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1243 SetUpForTouchMoveSlopTesting(kSlopLengthDips); | 1243 SetUpForTouchMoveSlopTesting(kSlopLengthDips); |
1244 | 1244 |
1245 // Queue a TouchStart. | 1245 // Queue a TouchStart. |
1246 PressTouchPoint(0, 0); | 1246 PressTouchPoint(0, 0); |
1247 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1247 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1248 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 1248 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
1249 ASSERT_EQ(1U, GetAndResetAckedEventCount()); | 1249 ASSERT_EQ(1U, GetAndResetAckedEventCount()); |
1250 | 1250 |
1251 // TouchMove's movedBeyondSlopRegion within the slop region is set to false. | 1251 // TouchMove's movedBeyondSlopRegion within the slop region is set to false. |
1252 MoveTouchPoint(0, 0, kHalfSlopLengthDips); | 1252 MoveTouchPoint(0, 0, kHalfSlopLengthDips); |
1253 EXPECT_EQ(0U, queued_event_count()); | 1253 EXPECT_EQ(1U, queued_event_count()); |
1254 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1254 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1255 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1255 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1256 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1256 EXPECT_FALSE(acked_event().moved_beyond_slop_region); | 1257 EXPECT_FALSE(acked_event().moved_beyond_slop_region); |
1257 | 1258 |
1258 MoveTouchPoint(0, kHalfSlopLengthDips, 0); | 1259 MoveTouchPoint(0, kHalfSlopLengthDips, 0); |
1259 EXPECT_EQ(0U, queued_event_count()); | 1260 EXPECT_EQ(1U, queued_event_count()); |
1260 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1261 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1262 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1261 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1263 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1262 EXPECT_FALSE(acked_event().moved_beyond_slop_region); | 1264 EXPECT_FALSE(acked_event().moved_beyond_slop_region); |
1263 | 1265 |
1264 MoveTouchPoint(0, -kHalfSlopLengthDips, 0); | 1266 MoveTouchPoint(0, -kHalfSlopLengthDips, 0); |
1265 EXPECT_EQ(0U, queued_event_count()); | 1267 EXPECT_EQ(1U, queued_event_count()); |
1266 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1268 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1269 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1267 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1270 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1268 EXPECT_FALSE(acked_event().moved_beyond_slop_region); | 1271 EXPECT_FALSE(acked_event().moved_beyond_slop_region); |
1269 | 1272 |
1270 MoveTouchPoint(0, -kSlopLengthDips, 0); | 1273 MoveTouchPoint(0, -kSlopLengthDips, 0); |
1271 EXPECT_EQ(0U, queued_event_count()); | 1274 EXPECT_EQ(1U, queued_event_count()); |
1272 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1275 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1276 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1273 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1277 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1274 EXPECT_FALSE(acked_event().moved_beyond_slop_region); | 1278 EXPECT_FALSE(acked_event().moved_beyond_slop_region); |
1275 | 1279 |
1276 MoveTouchPoint(0, 0, kSlopLengthDips); | 1280 MoveTouchPoint(0, 0, kSlopLengthDips); |
1277 EXPECT_EQ(0U, queued_event_count()); | 1281 EXPECT_EQ(1U, queued_event_count()); |
1278 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1282 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1283 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1279 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1284 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1280 EXPECT_FALSE(acked_event().moved_beyond_slop_region); | 1285 EXPECT_FALSE(acked_event().moved_beyond_slop_region); |
1281 | 1286 |
1282 // When a TouchMove exceeds the (Euclidean) distance, the TouchMove's | 1287 // When a TouchMove exceeds the (Euclidean) distance, the TouchMove's |
1283 // movedBeyondSlopRegion is set to true. | 1288 // movedBeyondSlopRegion is set to true. |
1284 const float kFortyFiveDegreeSlopLengthXY = | 1289 const float kFortyFiveDegreeSlopLengthXY = |
1285 kSlopLengthDips * std::sqrt(2.f) / 2; | 1290 kSlopLengthDips * std::sqrt(2.f) / 2; |
1286 MoveTouchPoint(0, kFortyFiveDegreeSlopLengthXY + .2f, | 1291 MoveTouchPoint(0, kFortyFiveDegreeSlopLengthXY + .2f, |
1287 kFortyFiveDegreeSlopLengthXY + .2f); | 1292 kFortyFiveDegreeSlopLengthXY + .2f); |
1288 EXPECT_EQ(1U, queued_event_count()); | 1293 EXPECT_EQ(1U, queued_event_count()); |
1289 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1294 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1290 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1295 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1291 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1296 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1292 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1297 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1298 EXPECT_TRUE(acked_event().moved_beyond_slop_region); |
1293 } | 1299 } |
1294 | 1300 |
1295 // Tests that even very small TouchMove's movedBeyondSlopRegion is set to true | 1301 // Tests that even very small TouchMove's movedBeyondSlopRegion is set to true |
1296 // when the slop region's dimension is 0. | 1302 // when the slop region's dimension is 0. |
1297 TEST_F(PassthroughTouchEventQueueTest, | 1303 TEST_F(PassthroughTouchEventQueueTest, |
1298 MovedBeyondSlopRegionAlwaysTrueIfDimensionZero) { | 1304 MovedBeyondSlopRegionAlwaysTrueIfDimensionZero) { |
1299 // Queue a TouchStart. | 1305 // Queue a TouchStart. |
1300 PressTouchPoint(0, 0); | 1306 PressTouchPoint(0, 0); |
1301 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1307 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1302 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 1308 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1719 EXPECT_EQ(WebInputEvent::kTouchMove, sent_event().GetType()); | 1725 EXPECT_EQ(WebInputEvent::kTouchMove, sent_event().GetType()); |
1720 EXPECT_FALSE(sent_event().touch_start_or_first_touch_move); | 1726 EXPECT_FALSE(sent_event().touch_start_or_first_touch_move); |
1721 | 1727 |
1722 ReleaseTouchPoint(0); | 1728 ReleaseTouchPoint(0); |
1723 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 1729 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
1724 EXPECT_EQ(WebInputEvent::kTouchEnd, sent_event().GetType()); | 1730 EXPECT_EQ(WebInputEvent::kTouchEnd, sent_event().GetType()); |
1725 EXPECT_FALSE(sent_event().touch_start_or_first_touch_move); | 1731 EXPECT_FALSE(sent_event().touch_start_or_first_touch_move); |
1726 } | 1732 } |
1727 | 1733 |
1728 } // namespace content | 1734 } // namespace content |
OLD | NEW |