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

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

Issue 1888163003: Articulate the cancel behavior in the WebTouchEvent. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix issue with reporting uma metrics Created 4 years, 8 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
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 "content/browser/renderer_host/input/touch_event_queue.h" 5 #include "content/browser/renderer_host/input/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 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 MoveTouchPoint(0, 5, 5); 350 MoveTouchPoint(0, 5, 5);
351 EXPECT_EQ(2U, queued_event_count()); 351 EXPECT_EQ(2U, queued_event_count());
352 EXPECT_EQ(0U, GetAndResetSentEventCount()); 352 EXPECT_EQ(0U, GetAndResetSentEventCount());
353 353
354 // Receive an ACK for the first touch-event. 354 // Receive an ACK for the first touch-event.
355 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 355 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
356 EXPECT_EQ(1U, queued_event_count()); 356 EXPECT_EQ(1U, queued_event_count());
357 EXPECT_EQ(1U, GetAndResetSentEventCount()); 357 EXPECT_EQ(1U, GetAndResetSentEventCount());
358 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 358 EXPECT_EQ(1U, GetAndResetAckedEventCount());
359 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); 359 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type);
360 EXPECT_TRUE(acked_event().cancelable); 360 EXPECT_EQ(WebInputEvent::Blocking, acked_event().dispatchType);
361 361
362 // Receive an ACK for the second touch-event. 362 // Receive an ACK for the second touch-event.
363 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 363 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
364 EXPECT_EQ(0U, queued_event_count()); 364 EXPECT_EQ(0U, queued_event_count());
365 EXPECT_EQ(0U, GetAndResetSentEventCount()); 365 EXPECT_EQ(0U, GetAndResetSentEventCount());
366 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 366 EXPECT_EQ(1U, GetAndResetAckedEventCount());
367 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 367 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type);
368 EXPECT_TRUE(acked_event().cancelable); 368 EXPECT_EQ(WebInputEvent::Blocking, acked_event().dispatchType);
369 } 369 }
370 370
371 // Tests that touch-events with multiple points are queued properly. 371 // Tests that touch-events with multiple points are queued properly.
372 TEST_F(TouchEventQueueTest, BasicMultiTouch) { 372 TEST_F(TouchEventQueueTest, BasicMultiTouch) {
373 const size_t kPointerCount = 10; 373 const size_t kPointerCount = 10;
374 for (float i = 0; i < kPointerCount; ++i) 374 for (float i = 0; i < kPointerCount; ++i)
375 PressTouchPoint(i, i); 375 PressTouchPoint(i, i);
376 376
377 EXPECT_EQ(1U, GetAndResetSentEventCount()); 377 EXPECT_EQ(1U, GetAndResetSentEventCount());
378 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 378 EXPECT_EQ(0U, GetAndResetAckedEventCount());
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
1066 // TouchEvent forwarding is disabled until the ack is received for the 1066 // TouchEvent forwarding is disabled until the ack is received for the
1067 // timed-out event and the future cancel event. 1067 // timed-out event and the future cancel event.
1068 EXPECT_FALSE(IsTimeoutRunning()); 1068 EXPECT_FALSE(IsTimeoutRunning());
1069 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1069 EXPECT_EQ(0U, GetAndResetSentEventCount());
1070 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1070 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1071 1071
1072 // Ack'ing the original event should trigger a cancel event. 1072 // Ack'ing the original event should trigger a cancel event.
1073 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1073 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1074 EXPECT_FALSE(IsTimeoutRunning()); 1074 EXPECT_FALSE(IsTimeoutRunning());
1075 EXPECT_EQ(WebInputEvent::TouchCancel, sent_event().type); 1075 EXPECT_EQ(WebInputEvent::TouchCancel, sent_event().type);
1076 EXPECT_FALSE(sent_event().cancelable); 1076 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
1077 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1077 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1078 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1078 EXPECT_EQ(1U, GetAndResetSentEventCount());
1079 1079
1080 // Touch events should not be forwarded until we receive the cancel acks. 1080 // Touch events should not be forwarded until we receive the cancel acks.
1081 MoveTouchPoint(0, 1, 1); 1081 MoveTouchPoint(0, 1, 1);
1082 ASSERT_EQ(0U, GetAndResetSentEventCount()); 1082 ASSERT_EQ(0U, GetAndResetSentEventCount());
1083 ASSERT_EQ(1U, GetAndResetAckedEventCount()); 1083 ASSERT_EQ(1U, GetAndResetAckedEventCount());
1084 1084
1085 ReleaseTouchPoint(0); 1085 ReleaseTouchPoint(0);
1086 ASSERT_EQ(0U, GetAndResetSentEventCount()); 1086 ASSERT_EQ(0U, GetAndResetSentEventCount());
1087 ASSERT_EQ(1U, GetAndResetAckedEventCount()); 1087 ASSERT_EQ(1U, GetAndResetAckedEventCount());
1088 1088
1089 // The synthetic TouchCancel ack should not reach the client, but should 1089 // The synthetic TouchCancel ack should not reach the client, but should
1090 // resume touch forwarding. 1090 // resume touch forwarding.
1091 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1091 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1092 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1092 EXPECT_EQ(0U, GetAndResetSentEventCount());
1093 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1093 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1094 1094
1095 // Subsequent events should be handled normally. 1095 // Subsequent events should be handled normally.
1096 PressTouchPoint(0, 1); 1096 PressTouchPoint(0, 1);
1097 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); 1097 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type);
1098 EXPECT_TRUE(sent_event().cancelable); 1098 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
1099 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1099 EXPECT_EQ(1U, GetAndResetSentEventCount());
1100 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1100 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1101 } 1101 }
1102 1102
1103 // Tests that the timeout is never started if the renderer consumes 1103 // Tests that the timeout is never started if the renderer consumes
1104 // a TouchEvent from the current touch sequence. 1104 // a TouchEvent from the current touch sequence.
1105 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfRendererIsConsumingGesture) { 1105 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfRendererIsConsumingGesture) {
1106 SetUpForTimeoutTesting(); 1106 SetUpForTimeoutTesting();
1107 1107
1108 // Queue a TouchStart. 1108 // Queue a TouchStart.
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after
1604 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1604 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1605 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1605 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1606 1606
1607 for (int i = 0; i < 3; ++i) { 1607 for (int i = 0; i < 3; ++i) {
1608 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, 1608 SendGestureEventAck(WebInputEvent::GestureScrollUpdate,
1609 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1609 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1610 1610
1611 MoveTouchPoint(0, 10, 5+i); 1611 MoveTouchPoint(0, 10, 5+i);
1612 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1612 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1613 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1613 EXPECT_FALSE(HasPendingAsyncTouchMove());
1614 EXPECT_TRUE(sent_event().cancelable); 1614 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
1615 EXPECT_EQ(0U, queued_event_count()); 1615 EXPECT_EQ(0U, queued_event_count());
1616 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1616 EXPECT_EQ(1U, GetAndResetSentEventCount());
1617 1617
1618 // Consuming a scroll event will throttle subsequent touchmoves. 1618 // Consuming a scroll event will throttle subsequent touchmoves.
1619 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, 1619 SendGestureEventAck(WebInputEvent::GestureScrollUpdate,
1620 INPUT_EVENT_ACK_STATE_CONSUMED); 1620 INPUT_EVENT_ACK_STATE_CONSUMED);
1621 MoveTouchPoint(0, 10, 7+i); 1621 MoveTouchPoint(0, 10, 7+i);
1622 EXPECT_TRUE(HasPendingAsyncTouchMove()); 1622 EXPECT_TRUE(HasPendingAsyncTouchMove());
1623 EXPECT_EQ(0U, queued_event_count()); 1623 EXPECT_EQ(0U, queued_event_count());
1624 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1624 EXPECT_EQ(0U, GetAndResetSentEventCount());
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1664 1664
1665 // Queuing the final touchend should flush the pending async touchmove. In 1665 // Queuing the final touchend should flush the pending async touchmove. In
1666 // this case, we will first dispatch an async touchmove and then a touchend. 1666 // this case, we will first dispatch an async touchmove and then a touchend.
1667 // For the async touchmove, we will not send ack again. 1667 // For the async touchmove, we will not send ack again.
1668 ReleaseTouchPoint(0); 1668 ReleaseTouchPoint(0);
1669 followup_scroll.type = WebInputEvent::GestureScrollEnd; 1669 followup_scroll.type = WebInputEvent::GestureScrollEnd;
1670 SetFollowupEvent(followup_scroll); 1670 SetFollowupEvent(followup_scroll);
1671 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1671 EXPECT_FALSE(HasPendingAsyncTouchMove());
1672 EXPECT_EQ(2U, all_sent_events().size()); 1672 EXPECT_EQ(2U, all_sent_events().size());
1673 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type); 1673 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type);
1674 EXPECT_FALSE(all_sent_events()[0].cancelable); 1674 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType);
1675 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[1].type); 1675 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[1].type);
1676 EXPECT_FALSE(all_sent_events()[1].cancelable); 1676 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType);
1677 EXPECT_EQ(2U, GetAndResetSentEventCount()); 1677 EXPECT_EQ(2U, GetAndResetSentEventCount());
1678 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1678 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1679 EXPECT_EQ(1U, queued_event_count()); 1679 EXPECT_EQ(1U, queued_event_count());
1680 1680
1681 // Ack the touchend. 1681 // Ack the touchend.
1682 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1682 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1683 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1683 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1684 EXPECT_EQ(0U, queued_event_count()); 1684 EXPECT_EQ(0U, queued_event_count());
1685 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1685 EXPECT_EQ(0U, GetAndResetSentEventCount());
1686 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1686 EXPECT_EQ(1U, GetAndResetAckedEventCount());
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1726 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1726 EXPECT_EQ(0U, GetAndResetSentEventCount());
1727 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1727 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1728 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count()); 1728 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count());
1729 1729
1730 // The pending touchmove should be flushed with the the new touchmove if 1730 // The pending touchmove should be flushed with the the new touchmove if
1731 // sufficient time has passed and ack to the client. 1731 // sufficient time has passed and ack to the client.
1732 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 1732 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
1733 MoveTouchPoint(0, 0, 15); 1733 MoveTouchPoint(0, 0, 15);
1734 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1734 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1735 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1735 EXPECT_FALSE(HasPendingAsyncTouchMove());
1736 EXPECT_FALSE(sent_event().cancelable); 1736 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
1737 EXPECT_EQ(0U, queued_event_count()); 1737 EXPECT_EQ(0U, queued_event_count());
1738 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1738 EXPECT_EQ(1U, GetAndResetSentEventCount());
1739 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1739 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1740 1740
1741 // Non-touchmove events should always flush any pending touchmove events. In 1741 // Non-touchmove events should always flush any pending touchmove events. In
1742 // this case, we will first dispatch an async touchmove and then a 1742 // this case, we will first dispatch an async touchmove and then a
1743 // touchstart. For the async touchmove, we will not send ack again. 1743 // touchstart. For the async touchmove, we will not send ack again.
1744 MoveTouchPoint(0, 0, 25); 1744 MoveTouchPoint(0, 0, 25);
1745 EXPECT_TRUE(HasPendingAsyncTouchMove()); 1745 EXPECT_TRUE(HasPendingAsyncTouchMove());
1746 EXPECT_EQ(0U, queued_event_count()); 1746 EXPECT_EQ(0U, queued_event_count());
1747 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1747 EXPECT_EQ(0U, GetAndResetSentEventCount());
1748 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1748 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1749 PressTouchPoint(30, 30); 1749 PressTouchPoint(30, 30);
1750 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1750 EXPECT_FALSE(HasPendingAsyncTouchMove());
1751 EXPECT_EQ(2U, all_sent_events().size()); 1751 EXPECT_EQ(2U, all_sent_events().size());
1752 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type); 1752 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type);
1753 EXPECT_FALSE(all_sent_events()[0].cancelable); 1753 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType);
1754 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[1].type); 1754 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[1].type);
1755 EXPECT_TRUE(all_sent_events()[1].cancelable); 1755 EXPECT_EQ(WebInputEvent::Blocking, all_sent_events()[1].dispatchType);
1756 EXPECT_EQ(2U, GetAndResetSentEventCount()); 1756 EXPECT_EQ(2U, GetAndResetSentEventCount());
1757 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1757 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1758 EXPECT_EQ(1U, queued_event_count()); 1758 EXPECT_EQ(1U, queued_event_count());
1759 1759
1760 // Ack the touchstart. 1760 // Ack the touchstart.
1761 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1761 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1762 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1762 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1763 EXPECT_EQ(0U, queued_event_count()); 1763 EXPECT_EQ(0U, queued_event_count());
1764 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1764 EXPECT_EQ(0U, GetAndResetSentEventCount());
1765 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1765 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1766 1766
1767 // Send a secondary touchmove. 1767 // Send a secondary touchmove.
1768 MoveTouchPoint(1, 0, 25); 1768 MoveTouchPoint(1, 0, 25);
1769 EXPECT_TRUE(HasPendingAsyncTouchMove()); 1769 EXPECT_TRUE(HasPendingAsyncTouchMove());
1770 EXPECT_EQ(0U, queued_event_count()); 1770 EXPECT_EQ(0U, queued_event_count());
1771 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1771 EXPECT_EQ(0U, GetAndResetSentEventCount());
1772 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1772 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1773 1773
1774 // An unconsumed scroll should resume synchronous touch handling. 1774 // An unconsumed scroll should resume synchronous touch handling.
1775 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, 1775 SendGestureEventAck(WebInputEvent::GestureScrollUpdate,
1776 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1776 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1777 1777
1778 // The pending touchmove should be coalesced with the next (now synchronous) 1778 // The pending touchmove should be coalesced with the next (now synchronous)
1779 // touchmove. 1779 // touchmove.
1780 MoveTouchPoint(0, 0, 26); 1780 MoveTouchPoint(0, 0, 26);
1781 EXPECT_TRUE(sent_event().cancelable); 1781 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
1782 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1782 EXPECT_FALSE(HasPendingAsyncTouchMove());
1783 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); 1783 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type);
1784 EXPECT_EQ(WebTouchPoint::StateMoved, sent_event().touches[0].state); 1784 EXPECT_EQ(WebTouchPoint::StateMoved, sent_event().touches[0].state);
1785 EXPECT_EQ(WebTouchPoint::StateMoved, sent_event().touches[1].state); 1785 EXPECT_EQ(WebTouchPoint::StateMoved, sent_event().touches[1].state);
1786 EXPECT_EQ(1U, queued_event_count()); 1786 EXPECT_EQ(1U, queued_event_count());
1787 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1787 EXPECT_EQ(1U, GetAndResetSentEventCount());
1788 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1788 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1789 1789
1790 // Subsequent touches will queue until the preceding, synchronous touches are 1790 // Subsequent touches will queue until the preceding, synchronous touches are
1791 // ack'ed. 1791 // ack'ed.
1792 ReleaseTouchPoint(1); 1792 ReleaseTouchPoint(1);
1793 EXPECT_EQ(2U, queued_event_count()); 1793 EXPECT_EQ(2U, queued_event_count());
1794 ReleaseTouchPoint(0); 1794 ReleaseTouchPoint(0);
1795 EXPECT_EQ(3U, queued_event_count()); 1795 EXPECT_EQ(3U, queued_event_count());
1796 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1796 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1797 EXPECT_TRUE(sent_event().cancelable); 1797 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
1798 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type); 1798 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type);
1799 EXPECT_EQ(2U, queued_event_count()); 1799 EXPECT_EQ(2U, queued_event_count());
1800 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1800 EXPECT_EQ(1U, GetAndResetSentEventCount());
1801 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1801 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1802 1802
1803 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1803 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1804 EXPECT_TRUE(sent_event().cancelable); 1804 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
1805 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type); 1805 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type);
1806 EXPECT_EQ(1U, queued_event_count()); 1806 EXPECT_EQ(1U, queued_event_count());
1807 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1807 EXPECT_EQ(1U, GetAndResetSentEventCount());
1808 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1808 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1809 1809
1810 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1810 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1811 EXPECT_EQ(0U, queued_event_count()); 1811 EXPECT_EQ(0U, queued_event_count());
1812 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1812 EXPECT_EQ(0U, GetAndResetSentEventCount());
1813 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1813 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1814 } 1814 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1850 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1850 EXPECT_EQ(0U, GetAndResetSentEventCount());
1851 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1851 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1852 1852
1853 // Queuing the final touchend should flush the pending, async touchmove. In 1853 // Queuing the final touchend should flush the pending, async touchmove. In
1854 // this case, we will first dispatch an async touchmove and then a touchend. 1854 // this case, we will first dispatch an async touchmove and then a touchend.
1855 // For the async touchmove, we will not send ack again. 1855 // For the async touchmove, we will not send ack again.
1856 ReleaseTouchPoint(0); 1856 ReleaseTouchPoint(0);
1857 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1857 EXPECT_FALSE(HasPendingAsyncTouchMove());
1858 EXPECT_EQ(2U, all_sent_events().size()); 1858 EXPECT_EQ(2U, all_sent_events().size());
1859 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type); 1859 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type);
1860 EXPECT_FALSE(all_sent_events()[0].cancelable); 1860 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType);
1861 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.x); 1861 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.x);
1862 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.y); 1862 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.y);
1863 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[1].type); 1863 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[1].type);
1864 EXPECT_FALSE(all_sent_events()[1].cancelable); 1864 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType);
1865 EXPECT_EQ(2U, GetAndResetSentEventCount()); 1865 EXPECT_EQ(2U, GetAndResetSentEventCount());
1866 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1866 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1867 } 1867 }
1868 1868
1869 // Ensure that async touch dispatch and touch ack timeout interactions work 1869 // Ensure that async touch dispatch and touch ack timeout interactions work
1870 // appropriately. 1870 // appropriately.
1871 TEST_F(TouchEventQueueTest, AsyncTouchWithAckTimeout) { 1871 TEST_F(TouchEventQueueTest, AsyncTouchWithAckTimeout) {
1872 SetUpForTimeoutTesting(); 1872 SetUpForTimeoutTesting();
1873 1873
1874 // The touchstart should start the timeout. 1874 // The touchstart should start the timeout.
(...skipping 21 matching lines...) Expand all
1896 // An async touch should fire after the throttling interval has expired, but 1896 // An async touch should fire after the throttling interval has expired, but
1897 // it should not start the touch ack timeout. 1897 // it should not start the touch ack timeout.
1898 MoveTouchPoint(0, 5, 5); 1898 MoveTouchPoint(0, 5, 5);
1899 EXPECT_TRUE(HasPendingAsyncTouchMove()); 1899 EXPECT_TRUE(HasPendingAsyncTouchMove());
1900 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1900 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1901 1901
1902 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 1902 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
1903 MoveTouchPoint(0, 5, 5); 1903 MoveTouchPoint(0, 5, 5);
1904 EXPECT_FALSE(IsTimeoutRunning()); 1904 EXPECT_FALSE(IsTimeoutRunning());
1905 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1905 EXPECT_FALSE(HasPendingAsyncTouchMove());
1906 EXPECT_FALSE(sent_event().cancelable); 1906 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
1907 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1907 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1908 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1908 EXPECT_EQ(1U, GetAndResetSentEventCount());
1909 1909
1910 // An unconsumed scroll event will resume synchronous touchmoves, which are 1910 // An unconsumed scroll event will resume synchronous touchmoves, which are
1911 // subject to the ack timeout. 1911 // subject to the ack timeout.
1912 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, 1912 SendGestureEventAck(WebInputEvent::GestureScrollUpdate,
1913 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1913 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1914 MoveTouchPoint(0, 20, 5); 1914 MoveTouchPoint(0, 20, 5);
1915 EXPECT_TRUE(IsTimeoutRunning()); 1915 EXPECT_TRUE(IsTimeoutRunning());
1916 EXPECT_TRUE(sent_event().cancelable); 1916 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
1917 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1917 EXPECT_EQ(1U, GetAndResetSentEventCount());
1918 1918
1919 // The timeout should fire, disabling touch forwarding until both acks are 1919 // The timeout should fire, disabling touch forwarding until both acks are
1920 // received and acking the timed out event. 1920 // received and acking the timed out event.
1921 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); 1921 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2);
1922 EXPECT_FALSE(IsTimeoutRunning()); 1922 EXPECT_FALSE(IsTimeoutRunning());
1923 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1923 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1924 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1924 EXPECT_EQ(0U, GetAndResetSentEventCount());
1925 1925
1926 // Ack'ing the original event should trigger a cancel event. 1926 // Ack'ing the original event should trigger a cancel event.
1927 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1927 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1928 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1928 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1929 EXPECT_FALSE(sent_event().cancelable); 1929 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
1930 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1930 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1931 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1931 EXPECT_EQ(1U, GetAndResetSentEventCount());
1932 1932
1933 // Subsequent touchmove's should not be forwarded, even as the scroll gesture 1933 // Subsequent touchmove's should not be forwarded, even as the scroll gesture
1934 // goes from unconsumed to consumed. 1934 // goes from unconsumed to consumed.
1935 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, 1935 SendGestureEventAck(WebInputEvent::GestureScrollUpdate,
1936 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1936 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1937 MoveTouchPoint(0, 20, 5); 1937 MoveTouchPoint(0, 20, 5);
1938 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1938 EXPECT_FALSE(HasPendingAsyncTouchMove());
1939 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1939 EXPECT_EQ(1U, GetAndResetAckedEventCount());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1972 // the queued touchcancel should be flushed. 1972 // the queued touchcancel should be flushed.
1973 WebTouchEvent followup_cancel; 1973 WebTouchEvent followup_cancel;
1974 followup_cancel.type = WebInputEvent::TouchCancel; 1974 followup_cancel.type = WebInputEvent::TouchCancel;
1975 followup_cancel.touchesLength = 1; 1975 followup_cancel.touchesLength = 1;
1976 followup_cancel.touches[0].state = WebTouchPoint::StateCancelled; 1976 followup_cancel.touches[0].state = WebTouchPoint::StateCancelled;
1977 SetFollowupEvent(followup_cancel); 1977 SetFollowupEvent(followup_cancel);
1978 MoveTouchPoint(0, 5, 5); 1978 MoveTouchPoint(0, 5, 5);
1979 EXPECT_EQ(1U, queued_event_count()); 1979 EXPECT_EQ(1U, queued_event_count());
1980 EXPECT_EQ(2U, all_sent_events().size()); 1980 EXPECT_EQ(2U, all_sent_events().size());
1981 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type); 1981 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type);
1982 EXPECT_FALSE(all_sent_events()[0].cancelable); 1982 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType);
1983 EXPECT_EQ(WebInputEvent::TouchCancel, all_sent_events()[1].type); 1983 EXPECT_EQ(WebInputEvent::TouchCancel, all_sent_events()[1].type);
1984 EXPECT_FALSE(all_sent_events()[1].cancelable); 1984 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType);
1985 EXPECT_EQ(2U, GetAndResetSentEventCount()); 1985 EXPECT_EQ(2U, GetAndResetSentEventCount());
1986 // Sending the ack is because the async touchmove is not ready for 1986 // Sending the ack is because the async touchmove is not ready for
1987 // dispatching send the ack immediately. 1987 // dispatching send the ack immediately.
1988 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1988 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1989 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 1989 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type);
1990 1990
1991 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1991 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1992 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1992 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1993 EXPECT_EQ(0U, queued_event_count()); 1993 EXPECT_EQ(0U, queued_event_count());
1994 EXPECT_EQ(WebInputEvent::TouchCancel, acked_event().type); 1994 EXPECT_EQ(WebInputEvent::TouchCancel, acked_event().type);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2060 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2060 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2061 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2061 EXPECT_FALSE(HasPendingAsyncTouchMove());
2062 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2062 EXPECT_EQ(1U, GetAndResetSentEventCount());
2063 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2063 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2064 2064
2065 // We set the next touch event time to be after the throttled interval. 2065 // We set the next touch event time to be after the throttled interval.
2066 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 2066 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
2067 // Dispatch the touch move event when sufficient time has passed. 2067 // Dispatch the touch move event when sufficient time has passed.
2068 MoveTouchPoint(0, 0, 40); 2068 MoveTouchPoint(0, 0, 40);
2069 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2069 EXPECT_FALSE(HasPendingAsyncTouchMove());
2070 EXPECT_FALSE(sent_event().cancelable); 2070 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2071 // When we dispatch an async touchmove, we do not put it back to the queue 2071 // When we dispatch an async touchmove, we do not put it back to the queue
2072 // any more and we will ack to client right away. 2072 // any more and we will ack to client right away.
2073 EXPECT_EQ(0U, queued_event_count()); 2073 EXPECT_EQ(0U, queued_event_count());
2074 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2074 EXPECT_EQ(1U, GetAndResetSentEventCount());
2075 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2075 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2076 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); 2076 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count());
2077 2077
2078 // Do not dispatch the event until throttledTouchmoves intervals expires and 2078 // Do not dispatch the event until throttledTouchmoves intervals expires and
2079 // receive an ack from render. 2079 // receive an ack from render.
2080 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 2080 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2120 SetFollowupEvent(followup_scroll); 2120 SetFollowupEvent(followup_scroll);
2121 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2121 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2122 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2122 EXPECT_FALSE(HasPendingAsyncTouchMove());
2123 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2123 EXPECT_EQ(1U, GetAndResetSentEventCount());
2124 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2124 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2125 2125
2126 // Dispatch the touch move event when sufficient time has passed. 2126 // Dispatch the touch move event when sufficient time has passed.
2127 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 2127 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
2128 MoveTouchPoint(0, 0, 40); 2128 MoveTouchPoint(0, 0, 40);
2129 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2129 EXPECT_FALSE(HasPendingAsyncTouchMove());
2130 EXPECT_FALSE(sent_event().cancelable); 2130 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2131 // When we dispatch an async touchmove, we do not put it back to the queue 2131 // When we dispatch an async touchmove, we do not put it back to the queue
2132 // any more and we will ack to client right away. 2132 // any more and we will ack to client right away.
2133 EXPECT_EQ(0U, queued_event_count()); 2133 EXPECT_EQ(0U, queued_event_count());
2134 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2134 EXPECT_EQ(1U, GetAndResetSentEventCount());
2135 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2135 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2136 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); 2136 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count());
2137 2137
2138 // We receive an ack back from render but the time interval is not expired, 2138 // We receive an ack back from render but the time interval is not expired,
2139 // so we do not dispatch the touch move event. 2139 // so we do not dispatch the touch move event.
2140 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2140 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2141 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count()); 2141 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count());
2142 MoveTouchPoint(0, 0, 50); 2142 MoveTouchPoint(0, 0, 50);
2143 EXPECT_TRUE(HasPendingAsyncTouchMove()); 2143 EXPECT_TRUE(HasPendingAsyncTouchMove());
2144 EXPECT_EQ(0U, queued_event_count()); 2144 EXPECT_EQ(0U, queued_event_count());
2145 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2145 EXPECT_EQ(0U, GetAndResetSentEventCount());
2146 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2146 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2147 2147
2148 // Dispatch the touch move when sufficient time has passed. 2148 // Dispatch the touch move when sufficient time has passed.
2149 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 2149 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
2150 MoveTouchPoint(0, 0, 50); 2150 MoveTouchPoint(0, 0, 50);
2151 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2151 EXPECT_FALSE(HasPendingAsyncTouchMove());
2152 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); 2152 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type);
2153 EXPECT_FALSE(sent_event().cancelable); 2153 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2154 EXPECT_EQ(0U, queued_event_count()); 2154 EXPECT_EQ(0U, queued_event_count());
2155 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2155 EXPECT_EQ(1U, GetAndResetSentEventCount());
2156 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2156 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2157 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); 2157 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count());
2158 } 2158 }
2159 2159
2160 TEST_F(TouchEventQueueTest, AsyncTouchFlushedByNonTouchMove) { 2160 TEST_F(TouchEventQueueTest, AsyncTouchFlushedByNonTouchMove) {
2161 // Process a TouchStart 2161 // Process a TouchStart
2162 PressTouchPoint(0, 1); 2162 PressTouchPoint(0, 1);
2163 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2163 EXPECT_EQ(1U, GetAndResetSentEventCount());
(...skipping 14 matching lines...) Expand all
2178 SetFollowupEvent(followup_scroll); 2178 SetFollowupEvent(followup_scroll);
2179 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2179 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2180 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2180 EXPECT_FALSE(HasPendingAsyncTouchMove());
2181 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2181 EXPECT_EQ(1U, GetAndResetSentEventCount());
2182 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2182 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2183 2183
2184 // Dispatch the touch move when sufficient time has passed. 2184 // Dispatch the touch move when sufficient time has passed.
2185 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 2185 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
2186 MoveTouchPoint(0, 0, 40); 2186 MoveTouchPoint(0, 0, 40);
2187 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2187 EXPECT_FALSE(HasPendingAsyncTouchMove());
2188 EXPECT_FALSE(sent_event().cancelable); 2188 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2189 // When we dispatch an async touchmove, we do not put it back to the queue 2189 // When we dispatch an async touchmove, we do not put it back to the queue
2190 // any more and we will ack to client right away. 2190 // any more and we will ack to client right away.
2191 EXPECT_EQ(0U, queued_event_count()); 2191 EXPECT_EQ(0U, queued_event_count());
2192 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2192 EXPECT_EQ(1U, GetAndResetSentEventCount());
2193 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2193 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2194 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); 2194 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count());
2195 2195
2196 for (int i = 0; i < 3; ++i) { 2196 for (int i = 0; i < 3; ++i) {
2197 // We throttle the touchmoves, put it in the pending_async_touch_move_, 2197 // We throttle the touchmoves, put it in the pending_async_touch_move_,
2198 // do not dispatch it. 2198 // do not dispatch it.
2199 MoveTouchPoint(0, 10 + 10 * i, 10 + 10 * i); 2199 MoveTouchPoint(0, 10 + 10 * i, 10 + 10 * i);
2200 EXPECT_TRUE(HasPendingAsyncTouchMove()); 2200 EXPECT_TRUE(HasPendingAsyncTouchMove());
2201 EXPECT_EQ(0U, queued_event_count()); 2201 EXPECT_EQ(0U, queued_event_count());
2202 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2202 EXPECT_EQ(0U, GetAndResetSentEventCount());
2203 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2203 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2204 EXPECT_EQ(static_cast<size_t>(i + 1), 2204 EXPECT_EQ(static_cast<size_t>(i + 1),
2205 uncancelable_touch_moves_pending_ack_count()); 2205 uncancelable_touch_moves_pending_ack_count());
2206 2206
2207 // Send touchstart will flush pending_async_touch_move_, and increase the 2207 // Send touchstart will flush pending_async_touch_move_, and increase the
2208 // count. In this case, we will first dispatch an async touchmove and 2208 // count. In this case, we will first dispatch an async touchmove and
2209 // then a touchstart. For the async touchmove, we will not send ack again. 2209 // then a touchstart. For the async touchmove, we will not send ack again.
2210 PressTouchPoint(30, 30); 2210 PressTouchPoint(30, 30);
2211 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2211 EXPECT_FALSE(HasPendingAsyncTouchMove());
2212 EXPECT_EQ(2U, all_sent_events().size()); 2212 EXPECT_EQ(2U, all_sent_events().size());
2213 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type); 2213 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type);
2214 EXPECT_FALSE(all_sent_events()[0].cancelable); 2214 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType);
2215 EXPECT_EQ(10 + 10 * i, all_sent_events()[0].touches[0].position.x); 2215 EXPECT_EQ(10 + 10 * i, all_sent_events()[0].touches[0].position.x);
2216 EXPECT_EQ(10 + 10 * i, all_sent_events()[0].touches[0].position.y); 2216 EXPECT_EQ(10 + 10 * i, all_sent_events()[0].touches[0].position.y);
2217 EXPECT_EQ(static_cast<size_t>(i + 2), 2217 EXPECT_EQ(static_cast<size_t>(i + 2),
2218 uncancelable_touch_moves_pending_ack_count()); 2218 uncancelable_touch_moves_pending_ack_count());
2219 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[1].type); 2219 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[1].type);
2220 EXPECT_TRUE(all_sent_events()[1].cancelable); 2220 EXPECT_EQ(WebInputEvent::Blocking, all_sent_events()[1].dispatchType);
2221 EXPECT_EQ(2U, GetAndResetSentEventCount()); 2221 EXPECT_EQ(2U, GetAndResetSentEventCount());
2222 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 2222 EXPECT_EQ(0U, GetAndResetAckedEventCount());
2223 2223
2224 SendTouchEventAckWithID(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, 2224 SendTouchEventAckWithID(INPUT_EVENT_ACK_STATE_NOT_CONSUMED,
2225 GetUniqueTouchEventID()); 2225 GetUniqueTouchEventID());
2226 EXPECT_EQ(0U, queued_event_count()); 2226 EXPECT_EQ(0U, queued_event_count());
2227 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2227 EXPECT_FALSE(HasPendingAsyncTouchMove());
2228 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2228 EXPECT_EQ(0U, GetAndResetSentEventCount());
2229 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2229 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2230 } 2230 }
(...skipping 25 matching lines...) Expand all
2256 2256
2257 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2257 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2258 2258
2259 // When we receive this ack from render, and the count is 0, so we can 2259 // When we receive this ack from render, and the count is 0, so we can
2260 // dispatch the pending_async_touchmove_. 2260 // dispatch the pending_async_touchmove_.
2261 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2261 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2262 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); 2262 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count());
2263 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2263 EXPECT_FALSE(HasPendingAsyncTouchMove());
2264 EXPECT_EQ(0U, queued_event_count()); 2264 EXPECT_EQ(0U, queued_event_count());
2265 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); 2265 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type);
2266 EXPECT_FALSE(sent_event().cancelable); 2266 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2267 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2267 EXPECT_EQ(1U, GetAndResetSentEventCount());
2268 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 2268 EXPECT_EQ(0U, GetAndResetAckedEventCount());
2269 } 2269 }
2270 2270
2271 // Ensure that even when we receive the ack from render, we still need to wait 2271 // Ensure that even when we receive the ack from render, we still need to wait
2272 // for the interval expires to send the next async touchmove once the scroll 2272 // for the interval expires to send the next async touchmove once the scroll
2273 // starts. 2273 // starts.
2274 TEST_F(TouchEventQueueTest, DoNotIncreaseIfClientConsumeAsyncTouchMove) { 2274 TEST_F(TouchEventQueueTest, DoNotIncreaseIfClientConsumeAsyncTouchMove) {
2275 // Process a TouchStart 2275 // Process a TouchStart
2276 PressTouchPoint(0, 1); 2276 PressTouchPoint(0, 1);
(...skipping 15 matching lines...) Expand all
2292 SetFollowupEvent(followup_scroll); 2292 SetFollowupEvent(followup_scroll);
2293 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2293 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2294 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2294 EXPECT_FALSE(HasPendingAsyncTouchMove());
2295 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2295 EXPECT_EQ(1U, GetAndResetSentEventCount());
2296 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2296 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2297 2297
2298 // Dispatch the touch move event when sufficient time has passed. 2298 // Dispatch the touch move event when sufficient time has passed.
2299 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 2299 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
2300 MoveTouchPoint(0, 0, 40); 2300 MoveTouchPoint(0, 0, 40);
2301 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2301 EXPECT_FALSE(HasPendingAsyncTouchMove());
2302 EXPECT_FALSE(sent_event().cancelable); 2302 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2303 // When we dispatch an async touchmove, we do not put it back to the queue 2303 // When we dispatch an async touchmove, we do not put it back to the queue
2304 // any more and we will ack to client right away. 2304 // any more and we will ack to client right away.
2305 EXPECT_EQ(0U, queued_event_count()); 2305 EXPECT_EQ(0U, queued_event_count());
2306 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2306 EXPECT_EQ(1U, GetAndResetSentEventCount());
2307 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2307 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2308 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); 2308 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count());
2309 2309
2310 // We receive an ack back from render but the time interval is not expired, 2310 // We receive an ack back from render but the time interval is not expired,
2311 // so we do not dispatch the touch move event. 2311 // so we do not dispatch the touch move event.
2312 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2312 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2313 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count()); 2313 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count());
2314 MoveTouchPoint(0, 0, 50); 2314 MoveTouchPoint(0, 0, 50);
2315 EXPECT_TRUE(HasPendingAsyncTouchMove()); 2315 EXPECT_TRUE(HasPendingAsyncTouchMove());
2316 EXPECT_EQ(0U, queued_event_count()); 2316 EXPECT_EQ(0U, queued_event_count());
2317 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2317 EXPECT_EQ(0U, GetAndResetSentEventCount());
2318 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2318 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2319 2319
2320 // Dispatch the touch move when sufficient time has passed. Becasue the event 2320 // Dispatch the touch move when sufficient time has passed. Becasue the event
2321 // is consumed by client already, we would not increase the count and ack to 2321 // is consumed by client already, we would not increase the count and ack to
2322 // client again. 2322 // client again.
2323 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 2323 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
2324 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); 2324 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED);
2325 MoveTouchPoint(0, 0, 50); 2325 MoveTouchPoint(0, 0, 50);
2326 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2326 EXPECT_FALSE(HasPendingAsyncTouchMove());
2327 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); 2327 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type);
2328 EXPECT_FALSE(sent_event().cancelable); 2328 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2329 EXPECT_EQ(0U, queued_event_count()); 2329 EXPECT_EQ(0U, queued_event_count());
2330 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2330 EXPECT_EQ(1U, GetAndResetSentEventCount());
2331 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2331 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2332 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count()); 2332 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count());
2333 } 2333 }
2334 2334
2335 TEST_F(TouchEventQueueTest, TouchAbsorptionWithConsumedFirstMove) { 2335 TEST_F(TouchEventQueueTest, TouchAbsorptionWithConsumedFirstMove) {
2336 // Queue a TouchStart. 2336 // Queue a TouchStart.
2337 PressTouchPoint(0, 1); 2337 PressTouchPoint(0, 1);
2338 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2338 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2339 EXPECT_EQ(0U, queued_event_count()); 2339 EXPECT_EQ(0U, queued_event_count());
2340 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2340 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2341 2341
2342 MoveTouchPoint(0, 20, 5); 2342 MoveTouchPoint(0, 20, 5);
2343 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin); 2343 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin);
2344 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2344 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2345 EXPECT_EQ(0U, queued_event_count()); 2345 EXPECT_EQ(0U, queued_event_count());
2346 EXPECT_EQ(2U, GetAndResetSentEventCount()); 2346 EXPECT_EQ(2U, GetAndResetSentEventCount());
2347 2347
2348 // Even if the first touchmove event was consumed, subsequent unconsumed 2348 // Even if the first touchmove event was consumed, subsequent unconsumed
2349 // touchmove events should trigger scrolling. 2349 // touchmove events should trigger scrolling.
2350 MoveTouchPoint(0, 60, 5); 2350 MoveTouchPoint(0, 60, 5);
2351 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2351 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2352 EXPECT_EQ(0U, queued_event_count()); 2352 EXPECT_EQ(0U, queued_event_count());
2353 EXPECT_TRUE(sent_event().cancelable); 2353 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
2354 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2354 EXPECT_EQ(1U, GetAndResetSentEventCount());
2355 2355
2356 MoveTouchPoint(0, 20, 5); 2356 MoveTouchPoint(0, 20, 5);
2357 WebGestureEvent followup_scroll; 2357 WebGestureEvent followup_scroll;
2358 followup_scroll.type = WebInputEvent::GestureScrollUpdate; 2358 followup_scroll.type = WebInputEvent::GestureScrollUpdate;
2359 SetFollowupEvent(followup_scroll); 2359 SetFollowupEvent(followup_scroll);
2360 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2360 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2361 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, 2361 SendGestureEventAck(WebInputEvent::GestureScrollUpdate,
2362 INPUT_EVENT_ACK_STATE_CONSUMED); 2362 INPUT_EVENT_ACK_STATE_CONSUMED);
2363 EXPECT_EQ(0U, queued_event_count()); 2363 EXPECT_EQ(0U, queued_event_count());
2364 EXPECT_TRUE(sent_event().cancelable); 2364 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
2365 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2365 EXPECT_EQ(1U, GetAndResetSentEventCount());
2366 2366
2367 // Touch move event is throttled. 2367 // Touch move event is throttled.
2368 MoveTouchPoint(0, 60, 5); 2368 MoveTouchPoint(0, 60, 5);
2369 EXPECT_EQ(0U, queued_event_count()); 2369 EXPECT_EQ(0U, queued_event_count());
2370 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2370 EXPECT_EQ(0U, GetAndResetSentEventCount());
2371 } 2371 }
2372 2372
2373 TEST_F(TouchEventQueueTest, TouchStartCancelableDuringScroll) { 2373 TEST_F(TouchEventQueueTest, TouchStartCancelableDuringScroll) {
2374 // Queue a touchstart and touchmove that go unconsumed, transitioning to an 2374 // Queue a touchstart and touchmove that go unconsumed, transitioning to an
2375 // active scroll sequence. 2375 // active scroll sequence.
2376 PressTouchPoint(0, 1); 2376 PressTouchPoint(0, 1);
2377 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2377 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2378 EXPECT_TRUE(sent_event().cancelable); 2378 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
2379 ASSERT_EQ(1U, GetAndResetSentEventCount()); 2379 ASSERT_EQ(1U, GetAndResetSentEventCount());
2380 2380
2381 MoveTouchPoint(0, 20, 5); 2381 MoveTouchPoint(0, 20, 5);
2382 EXPECT_TRUE(sent_event().cancelable); 2382 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
2383 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin); 2383 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin);
2384 SendGestureEvent(blink::WebInputEvent::GestureScrollUpdate); 2384 SendGestureEvent(blink::WebInputEvent::GestureScrollUpdate);
2385 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2385 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2386 EXPECT_TRUE(sent_event().cancelable); 2386 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
2387 ASSERT_EQ(1U, GetAndResetSentEventCount()); 2387 ASSERT_EQ(1U, GetAndResetSentEventCount());
2388 2388
2389 // Even though scrolling has begun, touchstart events should be cancelable, 2389 // Even though scrolling has begun, touchstart events should be cancelable,
2390 // allowing, for example, customized pinch processing. 2390 // allowing, for example, customized pinch processing.
2391 PressTouchPoint(10, 11); 2391 PressTouchPoint(10, 11);
2392 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2392 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2393 EXPECT_TRUE(sent_event().cancelable); 2393 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
2394 ASSERT_EQ(1U, GetAndResetSentEventCount()); 2394 ASSERT_EQ(1U, GetAndResetSentEventCount());
2395 2395
2396 // As the touch start was consumed, touchmoves should no longer be throttled. 2396 // As the touch start was consumed, touchmoves should no longer be throttled.
2397 MoveTouchPoint(1, 11, 11); 2397 MoveTouchPoint(1, 11, 11);
2398 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2398 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2399 EXPECT_TRUE(sent_event().cancelable); 2399 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
2400 ASSERT_EQ(1U, GetAndResetSentEventCount()); 2400 ASSERT_EQ(1U, GetAndResetSentEventCount());
2401 2401
2402 // With throttling disabled, touchend and touchmove events should also be 2402 // With throttling disabled, touchend and touchmove events should also be
2403 // cancelable. 2403 // cancelable.
2404 MoveTouchPoint(1, 12, 12); 2404 MoveTouchPoint(1, 12, 12);
2405 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2405 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2406 EXPECT_TRUE(sent_event().cancelable); 2406 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
2407 ASSERT_EQ(1U, GetAndResetSentEventCount()); 2407 ASSERT_EQ(1U, GetAndResetSentEventCount());
2408 ReleaseTouchPoint(1); 2408 ReleaseTouchPoint(1);
2409 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2409 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2410 EXPECT_TRUE(sent_event().cancelable); 2410 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
2411 ASSERT_EQ(1U, GetAndResetSentEventCount()); 2411 ASSERT_EQ(1U, GetAndResetSentEventCount());
2412 2412
2413 // If subsequent touchmoves aren't consumed, the generated scroll events 2413 // If subsequent touchmoves aren't consumed, the generated scroll events
2414 // will restore async touch dispatch. 2414 // will restore async touch dispatch.
2415 MoveTouchPoint(0, 25, 5); 2415 MoveTouchPoint(0, 25, 5);
2416 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2416 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2417 SendGestureEvent(blink::WebInputEvent::GestureScrollUpdate); 2417 SendGestureEvent(blink::WebInputEvent::GestureScrollUpdate);
2418 EXPECT_TRUE(sent_event().cancelable); 2418 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
2419 ASSERT_EQ(1U, GetAndResetSentEventCount()); 2419 ASSERT_EQ(1U, GetAndResetSentEventCount());
2420 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 2420 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
2421 MoveTouchPoint(0, 30, 5); 2421 MoveTouchPoint(0, 30, 5);
2422 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2422 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2423 EXPECT_FALSE(sent_event().cancelable); 2423 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2424 ASSERT_EQ(1U, GetAndResetSentEventCount()); 2424 ASSERT_EQ(1U, GetAndResetSentEventCount());
2425 2425
2426 // The touchend will be uncancelable during an active scroll sequence. 2426 // The touchend will be uncancelable during an active scroll sequence.
2427 ReleaseTouchPoint(0); 2427 ReleaseTouchPoint(0);
2428 EXPECT_FALSE(sent_event().cancelable); 2428 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2429 ASSERT_EQ(1U, GetAndResetSentEventCount()); 2429 ASSERT_EQ(1U, GetAndResetSentEventCount());
2430 } 2430 }
2431 2431
2432 TEST_F(TouchEventQueueTest, UnseenTouchPointerIdsNotForwarded) { 2432 TEST_F(TouchEventQueueTest, UnseenTouchPointerIdsNotForwarded) {
2433 SyntheticWebTouchEvent event; 2433 SyntheticWebTouchEvent event;
2434 event.PressPoint(0, 0); 2434 event.PressPoint(0, 0);
2435 SendTouchEvent(event); 2435 SendTouchEvent(event);
2436 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2436 EXPECT_EQ(1U, GetAndResetSentEventCount());
2437 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2437 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2438 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2438 EXPECT_EQ(1U, GetAndResetAckedEventCount());
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
2612 // TouchMove should be allowed and test for touches state. 2612 // TouchMove should be allowed and test for touches state.
2613 const WebTouchEvent& event2 = sent_event(); 2613 const WebTouchEvent& event2 = sent_event();
2614 EXPECT_EQ(WebInputEvent::TouchMove, event2.type); 2614 EXPECT_EQ(WebInputEvent::TouchMove, event2.type);
2615 EXPECT_EQ(WebTouchPoint::StateStationary, event2.touches[0].state); 2615 EXPECT_EQ(WebTouchPoint::StateStationary, event2.touches[0].state);
2616 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[1].state); 2616 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[1].state);
2617 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2617 EXPECT_EQ(1U, GetAndResetSentEventCount());
2618 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2618 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2619 } 2619 }
2620 2620
2621 } // namespace content 2621 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698