Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: content/browser/renderer_host/input/touch_event_queue_unittest.cc

Issue 458363002: Remove old Aura Gesture Detection Pipeline. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address sadrul's comment, and rebase. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "content/browser/renderer_host/input/timeout_monitor.h" 9 #include "content/browser/renderer_host/input/timeout_monitor.h"
10 #include "content/browser/renderer_host/input/touch_event_queue.h" 10 #include "content/browser/renderer_host/input/touch_event_queue.h"
(...skipping 17 matching lines...) Expand all
28 } // namespace 28 } // namespace
29 29
30 class TouchEventQueueTest : public testing::Test, 30 class TouchEventQueueTest : public testing::Test,
31 public TouchEventQueueClient { 31 public TouchEventQueueClient {
32 public: 32 public:
33 TouchEventQueueTest() 33 TouchEventQueueTest()
34 : sent_event_count_(0), 34 : sent_event_count_(0),
35 acked_event_count_(0), 35 acked_event_count_(0),
36 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN), 36 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN),
37 slop_length_dips_(0), 37 slop_length_dips_(0),
38 slop_includes_boundary_(true),
39 touch_scrolling_mode_(TouchEventQueue::TOUCH_SCROLLING_MODE_DEFAULT) {} 38 touch_scrolling_mode_(TouchEventQueue::TOUCH_SCROLLING_MODE_DEFAULT) {}
40 39
41 virtual ~TouchEventQueueTest() {} 40 virtual ~TouchEventQueueTest() {}
42 41
43 // testing::Test 42 // testing::Test
44 virtual void SetUp() OVERRIDE { ResetQueueWithConfig(CreateConfig()); } 43 virtual void SetUp() OVERRIDE { ResetQueueWithConfig(CreateConfig()); }
45 44
46 virtual void TearDown() OVERRIDE { 45 virtual void TearDown() OVERRIDE {
47 queue_.reset(); 46 queue_.reset();
48 } 47 }
(...skipping 25 matching lines...) Expand all
74 GestureEventWithLatencyInfo(*followup_gesture_event, 73 GestureEventWithLatencyInfo(*followup_gesture_event,
75 ui::LatencyInfo())); 74 ui::LatencyInfo()));
76 } 75 }
77 } 76 }
78 77
79 protected: 78 protected:
80 TouchEventQueue::Config CreateConfig() { 79 TouchEventQueue::Config CreateConfig() {
81 TouchEventQueue::Config config; 80 TouchEventQueue::Config config;
82 config.touch_scrolling_mode = touch_scrolling_mode_; 81 config.touch_scrolling_mode = touch_scrolling_mode_;
83 config.touchmove_slop_suppression_length_dips = slop_length_dips_; 82 config.touchmove_slop_suppression_length_dips = slop_length_dips_;
84 config.touchmove_slop_suppression_region_includes_boundary =
85 slop_includes_boundary_;
86 return config; 83 return config;
87 } 84 }
88 85
89 void SetTouchScrollingMode(TouchEventQueue::TouchScrollingMode mode) { 86 void SetTouchScrollingMode(TouchEventQueue::TouchScrollingMode mode) {
90 touch_scrolling_mode_ = mode; 87 touch_scrolling_mode_ = mode;
91 ResetQueueWithConfig(CreateConfig()); 88 ResetQueueWithConfig(CreateConfig());
92 } 89 }
93 90
94 void SetUpForTouchMoveSlopTesting(double slop_length_dips, 91 void SetUpForTouchMoveSlopTesting(double slop_length_dips) {
95 bool slop_includes_boundary) {
96 slop_length_dips_ = slop_length_dips; 92 slop_length_dips_ = slop_length_dips;
97 slop_includes_boundary_ = slop_includes_boundary;
98 ResetQueueWithConfig(CreateConfig()); 93 ResetQueueWithConfig(CreateConfig());
99 } 94 }
100 95
101 void SetUpForTimeoutTesting(base::TimeDelta timeout_delay) { 96 void SetUpForTimeoutTesting(base::TimeDelta timeout_delay) {
102 TouchEventQueue::Config config = CreateConfig(); 97 TouchEventQueue::Config config = CreateConfig();
103 config.touch_ack_timeout_delay = timeout_delay; 98 config.touch_ack_timeout_delay = timeout_delay;
104 config.touch_ack_timeout_supported = true; 99 config.touch_ack_timeout_supported = true;
105 ResetQueueWithConfig(config); 100 ResetQueueWithConfig(config);
106 } 101 }
107 102
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 size_t sent_event_count_; 245 size_t sent_event_count_;
251 size_t acked_event_count_; 246 size_t acked_event_count_;
252 WebTouchEvent last_sent_event_; 247 WebTouchEvent last_sent_event_;
253 WebTouchEvent last_acked_event_; 248 WebTouchEvent last_acked_event_;
254 InputEventAckState last_acked_event_state_; 249 InputEventAckState last_acked_event_state_;
255 SyntheticWebTouchEvent touch_event_; 250 SyntheticWebTouchEvent touch_event_;
256 scoped_ptr<WebTouchEvent> followup_touch_event_; 251 scoped_ptr<WebTouchEvent> followup_touch_event_;
257 scoped_ptr<WebGestureEvent> followup_gesture_event_; 252 scoped_ptr<WebGestureEvent> followup_gesture_event_;
258 scoped_ptr<InputEventAckState> sync_ack_result_; 253 scoped_ptr<InputEventAckState> sync_ack_result_;
259 double slop_length_dips_; 254 double slop_length_dips_;
260 bool slop_includes_boundary_;
261 TouchEventQueue::TouchScrollingMode touch_scrolling_mode_; 255 TouchEventQueue::TouchScrollingMode touch_scrolling_mode_;
262 base::MessageLoopForUI message_loop_; 256 base::MessageLoopForUI message_loop_;
263 }; 257 };
264 258
265 259
266 // Tests that touch-events are queued properly. 260 // Tests that touch-events are queued properly.
267 TEST_F(TouchEventQueueTest, Basic) { 261 TEST_F(TouchEventQueueTest, Basic) {
268 PressTouchPoint(1, 1); 262 PressTouchPoint(1, 1);
269 EXPECT_EQ(1U, queued_event_count()); 263 EXPECT_EQ(1U, queued_event_count());
270 EXPECT_EQ(1U, GetAndResetSentEventCount()); 264 EXPECT_EQ(1U, GetAndResetSentEventCount());
(...skipping 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after
1368 PressTouchPoint(0, 1); 1362 PressTouchPoint(0, 1);
1369 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1363 EXPECT_EQ(1U, GetAndResetSentEventCount());
1370 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1364 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1371 } 1365 }
1372 1366
1373 // Tests that TouchMove's are dropped if within the boundary-inclusive slop 1367 // Tests that TouchMove's are dropped if within the boundary-inclusive slop
1374 // suppression region for an unconsumed TouchStart. 1368 // suppression region for an unconsumed TouchStart.
1375 TEST_F(TouchEventQueueTest, TouchMoveSuppressionIncludingSlopBoundary) { 1369 TEST_F(TouchEventQueueTest, TouchMoveSuppressionIncludingSlopBoundary) {
1376 const double kSlopLengthDips = 10.; 1370 const double kSlopLengthDips = 10.;
1377 const double kHalfSlopLengthDips = kSlopLengthDips / 2; 1371 const double kHalfSlopLengthDips = kSlopLengthDips / 2;
1378 const bool slop_includes_boundary = true; 1372 SetUpForTouchMoveSlopTesting(kSlopLengthDips);
1379 SetUpForTouchMoveSlopTesting(kSlopLengthDips, slop_includes_boundary);
1380 1373
1381 // Queue a TouchStart. 1374 // Queue a TouchStart.
1382 PressTouchPoint(0, 0); 1375 PressTouchPoint(0, 0);
1383 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1376 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1384 ASSERT_EQ(1U, GetAndResetSentEventCount()); 1377 ASSERT_EQ(1U, GetAndResetSentEventCount());
1385 ASSERT_EQ(1U, GetAndResetAckedEventCount()); 1378 ASSERT_EQ(1U, GetAndResetAckedEventCount());
1386 1379
1387 // TouchMove's within the region should be suppressed. 1380 // TouchMove's within the region should be suppressed.
1388 MoveTouchPoint(0, 0, kHalfSlopLengthDips); 1381 MoveTouchPoint(0, 0, kHalfSlopLengthDips);
1389 EXPECT_EQ(0U, queued_event_count()); 1382 EXPECT_EQ(0U, queued_event_count());
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1449 EXPECT_EQ(0U, queued_event_count()); 1442 EXPECT_EQ(0U, queued_event_count());
1450 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1443 EXPECT_EQ(0U, GetAndResetSentEventCount());
1451 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1444 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1452 1445
1453 MoveTouchPoint(0, kSlopLengthDips, 0); 1446 MoveTouchPoint(0, kSlopLengthDips, 0);
1454 EXPECT_EQ(0U, queued_event_count()); 1447 EXPECT_EQ(0U, queued_event_count());
1455 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1448 EXPECT_EQ(0U, GetAndResetSentEventCount());
1456 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1449 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1457 } 1450 }
1458 1451
1459 // Tests that TouchMove's are dropped if within the boundary-exclusive slop
1460 // suppression region for an unconsumed TouchStart.
1461 TEST_F(TouchEventQueueTest, TouchMoveSuppressionExcludingSlopBoundary) {
1462 const double kSlopLengthDips = 10.;
1463 const double kHalfSlopLengthDips = kSlopLengthDips / 2;
1464 const bool slop_includes_boundary = false;
1465 SetUpForTouchMoveSlopTesting(kSlopLengthDips, slop_includes_boundary);
1466
1467 // Queue a TouchStart.
1468 PressTouchPoint(0, 0);
1469 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1470 ASSERT_EQ(1U, GetAndResetSentEventCount());
1471 ASSERT_EQ(1U, GetAndResetAckedEventCount());
1472
1473 // TouchMove's within the region should be suppressed.
1474 MoveTouchPoint(0, 0, kHalfSlopLengthDips);
1475 EXPECT_EQ(0U, queued_event_count());
1476 EXPECT_EQ(0U, GetAndResetSentEventCount());
1477 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1478 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, acked_event_state());
1479
1480 MoveTouchPoint(0, kSlopLengthDips - 0.2f, 0);
1481 EXPECT_EQ(0U, queued_event_count());
1482 EXPECT_EQ(0U, GetAndResetSentEventCount());
1483 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1484 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, acked_event_state());
1485
1486 // As soon as a TouchMove reaches the (Euclidean) slop distance, no more
1487 // TouchMove's should be suppressed.
1488 MoveTouchPoint(0, kSlopLengthDips, 0);
1489 EXPECT_EQ(1U, queued_event_count());
1490 EXPECT_EQ(1U, GetAndResetSentEventCount());
1491 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1492 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1493 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1494
1495 MoveTouchPoint(0, kHalfSlopLengthDips, 0);
1496 EXPECT_EQ(1U, queued_event_count());
1497 EXPECT_EQ(1U, GetAndResetSentEventCount());
1498 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1499 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1500 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1501 }
1502
1503 // Tests that TouchMove's are not dropped within the slop suppression region if 1452 // Tests that TouchMove's are not dropped within the slop suppression region if
1504 // the touchstart was consumed. 1453 // the touchstart was consumed.
1505 TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterTouchConsumed) { 1454 TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterTouchConsumed) {
1506 const double kSlopLengthDips = 10.; 1455 const double kSlopLengthDips = 10.;
1507 const double kHalfSlopLengthDips = kSlopLengthDips / 2; 1456 const double kHalfSlopLengthDips = kSlopLengthDips / 2;
1508 const bool slop_includes_boundary = true; 1457 SetUpForTouchMoveSlopTesting(kSlopLengthDips);
1509 SetUpForTouchMoveSlopTesting(kSlopLengthDips, slop_includes_boundary);
1510 1458
1511 // Queue a TouchStart. 1459 // Queue a TouchStart.
1512 PressTouchPoint(0, 0); 1460 PressTouchPoint(0, 0);
1513 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 1461 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
1514 ASSERT_EQ(1U, GetAndResetSentEventCount()); 1462 ASSERT_EQ(1U, GetAndResetSentEventCount());
1515 ASSERT_EQ(1U, GetAndResetAckedEventCount()); 1463 ASSERT_EQ(1U, GetAndResetAckedEventCount());
1516 1464
1517 // TouchMove's within the region should not be suppressed, as a touch was 1465 // TouchMove's within the region should not be suppressed, as a touch was
1518 // consumed. 1466 // consumed.
1519 MoveTouchPoint(0, 0, kHalfSlopLengthDips); 1467 MoveTouchPoint(0, 0, kHalfSlopLengthDips);
(...skipping 16 matching lines...) Expand all
1536 EXPECT_EQ(1U, queued_event_count()); 1484 EXPECT_EQ(1U, queued_event_count());
1537 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1485 EXPECT_EQ(1U, GetAndResetSentEventCount());
1538 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1486 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1539 } 1487 }
1540 1488
1541 // Tests that TouchMove's are not dropped due to incorrect handling of DPI 1489 // Tests that TouchMove's are not dropped due to incorrect handling of DPI
1542 // scaling. 1490 // scaling.
1543 TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithDIPScaling) { 1491 TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithDIPScaling) {
1544 const float kSlopLengthPixels = 7.f; 1492 const float kSlopLengthPixels = 7.f;
1545 const float kDPIScale = 3.f; 1493 const float kDPIScale = 3.f;
1546 const bool slop_includes_boundary = true; 1494 SetUpForTouchMoveSlopTesting(kSlopLengthPixels / kDPIScale);
1547 SetUpForTouchMoveSlopTesting(kSlopLengthPixels / kDPIScale,
1548 slop_includes_boundary);
1549 1495
1550 // Queue a TouchStart. 1496 // Queue a TouchStart.
1551 PressTouchPoint(0, 0); 1497 PressTouchPoint(0, 0);
1552 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1498 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1553 ASSERT_EQ(1U, GetAndResetSentEventCount()); 1499 ASSERT_EQ(1U, GetAndResetSentEventCount());
1554 ASSERT_EQ(1U, GetAndResetAckedEventCount()); 1500 ASSERT_EQ(1U, GetAndResetAckedEventCount());
1555 1501
1556 // TouchMove's along the slop boundary should be suppresed. 1502 // TouchMove's along the slop boundary should be suppresed.
1557 MoveTouchPoint(0, 0, kSlopLengthPixels / kDPIScale); 1503 MoveTouchPoint(0, 0, kSlopLengthPixels / kDPIScale);
1558 EXPECT_EQ(0U, queued_event_count()); 1504 EXPECT_EQ(0U, queued_event_count());
(...skipping 19 matching lines...) Expand all
1578 EXPECT_EQ(1U, queued_event_count()); 1524 EXPECT_EQ(1U, queued_event_count());
1579 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1525 EXPECT_EQ(1U, GetAndResetSentEventCount());
1580 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1526 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1581 } 1527 }
1582 1528
1583 // Tests that TouchMove's are not dropped if a secondary pointer is present 1529 // Tests that TouchMove's are not dropped if a secondary pointer is present
1584 // during any movement. 1530 // during any movement.
1585 TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterMultiTouch) { 1531 TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterMultiTouch) {
1586 const double kSlopLengthDips = 10.; 1532 const double kSlopLengthDips = 10.;
1587 const double kHalfSlopLengthDips = kSlopLengthDips / 2; 1533 const double kHalfSlopLengthDips = kSlopLengthDips / 2;
1588 const bool slop_includes_boundary = true; 1534 SetUpForTouchMoveSlopTesting(kSlopLengthDips);
1589 SetUpForTouchMoveSlopTesting(kSlopLengthDips, slop_includes_boundary);
1590 1535
1591 // Queue a TouchStart. 1536 // Queue a TouchStart.
1592 PressTouchPoint(0, 0); 1537 PressTouchPoint(0, 0);
1593 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1538 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1594 ASSERT_EQ(1U, GetAndResetSentEventCount()); 1539 ASSERT_EQ(1U, GetAndResetSentEventCount());
1595 ASSERT_EQ(1U, GetAndResetAckedEventCount()); 1540 ASSERT_EQ(1U, GetAndResetAckedEventCount());
1596 1541
1597 // TouchMove's within the region should be suppressed. 1542 // TouchMove's within the region should be suppressed.
1598 MoveTouchPoint(0, 0, kHalfSlopLengthDips); 1543 MoveTouchPoint(0, 0, kHalfSlopLengthDips);
1599 EXPECT_EQ(0U, queued_event_count()); 1544 EXPECT_EQ(0U, queued_event_count());
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
2162 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2107 EXPECT_EQ(1U, GetAndResetSentEventCount());
2163 2108
2164 // Touch move event is throttled. 2109 // Touch move event is throttled.
2165 MoveTouchPoint(0, 60, 5); 2110 MoveTouchPoint(0, 60, 5);
2166 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2111 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2167 EXPECT_EQ(0U, queued_event_count()); 2112 EXPECT_EQ(0U, queued_event_count());
2168 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2113 EXPECT_EQ(0U, GetAndResetSentEventCount());
2169 } 2114 }
2170 2115
2171 } // namespace content 2116 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/touch_event_queue.cc ('k') | content/browser/renderer_host/input/web_input_event_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698