| OLD | NEW |
| 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 804 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 815 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 815 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 816 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 816 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 817 | 817 |
| 818 ReleaseTouchPoint(0); | 818 ReleaseTouchPoint(0); |
| 819 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 819 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 820 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 820 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 821 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 821 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 822 } | 822 } |
| 823 | 823 |
| 824 // Tests that no TouchEvents are sent to renderer during scrolling. | 824 // Tests that no TouchEvents are sent to renderer during scrolling. |
| 825 TEST_F(TouchEventQueueTest, NoTouchOnScroll) { | 825 TEST_F(TouchEventQueueTest, TouchCancelOnScroll) { |
| 826 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_TOUCHCANCEL); |
| 826 // Queue a TouchStart. | 827 // Queue a TouchStart. |
| 827 PressTouchPoint(0, 1); | 828 PressTouchPoint(0, 1); |
| 828 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 829 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 829 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 830 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 830 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 831 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 831 | 832 |
| 832 MoveTouchPoint(0, 20, 5); | 833 MoveTouchPoint(0, 20, 5); |
| 833 EXPECT_EQ(1U, queued_event_count()); | 834 EXPECT_EQ(1U, queued_event_count()); |
| 834 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 835 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 835 | 836 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 890 | 891 |
| 891 ReleaseTouchPoint(0); | 892 ReleaseTouchPoint(0); |
| 892 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 893 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 893 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 894 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 894 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 895 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 895 } | 896 } |
| 896 | 897 |
| 897 // Tests that a scroll event will not insert a synthetic TouchCancel if there | 898 // Tests that a scroll event will not insert a synthetic TouchCancel if there |
| 898 // was no consumer for the current touch sequence. | 899 // was no consumer for the current touch sequence. |
| 899 TEST_F(TouchEventQueueTest, NoTouchCancelOnScrollIfNoConsumer) { | 900 TEST_F(TouchEventQueueTest, NoTouchCancelOnScrollIfNoConsumer) { |
| 901 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_TOUCHCANCEL); |
| 902 |
| 900 // Queue a TouchStart. | 903 // Queue a TouchStart. |
| 901 PressTouchPoint(0, 1); | 904 PressTouchPoint(0, 1); |
| 902 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 905 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 903 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); | 906 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); |
| 904 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 907 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 905 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); | 908 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); |
| 906 | 909 |
| 907 // Queue a TouchMove that turns into a GestureScrollBegin. | 910 // Queue a TouchMove that turns into a GestureScrollBegin. |
| 908 WebGestureEvent followup_scroll; | 911 WebGestureEvent followup_scroll; |
| 909 followup_scroll.type = WebInputEvent::GestureScrollBegin; | 912 followup_scroll.type = WebInputEvent::GestureScrollBegin; |
| (...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1522 WebGestureEvent followup_scroll; | 1525 WebGestureEvent followup_scroll; |
| 1523 followup_scroll.type = WebInputEvent::GestureScrollBegin; | 1526 followup_scroll.type = WebInputEvent::GestureScrollBegin; |
| 1524 SetFollowupEvent(followup_scroll); | 1527 SetFollowupEvent(followup_scroll); |
| 1525 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1528 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1526 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1529 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 1527 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1530 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1528 EXPECT_EQ(0U, queued_event_count()); | 1531 EXPECT_EQ(0U, queued_event_count()); |
| 1529 } | 1532 } |
| 1530 | 1533 |
| 1531 TEST_F(TouchEventQueueTest, TouchAbsorption) { | 1534 TEST_F(TouchEventQueueTest, TouchAbsorption) { |
| 1532 SetTouchScrollingMode( | 1535 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ABSORB_TOUCHMOVE); |
| 1533 TouchEventQueue::TOUCH_SCROLLING_MODE_ABSORB_TOUCHMOVE); | |
| 1534 // Queue a TouchStart. | |
| 1535 PressTouchPoint(0, 1); | |
| 1536 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
| 1537 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 1538 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
| 1539 | 1536 |
| 1540 for (int i = 0; i < 3; ++i) { | 1537 // Queue a TouchStart. |
| 1538 PressTouchPoint(0, 1); |
| 1539 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1540 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1541 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1542 |
| 1543 for (int i = 0; i < 3; ++i) { |
| 1541 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, | 1544 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, |
| 1542 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1545 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1543 | 1546 |
| 1544 MoveTouchPoint(0, 20, 5); | 1547 MoveTouchPoint(0, 20, 5); |
| 1545 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1548 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1546 EXPECT_EQ(0U, queued_event_count()); | 1549 EXPECT_EQ(0U, queued_event_count()); |
| 1547 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1550 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1548 | 1551 |
| 1549 // Consuming a scroll event prevents the next touch moves from being | 1552 // Consuming a scroll event prevents the next touch moves from being |
| 1550 // dispatched. | 1553 // dispatched. |
| 1551 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, | 1554 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, |
| 1552 INPUT_EVENT_ACK_STATE_CONSUMED); | 1555 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1553 MoveTouchPoint(0, 20, 5); | 1556 MoveTouchPoint(0, 20, 5); |
| 1554 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1557 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1555 EXPECT_EQ(0U, queued_event_count()); | 1558 EXPECT_EQ(0U, queued_event_count()); |
| 1556 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1559 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 1557 } | 1560 } |
| 1561 } |
| 1562 |
| 1563 TEST_F(TouchEventQueueTest, TouchAbsorptionNoTouchAfterScroll) { |
| 1564 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ABSORB_TOUCHMOVE); |
| 1565 |
| 1566 // Process a TouchStart |
| 1567 PressTouchPoint(0, 1); |
| 1568 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1569 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1570 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1571 |
| 1572 // Now send the first touch move and associated GestureScrollBegin, |
| 1573 // but don't ACK the gesture event yet. |
| 1574 MoveTouchPoint(0, 0, 5); |
| 1575 WebGestureEvent followup_scroll; |
| 1576 followup_scroll.type = WebInputEvent::GestureScrollBegin; |
| 1577 SetFollowupEvent(followup_scroll); |
| 1578 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1579 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1580 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1581 |
| 1582 // Now queue a second touchmove and verify it's not dispatched. |
| 1583 MoveTouchPoint(0, 0, 10); |
| 1584 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1585 EXPECT_EQ(0U, queued_event_count()); |
| 1586 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 1587 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1588 |
| 1589 // But a final touchend is sent (even before any gesture events |
| 1590 // have been ACKed). |
| 1591 ReleaseTouchPoint(0); |
| 1592 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1593 EXPECT_EQ(0U, queued_event_count()); |
| 1594 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1595 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1596 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type); |
| 1597 |
| 1598 // Now mark the scroll as not consumed (which would cause future |
| 1599 // touchmoves in the active sequence to be sent if there was one). |
| 1600 SendGestureEventAck(WebInputEvent::GestureScrollBegin, |
| 1601 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1602 |
| 1603 // Start a new touch sequence and verify that absorption has been |
| 1604 // reset so that moves after the start of scrolling are not sent. |
| 1605 PressTouchPoint(0, 1); |
| 1606 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1607 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1608 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1609 MoveTouchPoint(0, 0, 5); |
| 1610 SetFollowupEvent(followup_scroll); |
| 1611 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1612 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1613 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 1614 MoveTouchPoint(0, 0, 10); |
| 1615 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1616 EXPECT_EQ(0U, queued_event_count()); |
| 1617 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 1558 } | 1618 } |
| 1559 | 1619 |
| 1560 } // namespace content | 1620 } // namespace content |
| OLD | NEW |