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

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

Issue 2573073003: Collapse the API surface on WebInputEvent via accessor functions. (Closed)
Patch Set: Fix nits Created 3 years, 11 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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 void SetUpForTimeoutTesting() { 107 void SetUpForTimeoutTesting() {
108 SetUpForTimeoutTesting(DefaultTouchTimeoutDelay(), 108 SetUpForTimeoutTesting(DefaultTouchTimeoutDelay(),
109 DefaultTouchTimeoutDelay()); 109 DefaultTouchTimeoutDelay());
110 } 110 }
111 111
112 void SendTouchEvent(WebTouchEvent event) { 112 void SendTouchEvent(WebTouchEvent event) {
113 if (slop_length_dips_) { 113 if (slop_length_dips_) {
114 event.movedBeyondSlopRegion = false; 114 event.movedBeyondSlopRegion = false;
115 if (WebTouchEventTraits::IsTouchSequenceStart(event)) 115 if (WebTouchEventTraits::IsTouchSequenceStart(event))
116 anchor_ = event.touches[0].position; 116 anchor_ = event.touches[0].position;
117 if (event.type == WebInputEvent::TouchMove) { 117 if (event.type() == WebInputEvent::TouchMove) {
118 gfx::Vector2dF delta = anchor_ - event.touches[0].position; 118 gfx::Vector2dF delta = anchor_ - event.touches[0].position;
119 if (delta.LengthSquared() > slop_length_dips_ * slop_length_dips_) 119 if (delta.LengthSquared() > slop_length_dips_ * slop_length_dips_)
120 event.movedBeyondSlopRegion = true; 120 event.movedBeyondSlopRegion = true;
121 } 121 }
122 } else { 122 } else {
123 event.movedBeyondSlopRegion = event.type == WebInputEvent::TouchMove; 123 event.movedBeyondSlopRegion = event.type() == WebInputEvent::TouchMove;
124 } 124 }
125 queue_->QueueEvent(TouchEventWithLatencyInfo(event, ui::LatencyInfo())); 125 queue_->QueueEvent(TouchEventWithLatencyInfo(event, ui::LatencyInfo()));
126 } 126 }
127 127
128 void SendGestureEvent(WebInputEvent::Type type) { 128 void SendGestureEvent(WebInputEvent::Type type) {
129 WebGestureEvent event(type, WebInputEvent::NoModifiers, 129 WebGestureEvent event(type, WebInputEvent::NoModifiers,
130 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); 130 ui::EventTimeStampToSeconds(ui::EventTimeForNow()));
131 queue_->OnGestureScrollEvent( 131 queue_->OnGestureScrollEvent(
132 GestureEventWithLatencyInfo(event, ui::LatencyInfo())); 132 GestureEventWithLatencyInfo(event, ui::LatencyInfo()));
133 } 133 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 190
191 void ChangeTouchPointRadius(int index, float radius_x, float radius_y) { 191 void ChangeTouchPointRadius(int index, float radius_x, float radius_y) {
192 CHECK_GE(index, 0); 192 CHECK_GE(index, 0);
193 CHECK_LT(index, touch_event_.kTouchesLengthCap); 193 CHECK_LT(index, touch_event_.kTouchesLengthCap);
194 WebTouchPoint& point = touch_event_.touches[index]; 194 WebTouchPoint& point = touch_event_.touches[index];
195 point.radiusX = radius_x; 195 point.radiusX = radius_x;
196 point.radiusY = radius_y; 196 point.radiusY = radius_y;
197 touch_event_.touches[index].state = WebTouchPoint::StateMoved; 197 touch_event_.touches[index].state = WebTouchPoint::StateMoved;
198 touch_event_.movedBeyondSlopRegion = true; 198 touch_event_.movedBeyondSlopRegion = true;
199 WebTouchEventTraits::ResetType(WebInputEvent::TouchMove, 199 WebTouchEventTraits::ResetType(WebInputEvent::TouchMove,
200 touch_event_.timeStampSeconds, 200 touch_event_.timeStampSeconds(),
201 &touch_event_); 201 &touch_event_);
202 SendTouchEvent(); 202 SendTouchEvent();
203 } 203 }
204 204
205 void ChangeTouchPointRotationAngle(int index, float rotation_angle) { 205 void ChangeTouchPointRotationAngle(int index, float rotation_angle) {
206 CHECK_GE(index, 0); 206 CHECK_GE(index, 0);
207 CHECK_LT(index, touch_event_.kTouchesLengthCap); 207 CHECK_LT(index, touch_event_.kTouchesLengthCap);
208 WebTouchPoint& point = touch_event_.touches[index]; 208 WebTouchPoint& point = touch_event_.touches[index];
209 point.rotationAngle = rotation_angle; 209 point.rotationAngle = rotation_angle;
210 touch_event_.touches[index].state = WebTouchPoint::StateMoved; 210 touch_event_.touches[index].state = WebTouchPoint::StateMoved;
211 touch_event_.movedBeyondSlopRegion = true; 211 touch_event_.movedBeyondSlopRegion = true;
212 WebTouchEventTraits::ResetType(WebInputEvent::TouchMove, 212 WebTouchEventTraits::ResetType(WebInputEvent::TouchMove,
213 touch_event_.timeStampSeconds, 213 touch_event_.timeStampSeconds(),
214 &touch_event_); 214 &touch_event_);
215 SendTouchEvent(); 215 SendTouchEvent();
216 } 216 }
217 217
218 void ChangeTouchPointForce(int index, float force) { 218 void ChangeTouchPointForce(int index, float force) {
219 CHECK_GE(index, 0); 219 CHECK_GE(index, 0);
220 CHECK_LT(index, touch_event_.kTouchesLengthCap); 220 CHECK_LT(index, touch_event_.kTouchesLengthCap);
221 WebTouchPoint& point = touch_event_.touches[index]; 221 WebTouchPoint& point = touch_event_.touches[index];
222 point.force = force; 222 point.force = force;
223 touch_event_.touches[index].state = WebTouchPoint::StateMoved; 223 touch_event_.touches[index].state = WebTouchPoint::StateMoved;
224 touch_event_.movedBeyondSlopRegion = true; 224 touch_event_.movedBeyondSlopRegion = true;
225 WebTouchEventTraits::ResetType(WebInputEvent::TouchMove, 225 WebTouchEventTraits::ResetType(WebInputEvent::TouchMove,
226 touch_event_.timeStampSeconds, 226 touch_event_.timeStampSeconds(),
227 &touch_event_); 227 &touch_event_);
228 SendTouchEvent(); 228 SendTouchEvent();
229 } 229 }
230 230
231 void ReleaseTouchPoint(int index) { 231 void ReleaseTouchPoint(int index) {
232 touch_event_.ReleasePoint(index); 232 touch_event_.ReleasePoint(index);
233 SendTouchEvent(); 233 SendTouchEvent();
234 } 234 }
235 235
236 void CancelTouchPoint(int index) { 236 void CancelTouchPoint(int index) {
237 touch_event_.CancelPoint(index); 237 touch_event_.CancelPoint(index);
238 SendTouchEvent(); 238 SendTouchEvent();
239 } 239 }
240 240
241 void PrependTouchScrollNotification() { 241 void PrependTouchScrollNotification() {
242 queue_->PrependTouchScrollNotification(); 242 queue_->PrependTouchScrollNotification();
243 } 243 }
244 244
245 void AdvanceTouchTime(double seconds) { 245 void AdvanceTouchTime(double seconds) {
246 touch_event_.setTimeStampSeconds(touch_event_.timeStampSeconds + seconds); 246 touch_event_.setTimeStampSeconds(touch_event_.timeStampSeconds() + seconds);
247 } 247 }
248 248
249 void ResetTouchEvent() { 249 void ResetTouchEvent() {
250 touch_event_ = SyntheticWebTouchEvent(); 250 touch_event_ = SyntheticWebTouchEvent();
251 } 251 }
252 252
253 size_t GetAndResetAckedEventCount() { 253 size_t GetAndResetAckedEventCount() {
254 size_t count = acked_event_count_; 254 size_t count = acked_event_count_;
255 acked_event_count_ = 0; 255 acked_event_count_ = 0;
256 return count; 256 return count;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 // The second touch should not be sent since one is already in queue. 355 // The second touch should not be sent since one is already in queue.
356 MoveTouchPoint(0, 5, 5); 356 MoveTouchPoint(0, 5, 5);
357 EXPECT_EQ(2U, queued_event_count()); 357 EXPECT_EQ(2U, queued_event_count());
358 EXPECT_EQ(0U, GetAndResetSentEventCount()); 358 EXPECT_EQ(0U, GetAndResetSentEventCount());
359 359
360 // Receive an ACK for the first touch-event. 360 // Receive an ACK for the first touch-event.
361 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 361 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
362 EXPECT_EQ(1U, queued_event_count()); 362 EXPECT_EQ(1U, queued_event_count());
363 EXPECT_EQ(1U, GetAndResetSentEventCount()); 363 EXPECT_EQ(1U, GetAndResetSentEventCount());
364 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 364 EXPECT_EQ(1U, GetAndResetAckedEventCount());
365 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); 365 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type());
366 EXPECT_EQ(WebInputEvent::Blocking, acked_event().dispatchType); 366 EXPECT_EQ(WebInputEvent::Blocking, acked_event().dispatchType);
367 367
368 // Receive an ACK for the second touch-event. 368 // Receive an ACK for the second touch-event.
369 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 369 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
370 EXPECT_EQ(0U, queued_event_count()); 370 EXPECT_EQ(0U, queued_event_count());
371 EXPECT_EQ(0U, GetAndResetSentEventCount()); 371 EXPECT_EQ(0U, GetAndResetSentEventCount());
372 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 372 EXPECT_EQ(1U, GetAndResetAckedEventCount());
373 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 373 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type());
374 EXPECT_EQ(WebInputEvent::Blocking, acked_event().dispatchType); 374 EXPECT_EQ(WebInputEvent::Blocking, acked_event().dispatchType);
375 } 375 }
376 376
377 // Tests that touch-events with multiple points are queued properly. 377 // Tests that touch-events with multiple points are queued properly.
378 TEST_F(TouchEventQueueTest, BasicMultiTouch) { 378 TEST_F(TouchEventQueueTest, BasicMultiTouch) {
379 const size_t kPointerCount = 10; 379 const size_t kPointerCount = 10;
380 for (float i = 0; i < kPointerCount; ++i) 380 for (float i = 0; i < kPointerCount; ++i)
381 PressTouchPoint(i, i); 381 PressTouchPoint(i, i);
382 382
383 EXPECT_EQ(1U, GetAndResetSentEventCount()); 383 EXPECT_EQ(1U, GetAndResetSentEventCount());
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 EXPECT_EQ(0U, GetAndResetSentEventCount()); 605 EXPECT_EQ(0U, GetAndResetSentEventCount());
606 ReleaseTouchPoint(0); 606 ReleaseTouchPoint(0);
607 EXPECT_EQ(0U, GetAndResetSentEventCount()); 607 EXPECT_EQ(0U, GetAndResetSentEventCount());
608 EXPECT_EQ(3U, queued_event_count()); 608 EXPECT_EQ(3U, queued_event_count());
609 609
610 // ACK the press. Coalesced touch-move events should be sent. 610 // ACK the press. Coalesced touch-move events should be sent.
611 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 611 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
612 EXPECT_EQ(2U, queued_event_count()); 612 EXPECT_EQ(2U, queued_event_count());
613 EXPECT_EQ(1U, GetAndResetSentEventCount()); 613 EXPECT_EQ(1U, GetAndResetSentEventCount());
614 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 614 EXPECT_EQ(1U, GetAndResetAckedEventCount());
615 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); 615 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type());
616 EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, acked_event_state()); 616 EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, acked_event_state());
617 617
618 // ACK the moves. 618 // ACK the moves.
619 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 619 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
620 EXPECT_EQ(1U, queued_event_count()); 620 EXPECT_EQ(1U, queued_event_count());
621 EXPECT_EQ(1U, GetAndResetSentEventCount()); 621 EXPECT_EQ(1U, GetAndResetSentEventCount());
622 EXPECT_EQ(10U, GetAndResetAckedEventCount()); 622 EXPECT_EQ(10U, GetAndResetAckedEventCount());
623 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 623 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type());
624 624
625 // ACK the release. 625 // ACK the release.
626 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 626 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
627 EXPECT_EQ(0U, queued_event_count()); 627 EXPECT_EQ(0U, queued_event_count());
628 EXPECT_EQ(0U, GetAndResetSentEventCount()); 628 EXPECT_EQ(0U, GetAndResetSentEventCount());
629 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 629 EXPECT_EQ(1U, GetAndResetAckedEventCount());
630 EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type); 630 EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type());
631 } 631 }
632 632
633 // Tests that an event that has already been sent but hasn't been ack'ed yet 633 // Tests that an event that has already been sent but hasn't been ack'ed yet
634 // doesn't get coalesced with newer events. 634 // doesn't get coalesced with newer events.
635 TEST_F(TouchEventQueueTest, SentTouchEventDoesNotCoalesce) { 635 TEST_F(TouchEventQueueTest, SentTouchEventDoesNotCoalesce) {
636 // Send a touch-press event. 636 // Send a touch-press event.
637 PressTouchPoint(1, 1); 637 PressTouchPoint(1, 1);
638 EXPECT_EQ(1U, GetAndResetSentEventCount()); 638 EXPECT_EQ(1U, GetAndResetSentEventCount());
639 639
640 // Send a few touch-move events, followed by a touch-release event. All the 640 // Send a few touch-move events, followed by a touch-release event. All the
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 723
724 // The second touch should not be sent since one is already in queue. 724 // The second touch should not be sent since one is already in queue.
725 MoveTouchPoint(0, 5, 5); 725 MoveTouchPoint(0, 5, 5);
726 EXPECT_EQ(0U, GetAndResetSentEventCount()); 726 EXPECT_EQ(0U, GetAndResetSentEventCount());
727 EXPECT_EQ(2U, queued_event_count()); 727 EXPECT_EQ(2U, queued_event_count());
728 728
729 // Receive an ACK for the first touch-event. This should release the queued 729 // Receive an ACK for the first touch-event. This should release the queued
730 // touch-event, but it should not be sent to the renderer. 730 // touch-event, but it should not be sent to the renderer.
731 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); 731 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
732 EXPECT_EQ(0U, queued_event_count()); 732 EXPECT_EQ(0U, queued_event_count());
733 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 733 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type());
734 EXPECT_EQ(2U, GetAndResetAckedEventCount()); 734 EXPECT_EQ(2U, GetAndResetAckedEventCount());
735 EXPECT_EQ(0U, GetAndResetSentEventCount()); 735 EXPECT_EQ(0U, GetAndResetSentEventCount());
736 736
737 // Send a release event. This should not reach the renderer. 737 // Send a release event. This should not reach the renderer.
738 ReleaseTouchPoint(0); 738 ReleaseTouchPoint(0);
739 EXPECT_EQ(0U, GetAndResetSentEventCount()); 739 EXPECT_EQ(0U, GetAndResetSentEventCount());
740 EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type); 740 EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type());
741 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 741 EXPECT_EQ(1U, GetAndResetAckedEventCount());
742 742
743 // Send a press-event, followed by move and release events, and another press 743 // Send a press-event, followed by move and release events, and another press
744 // event, before the ACK for the first press event comes back. All of the 744 // event, before the ACK for the first press event comes back. All of the
745 // events should be queued first. After the NO_CONSUMER ack for the first 745 // events should be queued first. After the NO_CONSUMER ack for the first
746 // touch-press, all events upto the second touch-press should be flushed. 746 // touch-press, all events upto the second touch-press should be flushed.
747 PressTouchPoint(10, 10); 747 PressTouchPoint(10, 10);
748 EXPECT_EQ(1U, GetAndResetSentEventCount()); 748 EXPECT_EQ(1U, GetAndResetSentEventCount());
749 749
750 MoveTouchPoint(0, 5, 5); 750 MoveTouchPoint(0, 5, 5);
751 MoveTouchPoint(0, 6, 5); 751 MoveTouchPoint(0, 6, 5);
752 ReleaseTouchPoint(0); 752 ReleaseTouchPoint(0);
753 753
754 PressTouchPoint(6, 5); 754 PressTouchPoint(6, 5);
755 EXPECT_EQ(0U, GetAndResetSentEventCount()); 755 EXPECT_EQ(0U, GetAndResetSentEventCount());
756 // The queue should hold the first sent touch-press event, the coalesced 756 // The queue should hold the first sent touch-press event, the coalesced
757 // touch-move event, the touch-end event and the second touch-press event. 757 // touch-move event, the touch-end event and the second touch-press event.
758 EXPECT_EQ(4U, queued_event_count()); 758 EXPECT_EQ(4U, queued_event_count());
759 759
760 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); 760 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
761 EXPECT_EQ(1U, GetAndResetSentEventCount()); 761 EXPECT_EQ(1U, GetAndResetSentEventCount());
762 EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type); 762 EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type());
763 EXPECT_EQ(4U, GetAndResetAckedEventCount()); 763 EXPECT_EQ(4U, GetAndResetAckedEventCount());
764 EXPECT_EQ(1U, queued_event_count()); 764 EXPECT_EQ(1U, queued_event_count());
765 765
766 // ACK the second press event as NO_CONSUMER too. 766 // ACK the second press event as NO_CONSUMER too.
767 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); 767 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
768 EXPECT_EQ(0U, GetAndResetSentEventCount()); 768 EXPECT_EQ(0U, GetAndResetSentEventCount());
769 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); 769 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type());
770 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 770 EXPECT_EQ(1U, GetAndResetAckedEventCount());
771 EXPECT_EQ(0U, queued_event_count()); 771 EXPECT_EQ(0U, queued_event_count());
772 772
773 // Send a second press event. Even though the first touch press had 773 // Send a second press event. Even though the first touch press had
774 // NO_CONSUMER, this press event should reach the renderer. 774 // NO_CONSUMER, this press event should reach the renderer.
775 PressTouchPoint(1, 1); 775 PressTouchPoint(1, 1);
776 EXPECT_EQ(1U, GetAndResetSentEventCount()); 776 EXPECT_EQ(1U, GetAndResetSentEventCount());
777 EXPECT_EQ(1U, queued_event_count()); 777 EXPECT_EQ(1U, queued_event_count());
778 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 778 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
779 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); 779 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type());
780 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 780 EXPECT_EQ(1U, GetAndResetAckedEventCount());
781 } 781 }
782 782
783 TEST_F(TouchEventQueueTest, ConsumerIgnoreMultiFinger) { 783 TEST_F(TouchEventQueueTest, ConsumerIgnoreMultiFinger) {
784 // Interleave three pointer press, move and release events. 784 // Interleave three pointer press, move and release events.
785 PressTouchPoint(1, 1); 785 PressTouchPoint(1, 1);
786 MoveTouchPoint(0, 5, 5); 786 MoveTouchPoint(0, 5, 5);
787 PressTouchPoint(10, 10); 787 PressTouchPoint(10, 10);
788 MoveTouchPoint(1, 15, 15); 788 MoveTouchPoint(1, 15, 15);
789 PressTouchPoint(20, 20); 789 PressTouchPoint(20, 20);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 followup_event.touches[0].state = WebTouchPoint::StateMoved; 851 followup_event.touches[0].state = WebTouchPoint::StateMoved;
852 SetFollowupEvent(followup_event); 852 SetFollowupEvent(followup_event);
853 853
854 // Receive an ACK for the press. This should cause the followup touch-move to 854 // Receive an ACK for the press. This should cause the followup touch-move to
855 // be sent to the renderer. 855 // be sent to the renderer.
856 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 856 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
857 EXPECT_EQ(1U, queued_event_count()); 857 EXPECT_EQ(1U, queued_event_count());
858 EXPECT_EQ(1U, GetAndResetSentEventCount()); 858 EXPECT_EQ(1U, GetAndResetSentEventCount());
859 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 859 EXPECT_EQ(1U, GetAndResetAckedEventCount());
860 EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, acked_event_state()); 860 EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, acked_event_state());
861 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); 861 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type());
862 862
863 // Queue another event. 863 // Queue another event.
864 MoveTouchPoint(0, 2, 2); 864 MoveTouchPoint(0, 2, 2);
865 EXPECT_EQ(2U, queued_event_count()); 865 EXPECT_EQ(2U, queued_event_count());
866 866
867 // Receive an ACK for the touch-move followup event. This should cause the 867 // Receive an ACK for the touch-move followup event. This should cause the
868 // subsequent touch move event be sent to the renderer. 868 // subsequent touch move event be sent to the renderer.
869 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 869 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
870 EXPECT_EQ(1U, queued_event_count()); 870 EXPECT_EQ(1U, queued_event_count());
871 EXPECT_EQ(1U, GetAndResetSentEventCount()); 871 EXPECT_EQ(1U, GetAndResetSentEventCount());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 ; 930 ;
931 stationary_event.touchesLength = 1; 931 stationary_event.touchesLength = 1;
932 stationary_event.touches[0].id = 1; 932 stationary_event.touches[0].id = 1;
933 stationary_event.touches[0].state = WebTouchPoint::StateStationary; 933 stationary_event.touches[0].state = WebTouchPoint::StateStationary;
934 SendTouchEvent(stationary_event); 934 SendTouchEvent(stationary_event);
935 935
936 EXPECT_EQ(1U, queued_event_count()); 936 EXPECT_EQ(1U, queued_event_count());
937 EXPECT_EQ(1U, GetAndResetSentEventCount()); 937 EXPECT_EQ(1U, GetAndResetSentEventCount());
938 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 938 EXPECT_EQ(1U, GetAndResetAckedEventCount());
939 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); 939 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state());
940 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 940 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type());
941 } 941 }
942 942
943 // Tests basic TouchEvent forwarding suppression. 943 // Tests basic TouchEvent forwarding suppression.
944 TEST_F(TouchEventQueueTest, NoTouchBasic) { 944 TEST_F(TouchEventQueueTest, NoTouchBasic) {
945 // Disable TouchEvent forwarding. 945 // Disable TouchEvent forwarding.
946 OnHasTouchEventHandlers(false); 946 OnHasTouchEventHandlers(false);
947 PressTouchPoint(30, 5); 947 PressTouchPoint(30, 5);
948 EXPECT_EQ(0U, GetAndResetSentEventCount()); 948 EXPECT_EQ(0U, GetAndResetSentEventCount());
949 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 949 EXPECT_EQ(1U, GetAndResetAckedEventCount());
950 950
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 // The timeout should have fired, synthetically ack'ing the timed-out event. 1075 // The timeout should have fired, synthetically ack'ing the timed-out event.
1076 // TouchEvent forwarding is disabled until the ack is received for the 1076 // TouchEvent forwarding is disabled until the ack is received for the
1077 // timed-out event and the future cancel event. 1077 // timed-out event and the future cancel event.
1078 EXPECT_FALSE(IsTimeoutRunning()); 1078 EXPECT_FALSE(IsTimeoutRunning());
1079 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1079 EXPECT_EQ(0U, GetAndResetSentEventCount());
1080 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1080 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1081 1081
1082 // Ack'ing the original event should trigger a cancel event. 1082 // Ack'ing the original event should trigger a cancel event.
1083 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1083 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1084 EXPECT_FALSE(IsTimeoutRunning()); 1084 EXPECT_FALSE(IsTimeoutRunning());
1085 EXPECT_EQ(WebInputEvent::TouchCancel, sent_event().type); 1085 EXPECT_EQ(WebInputEvent::TouchCancel, sent_event().type());
1086 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); 1086 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
1087 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1087 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1088 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1088 EXPECT_EQ(1U, GetAndResetSentEventCount());
1089 1089
1090 // Touch events should not be forwarded until we receive the cancel acks. 1090 // Touch events should not be forwarded until we receive the cancel acks.
1091 MoveTouchPoint(0, 1, 1); 1091 MoveTouchPoint(0, 1, 1);
1092 ASSERT_EQ(0U, GetAndResetSentEventCount()); 1092 ASSERT_EQ(0U, GetAndResetSentEventCount());
1093 ASSERT_EQ(1U, GetAndResetAckedEventCount()); 1093 ASSERT_EQ(1U, GetAndResetAckedEventCount());
1094 1094
1095 ReleaseTouchPoint(0); 1095 ReleaseTouchPoint(0);
1096 ASSERT_EQ(0U, GetAndResetSentEventCount()); 1096 ASSERT_EQ(0U, GetAndResetSentEventCount());
1097 ASSERT_EQ(1U, GetAndResetAckedEventCount()); 1097 ASSERT_EQ(1U, GetAndResetAckedEventCount());
1098 1098
1099 // The synthetic TouchCancel ack should not reach the client, but should 1099 // The synthetic TouchCancel ack should not reach the client, but should
1100 // resume touch forwarding. 1100 // resume touch forwarding.
1101 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1101 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1102 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1102 EXPECT_EQ(0U, GetAndResetSentEventCount());
1103 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1103 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1104 1104
1105 // Subsequent events should be handled normally. 1105 // Subsequent events should be handled normally.
1106 PressTouchPoint(0, 1); 1106 PressTouchPoint(0, 1);
1107 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); 1107 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type());
1108 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); 1108 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
1109 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1109 EXPECT_EQ(1U, GetAndResetSentEventCount());
1110 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1110 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1111 } 1111 }
1112 1112
1113 // Tests that the timeout is never started if the renderer consumes 1113 // Tests that the timeout is never started if the renderer consumes
1114 // a TouchEvent from the current touch sequence. 1114 // a TouchEvent from the current touch sequence.
1115 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfRendererIsConsumingGesture) { 1115 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfRendererIsConsumingGesture) {
1116 SetUpForTimeoutTesting(); 1116 SetUpForTimeoutTesting();
1117 1117
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
1677 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1677 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1678 1678
1679 // Queuing the final touchend should flush the pending async touchmove. In 1679 // Queuing the final touchend should flush the pending async touchmove. In
1680 // this case, we will first dispatch an async touchmove and then a touchend. 1680 // this case, we will first dispatch an async touchmove and then a touchend.
1681 // For the async touchmove, we will not send ack again. 1681 // For the async touchmove, we will not send ack again.
1682 ReleaseTouchPoint(0); 1682 ReleaseTouchPoint(0);
1683 followup_scroll.setType(WebInputEvent::GestureScrollEnd); 1683 followup_scroll.setType(WebInputEvent::GestureScrollEnd);
1684 SetFollowupEvent(followup_scroll); 1684 SetFollowupEvent(followup_scroll);
1685 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1685 EXPECT_FALSE(HasPendingAsyncTouchMove());
1686 EXPECT_EQ(2U, all_sent_events().size()); 1686 EXPECT_EQ(2U, all_sent_events().size());
1687 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type); 1687 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type());
1688 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType); 1688 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType);
1689 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[1].type); 1689 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[1].type());
1690 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType); 1690 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType);
1691 EXPECT_EQ(2U, GetAndResetSentEventCount()); 1691 EXPECT_EQ(2U, GetAndResetSentEventCount());
1692 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1692 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1693 EXPECT_EQ(1U, queued_event_count()); 1693 EXPECT_EQ(1U, queued_event_count());
1694 1694
1695 // Ack the touchend. 1695 // Ack the touchend.
1696 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1696 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1697 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1697 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1698 EXPECT_EQ(0U, queued_event_count()); 1698 EXPECT_EQ(0U, queued_event_count());
1699 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1699 EXPECT_EQ(0U, GetAndResetSentEventCount());
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1756 // this case, we will first dispatch an async touchmove and then a 1756 // this case, we will first dispatch an async touchmove and then a
1757 // touchstart. For the async touchmove, we will not send ack again. 1757 // touchstart. For the async touchmove, we will not send ack again.
1758 MoveTouchPoint(0, 0, 25); 1758 MoveTouchPoint(0, 0, 25);
1759 EXPECT_TRUE(HasPendingAsyncTouchMove()); 1759 EXPECT_TRUE(HasPendingAsyncTouchMove());
1760 EXPECT_EQ(0U, queued_event_count()); 1760 EXPECT_EQ(0U, queued_event_count());
1761 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1761 EXPECT_EQ(0U, GetAndResetSentEventCount());
1762 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1762 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1763 PressTouchPoint(30, 30); 1763 PressTouchPoint(30, 30);
1764 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1764 EXPECT_FALSE(HasPendingAsyncTouchMove());
1765 EXPECT_EQ(2U, all_sent_events().size()); 1765 EXPECT_EQ(2U, all_sent_events().size());
1766 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type); 1766 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type());
1767 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType); 1767 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType);
1768 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[1].type); 1768 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[1].type());
1769 EXPECT_EQ(WebInputEvent::Blocking, all_sent_events()[1].dispatchType); 1769 EXPECT_EQ(WebInputEvent::Blocking, all_sent_events()[1].dispatchType);
1770 EXPECT_EQ(2U, GetAndResetSentEventCount()); 1770 EXPECT_EQ(2U, GetAndResetSentEventCount());
1771 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1771 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1772 EXPECT_EQ(1U, queued_event_count()); 1772 EXPECT_EQ(1U, queued_event_count());
1773 1773
1774 // Ack the touchstart. 1774 // Ack the touchstart.
1775 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1775 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1776 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1776 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1777 EXPECT_EQ(0U, queued_event_count()); 1777 EXPECT_EQ(0U, queued_event_count());
1778 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1778 EXPECT_EQ(0U, GetAndResetSentEventCount());
1779 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1779 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1780 1780
1781 // Send a secondary touchmove. 1781 // Send a secondary touchmove.
1782 MoveTouchPoint(1, 0, 25); 1782 MoveTouchPoint(1, 0, 25);
1783 EXPECT_TRUE(HasPendingAsyncTouchMove()); 1783 EXPECT_TRUE(HasPendingAsyncTouchMove());
1784 EXPECT_EQ(0U, queued_event_count()); 1784 EXPECT_EQ(0U, queued_event_count());
1785 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1785 EXPECT_EQ(0U, GetAndResetSentEventCount());
1786 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1786 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1787 1787
1788 // An unconsumed scroll should resume synchronous touch handling. 1788 // An unconsumed scroll should resume synchronous touch handling.
1789 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, 1789 SendGestureEventAck(WebInputEvent::GestureScrollUpdate,
1790 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1790 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1791 1791
1792 // The pending touchmove should be coalesced with the next (now synchronous) 1792 // The pending touchmove should be coalesced with the next (now synchronous)
1793 // touchmove. 1793 // touchmove.
1794 MoveTouchPoint(0, 0, 26); 1794 MoveTouchPoint(0, 0, 26);
1795 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); 1795 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
1796 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1796 EXPECT_FALSE(HasPendingAsyncTouchMove());
1797 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); 1797 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type());
1798 EXPECT_EQ(WebTouchPoint::StateMoved, sent_event().touches[0].state); 1798 EXPECT_EQ(WebTouchPoint::StateMoved, sent_event().touches[0].state);
1799 EXPECT_EQ(WebTouchPoint::StateMoved, sent_event().touches[1].state); 1799 EXPECT_EQ(WebTouchPoint::StateMoved, sent_event().touches[1].state);
1800 EXPECT_EQ(1U, queued_event_count()); 1800 EXPECT_EQ(1U, queued_event_count());
1801 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1801 EXPECT_EQ(1U, GetAndResetSentEventCount());
1802 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1802 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1803 1803
1804 // Subsequent touches will queue until the preceding, synchronous touches are 1804 // Subsequent touches will queue until the preceding, synchronous touches are
1805 // ack'ed. 1805 // ack'ed.
1806 ReleaseTouchPoint(1); 1806 ReleaseTouchPoint(1);
1807 EXPECT_EQ(2U, queued_event_count()); 1807 EXPECT_EQ(2U, queued_event_count());
1808 ReleaseTouchPoint(0); 1808 ReleaseTouchPoint(0);
1809 EXPECT_EQ(3U, queued_event_count()); 1809 EXPECT_EQ(3U, queued_event_count());
1810 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1810 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1811 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); 1811 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
1812 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type); 1812 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type());
1813 EXPECT_EQ(2U, queued_event_count()); 1813 EXPECT_EQ(2U, queued_event_count());
1814 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1814 EXPECT_EQ(1U, GetAndResetSentEventCount());
1815 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1815 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1816 1816
1817 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1817 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1818 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); 1818 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType);
1819 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type); 1819 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type());
1820 EXPECT_EQ(1U, queued_event_count()); 1820 EXPECT_EQ(1U, queued_event_count());
1821 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1821 EXPECT_EQ(1U, GetAndResetSentEventCount());
1822 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1822 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1823 1823
1824 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1824 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1825 EXPECT_EQ(0U, queued_event_count()); 1825 EXPECT_EQ(0U, queued_event_count());
1826 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1826 EXPECT_EQ(0U, GetAndResetSentEventCount());
1827 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1827 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1828 } 1828 }
1829 1829
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1864 EXPECT_EQ(0U, queued_event_count()); 1864 EXPECT_EQ(0U, queued_event_count());
1865 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1865 EXPECT_EQ(0U, GetAndResetSentEventCount());
1866 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 1866 EXPECT_EQ(1U, GetAndResetAckedEventCount());
1867 1867
1868 // Queuing the final touchend should flush the pending, async touchmove. In 1868 // Queuing the final touchend should flush the pending, async touchmove. In
1869 // this case, we will first dispatch an async touchmove and then a touchend. 1869 // this case, we will first dispatch an async touchmove and then a touchend.
1870 // For the async touchmove, we will not send ack again. 1870 // For the async touchmove, we will not send ack again.
1871 ReleaseTouchPoint(0); 1871 ReleaseTouchPoint(0);
1872 EXPECT_FALSE(HasPendingAsyncTouchMove()); 1872 EXPECT_FALSE(HasPendingAsyncTouchMove());
1873 EXPECT_EQ(2U, all_sent_events().size()); 1873 EXPECT_EQ(2U, all_sent_events().size());
1874 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type); 1874 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type());
1875 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType); 1875 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType);
1876 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.x); 1876 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.x);
1877 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.y); 1877 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.y);
1878 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[1].type); 1878 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[1].type());
1879 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType); 1879 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType);
1880 EXPECT_EQ(2U, GetAndResetSentEventCount()); 1880 EXPECT_EQ(2U, GetAndResetSentEventCount());
1881 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1881 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1882 } 1882 }
1883 1883
1884 // Ensure that async touch dispatch and touch ack timeout interactions work 1884 // Ensure that async touch dispatch and touch ack timeout interactions work
1885 // appropriately. 1885 // appropriately.
1886 TEST_F(TouchEventQueueTest, AsyncTouchWithAckTimeout) { 1886 TEST_F(TouchEventQueueTest, AsyncTouchWithAckTimeout) {
1887 SetUpForTimeoutTesting(); 1887 SetUpForTimeoutTesting();
1888 1888
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1989 // the queued touchcancel should be flushed. 1989 // the queued touchcancel should be flushed.
1990 WebTouchEvent followup_cancel(WebInputEvent::TouchCancel, 1990 WebTouchEvent followup_cancel(WebInputEvent::TouchCancel,
1991 WebInputEvent::NoModifiers, 1991 WebInputEvent::NoModifiers,
1992 WebInputEvent::TimeStampForTesting); 1992 WebInputEvent::TimeStampForTesting);
1993 followup_cancel.touchesLength = 1; 1993 followup_cancel.touchesLength = 1;
1994 followup_cancel.touches[0].state = WebTouchPoint::StateCancelled; 1994 followup_cancel.touches[0].state = WebTouchPoint::StateCancelled;
1995 SetFollowupEvent(followup_cancel); 1995 SetFollowupEvent(followup_cancel);
1996 MoveTouchPoint(0, 5, 5); 1996 MoveTouchPoint(0, 5, 5);
1997 EXPECT_EQ(1U, queued_event_count()); 1997 EXPECT_EQ(1U, queued_event_count());
1998 EXPECT_EQ(2U, all_sent_events().size()); 1998 EXPECT_EQ(2U, all_sent_events().size());
1999 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type); 1999 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type());
2000 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType); 2000 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType);
2001 EXPECT_EQ(WebInputEvent::TouchCancel, all_sent_events()[1].type); 2001 EXPECT_EQ(WebInputEvent::TouchCancel, all_sent_events()[1].type());
2002 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType); 2002 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType);
2003 EXPECT_EQ(2U, GetAndResetSentEventCount()); 2003 EXPECT_EQ(2U, GetAndResetSentEventCount());
2004 // Sending the ack is because the async touchmove is not ready for 2004 // Sending the ack is because the async touchmove is not ready for
2005 // dispatching send the ack immediately. 2005 // dispatching send the ack immediately.
2006 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2006 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2007 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 2007 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type());
2008 2008
2009 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2009 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2010 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2010 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2011 EXPECT_EQ(0U, queued_event_count()); 2011 EXPECT_EQ(0U, queued_event_count());
2012 EXPECT_EQ(WebInputEvent::TouchCancel, acked_event().type); 2012 EXPECT_EQ(WebInputEvent::TouchCancel, acked_event().type());
2013 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2013 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2014 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2014 EXPECT_EQ(0U, GetAndResetSentEventCount());
2015 } 2015 }
2016 2016
2017 // Ensure that the async touch is fully reset if the touch sequence restarts 2017 // Ensure that the async touch is fully reset if the touch sequence restarts
2018 // without properly terminating. 2018 // without properly terminating.
2019 TEST_F(TouchEventQueueTest, AsyncTouchWithHardTouchStartReset) { 2019 TEST_F(TouchEventQueueTest, AsyncTouchWithHardTouchStartReset) {
2020 PressTouchPoint(0, 0); 2020 PressTouchPoint(0, 0);
2021 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2021 EXPECT_EQ(1U, GetAndResetSentEventCount());
2022 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2022 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2023 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2023 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2024 2024
2025 // Trigger async touchmove dispatch. 2025 // Trigger async touchmove dispatch.
2026 MoveTouchPoint(0, 1, 1); 2026 MoveTouchPoint(0, 1, 1);
2027 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2027 EXPECT_EQ(1U, GetAndResetSentEventCount());
2028 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, 2028 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin,
2029 WebInputEvent::NoModifiers, 2029 WebInputEvent::NoModifiers,
2030 WebInputEvent::TimeStampForTesting); 2030 WebInputEvent::TimeStampForTesting);
2031 SetFollowupEvent(followup_scroll); 2031 SetFollowupEvent(followup_scroll);
2032 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2032 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2033 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2033 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2034 EXPECT_EQ(0U, queued_event_count()); 2034 EXPECT_EQ(0U, queued_event_count());
2035 SendGestureEvent(WebInputEvent::GestureScrollUpdate); 2035 SendGestureEvent(WebInputEvent::GestureScrollUpdate);
2036 2036
2037 // The async touchmove should be immediately ack'ed but delivery is deferred. 2037 // The async touchmove should be immediately ack'ed but delivery is deferred.
2038 MoveTouchPoint(0, 2, 2); 2038 MoveTouchPoint(0, 2, 2);
2039 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2039 EXPECT_EQ(0U, GetAndResetSentEventCount());
2040 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2040 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2041 EXPECT_EQ(0U, queued_event_count()); 2041 EXPECT_EQ(0U, queued_event_count());
2042 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 2042 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type());
2043 2043
2044 // The queue should be robust to hard touch restarts with a new touch 2044 // The queue should be robust to hard touch restarts with a new touch
2045 // sequence. In this case, the deferred async touch should not be flushed 2045 // sequence. In this case, the deferred async touch should not be flushed
2046 // by the new touch sequence. 2046 // by the new touch sequence.
2047 SendGestureEvent(WebInputEvent::GestureScrollEnd); 2047 SendGestureEvent(WebInputEvent::GestureScrollEnd);
2048 ResetTouchEvent(); 2048 ResetTouchEvent();
2049 2049
2050 PressTouchPoint(0, 0); 2050 PressTouchPoint(0, 0);
2051 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); 2051 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type());
2052 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2052 EXPECT_EQ(1U, GetAndResetSentEventCount());
2053 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2053 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2054 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2054 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2055 } 2055 }
2056 2056
2057 // Ensure that even when the interval expires, we still need to wait for the 2057 // Ensure that even when the interval expires, we still need to wait for the
2058 // ack sent back from render to send the next async touchmove once the scroll 2058 // ack sent back from render to send the next async touchmove once the scroll
2059 // starts. 2059 // starts.
2060 TEST_F(TouchEventQueueTest, SendNextThrottledAsyncTouchMoveAfterAck) { 2060 TEST_F(TouchEventQueueTest, SendNextThrottledAsyncTouchMoveAfterAck) {
2061 // Process a TouchStart 2061 // Process a TouchStart
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
2163 MoveTouchPoint(0, 0, 50); 2163 MoveTouchPoint(0, 0, 50);
2164 EXPECT_TRUE(HasPendingAsyncTouchMove()); 2164 EXPECT_TRUE(HasPendingAsyncTouchMove());
2165 EXPECT_EQ(0U, queued_event_count()); 2165 EXPECT_EQ(0U, queued_event_count());
2166 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2166 EXPECT_EQ(0U, GetAndResetSentEventCount());
2167 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2167 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2168 2168
2169 // Dispatch the touch move when sufficient time has passed. 2169 // Dispatch the touch move when sufficient time has passed.
2170 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 2170 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
2171 MoveTouchPoint(0, 0, 50); 2171 MoveTouchPoint(0, 0, 50);
2172 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2172 EXPECT_FALSE(HasPendingAsyncTouchMove());
2173 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); 2173 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type());
2174 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); 2174 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2175 EXPECT_EQ(0U, queued_event_count()); 2175 EXPECT_EQ(0U, queued_event_count());
2176 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2176 EXPECT_EQ(1U, GetAndResetSentEventCount());
2177 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2177 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2178 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); 2178 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count());
2179 } 2179 }
2180 2180
2181 TEST_F(TouchEventQueueTest, AsyncTouchFlushedByNonTouchMove) { 2181 TEST_F(TouchEventQueueTest, AsyncTouchFlushedByNonTouchMove) {
2182 // Process a TouchStart 2182 // Process a TouchStart
2183 PressTouchPoint(0, 1); 2183 PressTouchPoint(0, 1);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2225 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2225 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2226 EXPECT_EQ(static_cast<size_t>(i + 1), 2226 EXPECT_EQ(static_cast<size_t>(i + 1),
2227 uncancelable_touch_moves_pending_ack_count()); 2227 uncancelable_touch_moves_pending_ack_count());
2228 2228
2229 // Send touchstart will flush pending_async_touch_move_, and increase the 2229 // Send touchstart will flush pending_async_touch_move_, and increase the
2230 // count. In this case, we will first dispatch an async touchmove and 2230 // count. In this case, we will first dispatch an async touchmove and
2231 // then a touchstart. For the async touchmove, we will not send ack again. 2231 // then a touchstart. For the async touchmove, we will not send ack again.
2232 PressTouchPoint(30, 30); 2232 PressTouchPoint(30, 30);
2233 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2233 EXPECT_FALSE(HasPendingAsyncTouchMove());
2234 EXPECT_EQ(2U, all_sent_events().size()); 2234 EXPECT_EQ(2U, all_sent_events().size());
2235 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type); 2235 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[0].type());
2236 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType); 2236 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[0].dispatchType);
2237 EXPECT_EQ(10 + 10 * i, all_sent_events()[0].touches[0].position.x); 2237 EXPECT_EQ(10 + 10 * i, all_sent_events()[0].touches[0].position.x);
2238 EXPECT_EQ(10 + 10 * i, all_sent_events()[0].touches[0].position.y); 2238 EXPECT_EQ(10 + 10 * i, all_sent_events()[0].touches[0].position.y);
2239 EXPECT_EQ(static_cast<size_t>(i + 2), 2239 EXPECT_EQ(static_cast<size_t>(i + 2),
2240 uncancelable_touch_moves_pending_ack_count()); 2240 uncancelable_touch_moves_pending_ack_count());
2241 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[1].type); 2241 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[1].type());
2242 EXPECT_EQ(WebInputEvent::Blocking, all_sent_events()[1].dispatchType); 2242 EXPECT_EQ(WebInputEvent::Blocking, all_sent_events()[1].dispatchType);
2243 EXPECT_EQ(2U, GetAndResetSentEventCount()); 2243 EXPECT_EQ(2U, GetAndResetSentEventCount());
2244 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 2244 EXPECT_EQ(0U, GetAndResetAckedEventCount());
2245 2245
2246 SendTouchEventAckWithID(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, 2246 SendTouchEventAckWithID(INPUT_EVENT_ACK_STATE_NOT_CONSUMED,
2247 GetUniqueTouchEventID()); 2247 GetUniqueTouchEventID());
2248 EXPECT_EQ(0U, queued_event_count()); 2248 EXPECT_EQ(0U, queued_event_count());
2249 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2249 EXPECT_FALSE(HasPendingAsyncTouchMove());
2250 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2250 EXPECT_EQ(0U, GetAndResetSentEventCount());
2251 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2251 EXPECT_EQ(1U, GetAndResetAckedEventCount());
(...skipping 25 matching lines...) Expand all
2277 EXPECT_TRUE(HasPendingAsyncTouchMove()); 2277 EXPECT_TRUE(HasPendingAsyncTouchMove());
2278 2278
2279 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2279 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2280 2280
2281 // When we receive this ack from render, and the count is 0, so we can 2281 // When we receive this ack from render, and the count is 0, so we can
2282 // dispatch the pending_async_touchmove_. 2282 // dispatch the pending_async_touchmove_.
2283 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2283 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2284 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); 2284 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count());
2285 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2285 EXPECT_FALSE(HasPendingAsyncTouchMove());
2286 EXPECT_EQ(0U, queued_event_count()); 2286 EXPECT_EQ(0U, queued_event_count());
2287 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); 2287 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type());
2288 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); 2288 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2289 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2289 EXPECT_EQ(1U, GetAndResetSentEventCount());
2290 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 2290 EXPECT_EQ(0U, GetAndResetAckedEventCount());
2291 } 2291 }
2292 2292
2293 // Ensure that even when we receive the ack from render, we still need to wait 2293 // Ensure that even when we receive the ack from render, we still need to wait
2294 // for the interval expires to send the next async touchmove once the scroll 2294 // for the interval expires to send the next async touchmove once the scroll
2295 // starts. 2295 // starts.
2296 TEST_F(TouchEventQueueTest, DoNotIncreaseIfClientConsumeAsyncTouchMove) { 2296 TEST_F(TouchEventQueueTest, DoNotIncreaseIfClientConsumeAsyncTouchMove) {
2297 // Process a TouchStart 2297 // Process a TouchStart
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2340 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2340 EXPECT_EQ(0U, GetAndResetSentEventCount());
2341 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2341 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2342 2342
2343 // Dispatch the touch move when sufficient time has passed. Becasue the event 2343 // Dispatch the touch move when sufficient time has passed. Becasue the event
2344 // is consumed by client already, we would not increase the count and ack to 2344 // is consumed by client already, we would not increase the count and ack to
2345 // client again. 2345 // client again.
2346 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1); 2346 AdvanceTouchTime(kMinSecondsBetweenThrottledTouchmoves + 0.1);
2347 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); 2347 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED);
2348 MoveTouchPoint(0, 0, 50); 2348 MoveTouchPoint(0, 0, 50);
2349 EXPECT_FALSE(HasPendingAsyncTouchMove()); 2349 EXPECT_FALSE(HasPendingAsyncTouchMove());
2350 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); 2350 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type());
2351 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); 2351 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType);
2352 EXPECT_EQ(0U, queued_event_count()); 2352 EXPECT_EQ(0U, queued_event_count());
2353 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2353 EXPECT_EQ(1U, GetAndResetSentEventCount());
2354 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2354 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2355 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count()); 2355 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count());
2356 } 2356 }
2357 2357
2358 TEST_F(TouchEventQueueTest, TouchAbsorptionWithConsumedFirstMove) { 2358 TEST_F(TouchEventQueueTest, TouchAbsorptionWithConsumedFirstMove) {
2359 // Queue a TouchStart. 2359 // Queue a TouchStart.
2360 PressTouchPoint(0, 1); 2360 PressTouchPoint(0, 1);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
2501 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2501 EXPECT_EQ(1U, GetAndResetSentEventCount());
2502 2502
2503 // Receive ACK for the first three touch-events. 2503 // Receive ACK for the first three touch-events.
2504 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2504 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2505 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2505 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2506 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2506 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2507 EXPECT_EQ(1U, queued_event_count()); 2507 EXPECT_EQ(1U, queued_event_count());
2508 2508
2509 // Test current touches state before sending TouchMoves. 2509 // Test current touches state before sending TouchMoves.
2510 const WebTouchEvent& event1 = sent_event(); 2510 const WebTouchEvent& event1 = sent_event();
2511 EXPECT_EQ(WebInputEvent::TouchStart, event1.type); 2511 EXPECT_EQ(WebInputEvent::TouchStart, event1.type());
2512 EXPECT_EQ(WebTouchPoint::StateStationary, event1.touches[0].state); 2512 EXPECT_EQ(WebTouchPoint::StateStationary, event1.touches[0].state);
2513 EXPECT_EQ(WebTouchPoint::StateStationary, event1.touches[1].state); 2513 EXPECT_EQ(WebTouchPoint::StateStationary, event1.touches[1].state);
2514 EXPECT_EQ(WebTouchPoint::StateStationary, event1.touches[2].state); 2514 EXPECT_EQ(WebTouchPoint::StateStationary, event1.touches[2].state);
2515 EXPECT_EQ(WebTouchPoint::StatePressed, event1.touches[3].state); 2515 EXPECT_EQ(WebTouchPoint::StatePressed, event1.touches[3].state);
2516 2516
2517 // Move x-position for 1st touch, y-position for 2nd touch 2517 // Move x-position for 1st touch, y-position for 2nd touch
2518 // and do not move other touches. 2518 // and do not move other touches.
2519 MoveTouchPoints(0, 1.1f, 1.f, 1, 2.f, 20.001f); 2519 MoveTouchPoints(0, 1.1f, 1.f, 1, 2.f, 20.001f);
2520 MoveTouchPoints(2, 3.f, 3.f, 3, 4.f, 4.f); 2520 MoveTouchPoints(2, 3.f, 3.f, 3, 4.f, 4.f);
2521 EXPECT_EQ(2U, queued_event_count()); 2521 EXPECT_EQ(2U, queued_event_count());
2522 2522
2523 // Receive an ACK for the last TouchPress event. 2523 // Receive an ACK for the last TouchPress event.
2524 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2524 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2525 2525
2526 // 1st TouchMove is sent. Test for touches state. 2526 // 1st TouchMove is sent. Test for touches state.
2527 const WebTouchEvent& event2 = sent_event(); 2527 const WebTouchEvent& event2 = sent_event();
2528 EXPECT_EQ(WebInputEvent::TouchMove, event2.type); 2528 EXPECT_EQ(WebInputEvent::TouchMove, event2.type());
2529 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[0].state); 2529 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[0].state);
2530 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[1].state); 2530 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[1].state);
2531 EXPECT_EQ(WebTouchPoint::StateStationary, event2.touches[2].state); 2531 EXPECT_EQ(WebTouchPoint::StateStationary, event2.touches[2].state);
2532 EXPECT_EQ(WebTouchPoint::StateStationary, event2.touches[3].state); 2532 EXPECT_EQ(WebTouchPoint::StateStationary, event2.touches[3].state);
2533 2533
2534 // Move only 4th touch but not others. 2534 // Move only 4th touch but not others.
2535 MoveTouchPoints(0, 1.1f, 1.f, 1, 2.f, 20.001f); 2535 MoveTouchPoints(0, 1.1f, 1.f, 1, 2.f, 20.001f);
2536 MoveTouchPoints(2, 3.f, 3.f, 3, 4.1f, 4.1f); 2536 MoveTouchPoints(2, 3.f, 3.f, 3, 4.1f, 4.1f);
2537 2537
2538 // Receive an ACK for previous (1st) TouchMove. 2538 // Receive an ACK for previous (1st) TouchMove.
2539 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2539 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2540 2540
2541 // 2nd TouchMove is sent. Test for touches state. 2541 // 2nd TouchMove is sent. Test for touches state.
2542 const WebTouchEvent& event3 = sent_event(); 2542 const WebTouchEvent& event3 = sent_event();
2543 EXPECT_EQ(WebInputEvent::TouchMove, event3.type); 2543 EXPECT_EQ(WebInputEvent::TouchMove, event3.type());
2544 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[0].state); 2544 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[0].state);
2545 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[1].state); 2545 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[1].state);
2546 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[2].state); 2546 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[2].state);
2547 EXPECT_EQ(WebTouchPoint::StateMoved, event3.touches[3].state); 2547 EXPECT_EQ(WebTouchPoint::StateMoved, event3.touches[3].state);
2548 } 2548 }
2549 2549
2550 // Tests that touch point state is correct in TouchMove events 2550 // Tests that touch point state is correct in TouchMove events
2551 // when point properties other than position changed. 2551 // when point properties other than position changed.
2552 TEST_F(TouchEventQueueTest, PointerStatesWhenOtherThanPositionChanged) { 2552 TEST_F(TouchEventQueueTest, PointerStatesWhenOtherThanPositionChanged) {
2553 PressTouchPoint(1, 1); 2553 PressTouchPoint(1, 1);
2554 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2554 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2555 2555
2556 // Default initial radiusX/Y is (1.f, 1.f). 2556 // Default initial radiusX/Y is (1.f, 1.f).
2557 // Default initial rotationAngle is 1.f. 2557 // Default initial rotationAngle is 1.f.
2558 // Default initial force is 1.f. 2558 // Default initial force is 1.f.
2559 2559
2560 // Change touch point radius only. 2560 // Change touch point radius only.
2561 ChangeTouchPointRadius(0, 1.5f, 1.f); 2561 ChangeTouchPointRadius(0, 1.5f, 1.f);
2562 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2562 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2563 2563
2564 // TouchMove is sent. Test for pointer state. 2564 // TouchMove is sent. Test for pointer state.
2565 const WebTouchEvent& event1 = sent_event(); 2565 const WebTouchEvent& event1 = sent_event();
2566 EXPECT_EQ(WebInputEvent::TouchMove, event1.type); 2566 EXPECT_EQ(WebInputEvent::TouchMove, event1.type());
2567 EXPECT_EQ(WebTouchPoint::StateMoved, event1.touches[0].state); 2567 EXPECT_EQ(WebTouchPoint::StateMoved, event1.touches[0].state);
2568 2568
2569 // Change touch point force. 2569 // Change touch point force.
2570 ChangeTouchPointForce(0, 0.9f); 2570 ChangeTouchPointForce(0, 0.9f);
2571 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2571 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2572 2572
2573 // TouchMove is sent. Test for pointer state. 2573 // TouchMove is sent. Test for pointer state.
2574 const WebTouchEvent& event2 = sent_event(); 2574 const WebTouchEvent& event2 = sent_event();
2575 EXPECT_EQ(WebInputEvent::TouchMove, event2.type); 2575 EXPECT_EQ(WebInputEvent::TouchMove, event2.type());
2576 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[0].state); 2576 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[0].state);
2577 2577
2578 // Change touch point rotationAngle. 2578 // Change touch point rotationAngle.
2579 ChangeTouchPointRotationAngle(0, 1.1f); 2579 ChangeTouchPointRotationAngle(0, 1.1f);
2580 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2580 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2581 2581
2582 // TouchMove is sent. Test for pointer state. 2582 // TouchMove is sent. Test for pointer state.
2583 const WebTouchEvent& event3 = sent_event(); 2583 const WebTouchEvent& event3 = sent_event();
2584 EXPECT_EQ(WebInputEvent::TouchMove, event3.type); 2584 EXPECT_EQ(WebInputEvent::TouchMove, event3.type());
2585 EXPECT_EQ(WebTouchPoint::StateMoved, event3.touches[0].state); 2585 EXPECT_EQ(WebTouchPoint::StateMoved, event3.touches[0].state);
2586 2586
2587 EXPECT_EQ(0U, queued_event_count()); 2587 EXPECT_EQ(0U, queued_event_count());
2588 EXPECT_EQ(4U, GetAndResetSentEventCount()); 2588 EXPECT_EQ(4U, GetAndResetSentEventCount());
2589 EXPECT_EQ(4U, GetAndResetAckedEventCount()); 2589 EXPECT_EQ(4U, GetAndResetAckedEventCount());
2590 } 2590 }
2591 2591
2592 // Tests that TouchMoves are filtered when none of the points are changed. 2592 // Tests that TouchMoves are filtered when none of the points are changed.
2593 TEST_F(TouchEventQueueTest, FilterTouchMovesWhenNoPointerChanged) { 2593 TEST_F(TouchEventQueueTest, FilterTouchMovesWhenNoPointerChanged) {
2594 PressTouchPoint(1, 1); 2594 PressTouchPoint(1, 1);
2595 PressTouchPoint(2, 2); 2595 PressTouchPoint(2, 2);
2596 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2596 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2597 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2597 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2598 EXPECT_EQ(0U, queued_event_count()); 2598 EXPECT_EQ(0U, queued_event_count());
2599 EXPECT_EQ(2U, GetAndResetSentEventCount()); 2599 EXPECT_EQ(2U, GetAndResetSentEventCount());
2600 EXPECT_EQ(2U, GetAndResetAckedEventCount()); 2600 EXPECT_EQ(2U, GetAndResetAckedEventCount());
2601 2601
2602 // Move 1st touch point. 2602 // Move 1st touch point.
2603 MoveTouchPoint(0, 10, 10); 2603 MoveTouchPoint(0, 10, 10);
2604 EXPECT_EQ(1U, queued_event_count()); 2604 EXPECT_EQ(1U, queued_event_count());
2605 2605
2606 // TouchMove should be allowed and test for touches state. 2606 // TouchMove should be allowed and test for touches state.
2607 const WebTouchEvent& event1 = sent_event(); 2607 const WebTouchEvent& event1 = sent_event();
2608 EXPECT_EQ(WebInputEvent::TouchMove, event1.type); 2608 EXPECT_EQ(WebInputEvent::TouchMove, event1.type());
2609 EXPECT_EQ(WebTouchPoint::StateMoved, event1.touches[0].state); 2609 EXPECT_EQ(WebTouchPoint::StateMoved, event1.touches[0].state);
2610 EXPECT_EQ(WebTouchPoint::StateStationary, event1.touches[1].state); 2610 EXPECT_EQ(WebTouchPoint::StateStationary, event1.touches[1].state);
2611 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2611 EXPECT_EQ(1U, GetAndResetSentEventCount());
2612 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 2612 EXPECT_EQ(0U, GetAndResetAckedEventCount());
2613 2613
2614 // Do not really move any touch points, but use previous values. 2614 // Do not really move any touch points, but use previous values.
2615 MoveTouchPoint(0, 10, 10); 2615 MoveTouchPoint(0, 10, 10);
2616 ChangeTouchPointRadius(1, 1, 1); 2616 ChangeTouchPointRadius(1, 1, 1);
2617 MoveTouchPoint(1, 2, 2); 2617 MoveTouchPoint(1, 2, 2);
2618 EXPECT_EQ(2U, queued_event_count()); 2618 EXPECT_EQ(2U, queued_event_count());
2619 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2619 EXPECT_EQ(0U, GetAndResetSentEventCount());
2620 2620
2621 // Receive an ACK for 1st TouchMove. 2621 // Receive an ACK for 1st TouchMove.
2622 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2622 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2623 2623
2624 // Tries to forward TouchMove but should be filtered 2624 // Tries to forward TouchMove but should be filtered
2625 // when none of the touch points have changed. 2625 // when none of the touch points have changed.
2626 EXPECT_EQ(0U, queued_event_count()); 2626 EXPECT_EQ(0U, queued_event_count());
2627 EXPECT_EQ(0U, GetAndResetSentEventCount()); 2627 EXPECT_EQ(0U, GetAndResetSentEventCount());
2628 EXPECT_EQ(4U, GetAndResetAckedEventCount()); 2628 EXPECT_EQ(4U, GetAndResetAckedEventCount());
2629 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); 2629 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state());
2630 2630
2631 // Move 2nd touch point. 2631 // Move 2nd touch point.
2632 MoveTouchPoint(1, 3, 3); 2632 MoveTouchPoint(1, 3, 3);
2633 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2633 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2634 EXPECT_EQ(0U, queued_event_count()); 2634 EXPECT_EQ(0U, queued_event_count());
2635 2635
2636 // TouchMove should be allowed and test for touches state. 2636 // TouchMove should be allowed and test for touches state.
2637 const WebTouchEvent& event2 = sent_event(); 2637 const WebTouchEvent& event2 = sent_event();
2638 EXPECT_EQ(WebInputEvent::TouchMove, event2.type); 2638 EXPECT_EQ(WebInputEvent::TouchMove, event2.type());
2639 EXPECT_EQ(WebTouchPoint::StateStationary, event2.touches[0].state); 2639 EXPECT_EQ(WebTouchPoint::StateStationary, event2.touches[0].state);
2640 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[1].state); 2640 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[1].state);
2641 EXPECT_EQ(1U, GetAndResetSentEventCount()); 2641 EXPECT_EQ(1U, GetAndResetSentEventCount());
2642 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2642 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2643 } 2643 }
2644 2644
2645 // Tests that touch-scroll-notification is not pushed into an empty queue. 2645 // Tests that touch-scroll-notification is not pushed into an empty queue.
2646 TEST_F(TouchEventQueueTest, TouchScrollNotificationOrder_EmptyQueue) { 2646 TEST_F(TouchEventQueueTest, TouchScrollNotificationOrder_EmptyQueue) {
2647 PrependTouchScrollNotification(); 2647 PrependTouchScrollNotification();
2648 2648
(...skipping 13 matching lines...) Expand all
2662 // Send the touch-scroll-notification when 3 events are in the queue. 2662 // Send the touch-scroll-notification when 3 events are in the queue.
2663 PrependTouchScrollNotification(); 2663 PrependTouchScrollNotification();
2664 2664
2665 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 2665 EXPECT_EQ(0U, GetAndResetAckedEventCount());
2666 EXPECT_EQ(2U, queued_event_count()); 2666 EXPECT_EQ(2U, queued_event_count());
2667 2667
2668 // Receive an ACK for the touchstart. 2668 // Receive an ACK for the touchstart.
2669 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2669 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2670 2670
2671 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2671 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2672 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); 2672 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type());
2673 EXPECT_EQ(1U, queued_event_count()); 2673 EXPECT_EQ(1U, queued_event_count());
2674 2674
2675 // Receive an ACK for the touch-scroll-notification. 2675 // Receive an ACK for the touch-scroll-notification.
2676 SendTouchEventAck(INPUT_EVENT_ACK_STATE_IGNORED); 2676 SendTouchEventAck(INPUT_EVENT_ACK_STATE_IGNORED);
2677 2677
2678 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 2678 EXPECT_EQ(0U, GetAndResetAckedEventCount());
2679 EXPECT_EQ(0U, queued_event_count()); 2679 EXPECT_EQ(0U, queued_event_count());
2680 2680
2681 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[0].type); 2681 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[0].type());
2682 EXPECT_EQ(WebInputEvent::TouchScrollStarted, all_sent_events()[1].type); 2682 EXPECT_EQ(WebInputEvent::TouchScrollStarted, all_sent_events()[1].type());
2683 EXPECT_EQ(2U, GetAndResetSentEventCount()); 2683 EXPECT_EQ(2U, GetAndResetSentEventCount());
2684 } 2684 }
2685 2685
2686 // Tests touch-scroll-notification firing order when the event is placed in the 2686 // Tests touch-scroll-notification firing order when the event is placed in the
2687 // 2nd position in the touch queue between two events. 2687 // 2nd position in the touch queue between two events.
2688 TEST_F(TouchEventQueueTest, TouchScrollNotificationOrder_SecondPosition) { 2688 TEST_F(TouchEventQueueTest, TouchScrollNotificationOrder_SecondPosition) {
2689 PressTouchPoint(1, 1); 2689 PressTouchPoint(1, 1);
2690 MoveTouchPoint(0, 5, 5); 2690 MoveTouchPoint(0, 5, 5);
2691 ReleaseTouchPoint(0); 2691 ReleaseTouchPoint(0);
2692 2692
2693 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 2693 EXPECT_EQ(0U, GetAndResetAckedEventCount());
2694 EXPECT_EQ(3U, queued_event_count()); 2694 EXPECT_EQ(3U, queued_event_count());
2695 2695
2696 // Send the touch-scroll-notification when 3 events are in the queue. 2696 // Send the touch-scroll-notification when 3 events are in the queue.
2697 PrependTouchScrollNotification(); 2697 PrependTouchScrollNotification();
2698 2698
2699 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 2699 EXPECT_EQ(0U, GetAndResetAckedEventCount());
2700 EXPECT_EQ(4U, queued_event_count()); 2700 EXPECT_EQ(4U, queued_event_count());
2701 2701
2702 // Receive an ACK for the touchstart. 2702 // Receive an ACK for the touchstart.
2703 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2703 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2704 2704
2705 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2705 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2706 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); 2706 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type());
2707 EXPECT_EQ(3U, queued_event_count()); 2707 EXPECT_EQ(3U, queued_event_count());
2708 2708
2709 // Receive an ACK for the touch-scroll-notification. 2709 // Receive an ACK for the touch-scroll-notification.
2710 SendTouchEventAck(INPUT_EVENT_ACK_STATE_IGNORED); 2710 SendTouchEventAck(INPUT_EVENT_ACK_STATE_IGNORED);
2711 2711
2712 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 2712 EXPECT_EQ(0U, GetAndResetAckedEventCount());
2713 EXPECT_EQ(2U, queued_event_count()); 2713 EXPECT_EQ(2U, queued_event_count());
2714 2714
2715 // Receive an ACK for the touchmove. 2715 // Receive an ACK for the touchmove.
2716 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2716 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2717 2717
2718 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2718 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2719 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 2719 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type());
2720 EXPECT_EQ(1U, queued_event_count()); 2720 EXPECT_EQ(1U, queued_event_count());
2721 2721
2722 // Receive an ACK for the touchend. 2722 // Receive an ACK for the touchend.
2723 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2723 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2724 2724
2725 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 2725 EXPECT_EQ(1U, GetAndResetAckedEventCount());
2726 EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type); 2726 EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type());
2727 EXPECT_EQ(0U, queued_event_count()); 2727 EXPECT_EQ(0U, queued_event_count());
2728 2728
2729 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[0].type); 2729 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[0].type());
2730 EXPECT_EQ(WebInputEvent::TouchScrollStarted, all_sent_events()[1].type); 2730 EXPECT_EQ(WebInputEvent::TouchScrollStarted, all_sent_events()[1].type());
2731 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[2].type); 2731 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[2].type());
2732 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[3].type); 2732 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[3].type());
2733 EXPECT_EQ(4U, GetAndResetSentEventCount()); 2733 EXPECT_EQ(4U, GetAndResetSentEventCount());
2734 } 2734 }
2735 2735
2736 // Tests that if touchStartOrFirstTouchMove is correctly set up for touch 2736 // Tests that if touchStartOrFirstTouchMove is correctly set up for touch
2737 // events. 2737 // events.
2738 TEST_F(TouchEventQueueTest, TouchStartOrFirstTouchMove) { 2738 TEST_F(TouchEventQueueTest, TouchStartOrFirstTouchMove) {
2739 PressTouchPoint(1, 1); 2739 PressTouchPoint(1, 1);
2740 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2740 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2741 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); 2741 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type());
2742 EXPECT_TRUE(sent_event().touchStartOrFirstTouchMove); 2742 EXPECT_TRUE(sent_event().touchStartOrFirstTouchMove);
2743 2743
2744 MoveTouchPoint(0, 5, 5); 2744 MoveTouchPoint(0, 5, 5);
2745 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2745 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2746 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); 2746 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type());
2747 EXPECT_TRUE(sent_event().touchStartOrFirstTouchMove); 2747 EXPECT_TRUE(sent_event().touchStartOrFirstTouchMove);
2748 2748
2749 MoveTouchPoint(0, 15, 15); 2749 MoveTouchPoint(0, 15, 15);
2750 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2750 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2751 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); 2751 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type());
2752 EXPECT_FALSE(sent_event().touchStartOrFirstTouchMove); 2752 EXPECT_FALSE(sent_event().touchStartOrFirstTouchMove);
2753 2753
2754 ReleaseTouchPoint(0); 2754 ReleaseTouchPoint(0);
2755 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 2755 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
2756 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type); 2756 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type());
2757 EXPECT_FALSE(sent_event().touchStartOrFirstTouchMove); 2757 EXPECT_FALSE(sent_event().touchStartOrFirstTouchMove);
2758 } 2758 }
2759 2759
2760 } // namespace content 2760 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698