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

Side by Side Diff: content/browser/renderer_host/input/mouse_wheel_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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/mouse_wheel_event_queue.h" 5 #include "content/browser/renderer_host/input/mouse_wheel_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 14 matching lines...) Expand all
25 using blink::WebMouseWheelEvent; 25 using blink::WebMouseWheelEvent;
26 26
27 namespace content { 27 namespace content {
28 namespace { 28 namespace {
29 29
30 const float kWheelScrollX = 10; 30 const float kWheelScrollX = 10;
31 const float kWheelScrollY = 12; 31 const float kWheelScrollY = 12;
32 const float kWheelScrollGlobalX = 50; 32 const float kWheelScrollGlobalX = 50;
33 const float kWheelScrollGlobalY = 72; 33 const float kWheelScrollGlobalY = 72;
34 34
35 #define EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event) \ 35 #define EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event) \
36 EXPECT_EQ(WebInputEvent::GestureScrollBegin, event->type); \ 36 EXPECT_EQ(WebInputEvent::GestureScrollBegin, event->type()); \
37 EXPECT_EQ(kWheelScrollX, event->x); \ 37 EXPECT_EQ(kWheelScrollX, event->x); \
38 EXPECT_EQ(kWheelScrollY, event->y); \ 38 EXPECT_EQ(kWheelScrollY, event->y); \
39 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \ 39 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \
40 EXPECT_EQ(kWheelScrollGlobalY, event->globalY); \ 40 EXPECT_EQ(kWheelScrollGlobalY, event->globalY); \
41 EXPECT_EQ(scroll_units, event->data.scrollBegin.deltaHintUnits); 41 EXPECT_EQ(scroll_units, event->data.scrollBegin.deltaHintUnits);
42 42
43 #define EXPECT_GESTURE_SCROLL_BEGIN(event) \ 43 #define EXPECT_GESTURE_SCROLL_BEGIN(event) \
44 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ 44 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \
45 EXPECT_FALSE(event->data.scrollBegin.synthetic); \ 45 EXPECT_FALSE(event->data.scrollBegin.synthetic); \
46 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \ 46 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \
47 event->data.scrollBegin.inertialPhase); 47 event->data.scrollBegin.inertialPhase);
48 48
49 #define EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(event) \ 49 #define EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(event) \
50 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ 50 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \
(...skipping 13 matching lines...) Expand all
64 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ 64 EXPECT_EQ(WebGestureEvent::MomentumPhase, \
65 event->data.scrollBegin.inertialPhase); 65 event->data.scrollBegin.inertialPhase);
66 66
67 #define EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(event) \ 67 #define EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(event) \
68 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ 68 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \
69 EXPECT_TRUE(event->data.scrollBegin.synthetic); \ 69 EXPECT_TRUE(event->data.scrollBegin.synthetic); \
70 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ 70 EXPECT_EQ(WebGestureEvent::MomentumPhase, \
71 event->data.scrollBegin.inertialPhase); 71 event->data.scrollBegin.inertialPhase);
72 72
73 #define EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event) \ 73 #define EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event) \
74 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, event->type); \ 74 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, event->type()); \
75 EXPECT_EQ(scroll_units, event->data.scrollUpdate.deltaUnits); \ 75 EXPECT_EQ(scroll_units, event->data.scrollUpdate.deltaUnits); \
76 EXPECT_EQ(kWheelScrollX, event->x); \ 76 EXPECT_EQ(kWheelScrollX, event->x); \
77 EXPECT_EQ(kWheelScrollY, event->y); \ 77 EXPECT_EQ(kWheelScrollY, event->y); \
78 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \ 78 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \
79 EXPECT_EQ(kWheelScrollGlobalY, event->globalY); 79 EXPECT_EQ(kWheelScrollGlobalY, event->globalY);
80 80
81 #define EXPECT_GESTURE_SCROLL_UPDATE(event) \ 81 #define EXPECT_GESTURE_SCROLL_UPDATE(event) \
82 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ 82 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \
83 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \ 83 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \
84 event->data.scrollUpdate.inertialPhase); 84 event->data.scrollUpdate.inertialPhase);
85 85
86 #define EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(event) \ 86 #define EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(event) \
87 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ 87 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \
88 EXPECT_EQ(WebGestureEvent::NonMomentumPhase, \ 88 EXPECT_EQ(WebGestureEvent::NonMomentumPhase, \
89 event->data.scrollUpdate.inertialPhase); 89 event->data.scrollUpdate.inertialPhase);
90 90
91 #define EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(event) \ 91 #define EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(event) \
92 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ 92 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \
93 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ 93 EXPECT_EQ(WebGestureEvent::MomentumPhase, \
94 event->data.scrollUpdate.inertialPhase); 94 event->data.scrollUpdate.inertialPhase);
95 95
96 #define EXPECT_GESTURE_SCROLL_END_IMPL(event) \ 96 #define EXPECT_GESTURE_SCROLL_END_IMPL(event) \
97 EXPECT_EQ(WebInputEvent::GestureScrollEnd, event->type); \ 97 EXPECT_EQ(WebInputEvent::GestureScrollEnd, event->type()); \
98 EXPECT_EQ(scroll_units, event->data.scrollEnd.deltaUnits); \ 98 EXPECT_EQ(scroll_units, event->data.scrollEnd.deltaUnits); \
99 EXPECT_EQ(kWheelScrollX, event->x); \ 99 EXPECT_EQ(kWheelScrollX, event->x); \
100 EXPECT_EQ(kWheelScrollY, event->y); \ 100 EXPECT_EQ(kWheelScrollY, event->y); \
101 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \ 101 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \
102 EXPECT_EQ(kWheelScrollGlobalY, event->globalY); 102 EXPECT_EQ(kWheelScrollGlobalY, event->globalY);
103 103
104 #define EXPECT_GESTURE_SCROLL_END(event) \ 104 #define EXPECT_GESTURE_SCROLL_END(event) \
105 EXPECT_GESTURE_SCROLL_END_IMPL(event); \ 105 EXPECT_GESTURE_SCROLL_END_IMPL(event); \
106 EXPECT_FALSE(event->data.scrollEnd.synthetic); \ 106 EXPECT_FALSE(event->data.scrollEnd.synthetic); \
107 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \ 107 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \
(...skipping 17 matching lines...) Expand all
125 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ 125 EXPECT_EQ(WebGestureEvent::MomentumPhase, \
126 event->data.scrollEnd.inertialPhase); 126 event->data.scrollEnd.inertialPhase);
127 127
128 #define EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(event) \ 128 #define EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(event) \
129 EXPECT_GESTURE_SCROLL_END_IMPL(event); \ 129 EXPECT_GESTURE_SCROLL_END_IMPL(event); \
130 EXPECT_TRUE(event->data.scrollEnd.synthetic); \ 130 EXPECT_TRUE(event->data.scrollEnd.synthetic); \
131 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ 131 EXPECT_EQ(WebGestureEvent::MomentumPhase, \
132 event->data.scrollEnd.inertialPhase); 132 event->data.scrollEnd.inertialPhase);
133 133
134 #define EXPECT_MOUSE_WHEEL(event) \ 134 #define EXPECT_MOUSE_WHEEL(event) \
135 EXPECT_EQ(WebInputEvent::MouseWheel, event->type); 135 EXPECT_EQ(WebInputEvent::MouseWheel, event->type());
136 136
137 } // namespace 137 } // namespace
138 138
139 class MouseWheelEventQueueTest : public testing::TestWithParam<bool>, 139 class MouseWheelEventQueueTest : public testing::TestWithParam<bool>,
140 public MouseWheelEventQueueClient { 140 public MouseWheelEventQueueClient {
141 public: 141 public:
142 MouseWheelEventQueueTest() 142 MouseWheelEventQueueTest()
143 : acked_event_count_(0), 143 : acked_event_count_(0),
144 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) { 144 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) {
145 scroll_latching_enabled_ = GetParam(); 145 scroll_latching_enabled_ = GetParam();
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 kWheelScrollGlobalY, 5, 5, 0, high_precision); 288 kWheelScrollGlobalY, 5, 5, 0, high_precision);
289 EXPECT_EQ(1U, queued_event_count()); 289 EXPECT_EQ(1U, queued_event_count());
290 EXPECT_TRUE(event_in_flight()); 290 EXPECT_TRUE(event_in_flight());
291 EXPECT_EQ(0U, GetAndResetSentEventCount()); 291 EXPECT_EQ(0U, GetAndResetSentEventCount());
292 292
293 // Receive an ACK for the mouse wheel event and release the next 293 // Receive an ACK for the mouse wheel event and release the next
294 // mouse wheel event. 294 // mouse wheel event.
295 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 295 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
296 EXPECT_EQ(0U, queued_event_count()); 296 EXPECT_EQ(0U, queued_event_count());
297 EXPECT_TRUE(event_in_flight()); 297 EXPECT_TRUE(event_in_flight());
298 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 298 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type());
299 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 299 EXPECT_EQ(1U, GetAndResetAckedEventCount());
300 EXPECT_EQ(3U, all_sent_events().size()); 300 EXPECT_EQ(3U, all_sent_events().size());
301 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 301 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
302 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); 302 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1));
303 EXPECT_MOUSE_WHEEL(sent_input_event(2)); 303 EXPECT_MOUSE_WHEEL(sent_input_event(2));
304 EXPECT_EQ(3U, GetAndResetSentEventCount()); 304 EXPECT_EQ(3U, GetAndResetSentEventCount());
305 305
306 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); 306 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2);
307 EXPECT_EQ(1U, all_sent_events().size()); 307 EXPECT_EQ(1U, all_sent_events().size());
308 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); 308 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0));
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 EXPECT_EQ(1U, queued_event_count()); 459 EXPECT_EQ(1U, queued_event_count());
460 EXPECT_TRUE(event_in_flight()); 460 EXPECT_TRUE(event_in_flight());
461 EXPECT_EQ(0U, GetAndResetSentEventCount()); 461 EXPECT_EQ(0U, GetAndResetSentEventCount());
462 462
463 // Receive an ACK for the first mouse wheel event. 463 // Receive an ACK for the first mouse wheel event.
464 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 464 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
465 EXPECT_EQ(0U, queued_event_count()); 465 EXPECT_EQ(0U, queued_event_count());
466 EXPECT_TRUE(event_in_flight()); 466 EXPECT_TRUE(event_in_flight());
467 EXPECT_EQ(1U, GetAndResetSentEventCount()); 467 EXPECT_EQ(1U, GetAndResetSentEventCount());
468 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 468 EXPECT_EQ(1U, GetAndResetAckedEventCount());
469 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 469 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type());
470 470
471 // Receive an ACK for the second mouse wheel event. 471 // Receive an ACK for the second mouse wheel event.
472 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); 472 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
473 EXPECT_EQ(0U, queued_event_count()); 473 EXPECT_EQ(0U, queued_event_count());
474 EXPECT_FALSE(event_in_flight()); 474 EXPECT_FALSE(event_in_flight());
475 EXPECT_EQ(0U, GetAndResetSentEventCount()); 475 EXPECT_EQ(0U, GetAndResetSentEventCount());
476 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 476 EXPECT_EQ(1U, GetAndResetAckedEventCount());
477 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 477 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type());
478 } 478 }
479 479
480 TEST_P(MouseWheelEventQueueTest, GestureSending) { 480 TEST_P(MouseWheelEventQueueTest, GestureSending) {
481 GestureSendingTest(false); 481 GestureSendingTest(false);
482 } 482 }
483 483
484 TEST_P(MouseWheelEventQueueTest, GestureSendingPrecisePixels) { 484 TEST_P(MouseWheelEventQueueTest, GestureSendingPrecisePixels) {
485 GestureSendingTest(true); 485 GestureSendingTest(true);
486 } 486 }
487 487
(...skipping 12 matching lines...) Expand all
500 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 500 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
501 kWheelScrollGlobalY, 1, 1, 0, false); 501 kWheelScrollGlobalY, 1, 1, 0, false);
502 EXPECT_EQ(0U, queued_event_count()); 502 EXPECT_EQ(0U, queued_event_count());
503 EXPECT_TRUE(event_in_flight()); 503 EXPECT_TRUE(event_in_flight());
504 EXPECT_EQ(1U, GetAndResetSentEventCount()); 504 EXPECT_EQ(1U, GetAndResetSentEventCount());
505 505
506 // Receive an ACK for the mouse wheel event. 506 // Receive an ACK for the mouse wheel event.
507 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 507 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
508 EXPECT_EQ(0U, queued_event_count()); 508 EXPECT_EQ(0U, queued_event_count());
509 EXPECT_FALSE(event_in_flight()); 509 EXPECT_FALSE(event_in_flight());
510 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 510 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type());
511 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 511 EXPECT_EQ(1U, GetAndResetAckedEventCount());
512 EXPECT_EQ(2U, all_sent_events().size()); 512 EXPECT_EQ(2U, all_sent_events().size());
513 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 513 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
514 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); 514 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1));
515 EXPECT_EQ(2U, GetAndResetSentEventCount()); 515 EXPECT_EQ(2U, GetAndResetSentEventCount());
516 516
517 // Ensure that a gesture scroll begin terminates the current scroll event. 517 // Ensure that a gesture scroll begin terminates the current scroll event.
518 SendGestureEvent(WebInputEvent::GestureScrollBegin); 518 SendGestureEvent(WebInputEvent::GestureScrollBegin);
519 EXPECT_EQ(1U, all_sent_events().size()); 519 EXPECT_EQ(1U, all_sent_events().size());
520 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); 520 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0));
521 EXPECT_EQ(1U, GetAndResetSentEventCount()); 521 EXPECT_EQ(1U, GetAndResetSentEventCount());
522 522
523 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 523 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
524 kWheelScrollGlobalY, 1, 1, 0, false); 524 kWheelScrollGlobalY, 1, 1, 0, false);
525 EXPECT_EQ(0U, queued_event_count()); 525 EXPECT_EQ(0U, queued_event_count());
526 EXPECT_TRUE(event_in_flight()); 526 EXPECT_TRUE(event_in_flight());
527 EXPECT_EQ(1U, GetAndResetSentEventCount()); 527 EXPECT_EQ(1U, GetAndResetSentEventCount());
528 528
529 // New mouse wheel events won't cause gestures because a scroll 529 // New mouse wheel events won't cause gestures because a scroll
530 // is already in progress by another device. 530 // is already in progress by another device.
531 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 531 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
532 EXPECT_EQ(0U, queued_event_count()); 532 EXPECT_EQ(0U, queued_event_count());
533 EXPECT_FALSE(event_in_flight()); 533 EXPECT_FALSE(event_in_flight());
534 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 534 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type());
535 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 535 EXPECT_EQ(1U, GetAndResetAckedEventCount());
536 EXPECT_EQ(0U, all_sent_events().size()); 536 EXPECT_EQ(0U, all_sent_events().size());
537 537
538 SendGestureEvent(WebInputEvent::GestureScrollEnd); 538 SendGestureEvent(WebInputEvent::GestureScrollEnd);
539 EXPECT_EQ(0U, all_sent_events().size()); 539 EXPECT_EQ(0U, all_sent_events().size());
540 540
541 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 541 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
542 kWheelScrollGlobalY, 1, 1, 0, false); 542 kWheelScrollGlobalY, 1, 1, 0, false);
543 EXPECT_EQ(0U, queued_event_count()); 543 EXPECT_EQ(0U, queued_event_count());
544 EXPECT_TRUE(event_in_flight()); 544 EXPECT_TRUE(event_in_flight());
545 EXPECT_EQ(1U, GetAndResetSentEventCount()); 545 EXPECT_EQ(1U, GetAndResetSentEventCount());
546 546
547 // Receive an ACK for the mouse wheel event. 547 // Receive an ACK for the mouse wheel event.
548 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 548 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
549 EXPECT_EQ(0U, queued_event_count()); 549 EXPECT_EQ(0U, queued_event_count());
550 EXPECT_FALSE(event_in_flight()); 550 EXPECT_FALSE(event_in_flight());
551 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 551 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type());
552 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 552 EXPECT_EQ(1U, GetAndResetAckedEventCount());
553 EXPECT_EQ(2U, all_sent_events().size()); 553 EXPECT_EQ(2U, all_sent_events().size());
554 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 554 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
555 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); 555 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1));
556 EXPECT_EQ(2U, GetAndResetSentEventCount()); 556 EXPECT_EQ(2U, GetAndResetSentEventCount());
557 } 557 }
558 558
559 TEST_P(MouseWheelEventQueueTest, GestureRailScrolling) { 559 TEST_P(MouseWheelEventQueueTest, GestureRailScrolling) {
560 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; 560 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels;
561 561
562 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 562 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
563 kWheelScrollGlobalY, 1, 1, 0, false, 563 kWheelScrollGlobalY, 1, 1, 0, false,
564 WebInputEvent::RailsModeHorizontal); 564 WebInputEvent::RailsModeHorizontal);
565 EXPECT_EQ(0U, queued_event_count()); 565 EXPECT_EQ(0U, queued_event_count());
566 EXPECT_TRUE(event_in_flight()); 566 EXPECT_TRUE(event_in_flight());
567 EXPECT_EQ(1U, GetAndResetSentEventCount()); 567 EXPECT_EQ(1U, GetAndResetSentEventCount());
568 568
569 // Receive an ACK for the mouse wheel event. 569 // Receive an ACK for the mouse wheel event.
570 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 570 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
571 EXPECT_EQ(0U, queued_event_count()); 571 EXPECT_EQ(0U, queued_event_count());
572 EXPECT_FALSE(event_in_flight()); 572 EXPECT_FALSE(event_in_flight());
573 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 573 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type());
574 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 574 EXPECT_EQ(1U, GetAndResetAckedEventCount());
575 EXPECT_EQ(2U, all_sent_events().size()); 575 EXPECT_EQ(2U, all_sent_events().size());
576 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 576 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
577 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); 577 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1));
578 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaX); 578 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaX);
579 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaY); 579 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaY);
580 EXPECT_EQ(2U, GetAndResetSentEventCount()); 580 EXPECT_EQ(2U, GetAndResetSentEventCount());
581 581
582 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); 582 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2);
583 EXPECT_EQ(1U, all_sent_events().size()); 583 EXPECT_EQ(1U, all_sent_events().size());
584 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); 584 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0));
585 EXPECT_EQ(1U, GetAndResetSentEventCount()); 585 EXPECT_EQ(1U, GetAndResetSentEventCount());
586 586
587 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 587 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
588 kWheelScrollGlobalY, 1, 1, 0, false, 588 kWheelScrollGlobalY, 1, 1, 0, false,
589 WebInputEvent::RailsModeVertical); 589 WebInputEvent::RailsModeVertical);
590 EXPECT_EQ(0U, queued_event_count()); 590 EXPECT_EQ(0U, queued_event_count());
591 EXPECT_TRUE(event_in_flight()); 591 EXPECT_TRUE(event_in_flight());
592 EXPECT_EQ(1U, GetAndResetSentEventCount()); 592 EXPECT_EQ(1U, GetAndResetSentEventCount());
593 593
594 // Receive an ACK for the mouse wheel event. 594 // Receive an ACK for the mouse wheel event.
595 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 595 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
596 EXPECT_EQ(0U, queued_event_count()); 596 EXPECT_EQ(0U, queued_event_count());
597 EXPECT_FALSE(event_in_flight()); 597 EXPECT_FALSE(event_in_flight());
598 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 598 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type());
599 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 599 EXPECT_EQ(1U, GetAndResetAckedEventCount());
600 EXPECT_EQ(2U, all_sent_events().size()); 600 EXPECT_EQ(2U, all_sent_events().size());
601 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 601 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
602 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); 602 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1));
603 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); 603 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX);
604 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); 604 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY);
605 EXPECT_EQ(2U, GetAndResetSentEventCount()); 605 EXPECT_EQ(2U, GetAndResetSentEventCount());
606 } 606 }
607 607
608 TEST_P(MouseWheelEventQueueTest, WheelScrollLatching) { 608 TEST_P(MouseWheelEventQueueTest, WheelScrollLatching) {
609 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; 609 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels;
610 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 610 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
611 kWheelScrollGlobalY, 1, 1, 0, false, 611 kWheelScrollGlobalY, 1, 1, 0, false,
612 WebInputEvent::RailsModeVertical); 612 WebInputEvent::RailsModeVertical);
613 EXPECT_EQ(0U, queued_event_count()); 613 EXPECT_EQ(0U, queued_event_count());
614 EXPECT_TRUE(event_in_flight()); 614 EXPECT_TRUE(event_in_flight());
615 EXPECT_EQ(1U, GetAndResetSentEventCount()); 615 EXPECT_EQ(1U, GetAndResetSentEventCount());
616 616
617 // Receive an ACK for the mouse wheel event. 617 // Receive an ACK for the mouse wheel event.
618 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 618 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
619 EXPECT_EQ(0U, queued_event_count()); 619 EXPECT_EQ(0U, queued_event_count());
620 EXPECT_FALSE(event_in_flight()); 620 EXPECT_FALSE(event_in_flight());
621 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 621 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type());
622 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 622 EXPECT_EQ(1U, GetAndResetAckedEventCount());
623 EXPECT_EQ(2U, all_sent_events().size()); 623 EXPECT_EQ(2U, all_sent_events().size());
624 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 624 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
625 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); 625 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1));
626 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); 626 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX);
627 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); 627 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY);
628 EXPECT_EQ(2U, GetAndResetSentEventCount()); 628 EXPECT_EQ(2U, GetAndResetSentEventCount());
629 629
630 RunTasksAndWait(base::TimeDelta::FromMilliseconds(1)); 630 RunTasksAndWait(base::TimeDelta::FromMilliseconds(1));
631 if (!scroll_latching_enabled_) { 631 if (!scroll_latching_enabled_) {
632 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); 632 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0));
633 EXPECT_EQ(1U, GetAndResetSentEventCount()); 633 EXPECT_EQ(1U, GetAndResetSentEventCount());
634 } else { 634 } else {
635 EXPECT_EQ(0U, GetAndResetSentEventCount()); 635 EXPECT_EQ(0U, GetAndResetSentEventCount());
636 } 636 }
637 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 637 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
638 kWheelScrollGlobalY, 1, 1, 0, false, 638 kWheelScrollGlobalY, 1, 1, 0, false,
639 WebInputEvent::RailsModeVertical); 639 WebInputEvent::RailsModeVertical);
640 EXPECT_EQ(0U, queued_event_count()); 640 EXPECT_EQ(0U, queued_event_count());
641 EXPECT_TRUE(event_in_flight()); 641 EXPECT_TRUE(event_in_flight());
642 EXPECT_EQ(1U, GetAndResetSentEventCount()); 642 EXPECT_EQ(1U, GetAndResetSentEventCount());
643 643
644 // Receive an ACK for the mouse wheel event. 644 // Receive an ACK for the mouse wheel event.
645 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 645 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
646 EXPECT_EQ(0U, queued_event_count()); 646 EXPECT_EQ(0U, queued_event_count());
647 EXPECT_FALSE(event_in_flight()); 647 EXPECT_FALSE(event_in_flight());
648 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); 648 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type());
649 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 649 EXPECT_EQ(1U, GetAndResetAckedEventCount());
650 650
651 int updateEventIndex = -1; 651 int updateEventIndex = -1;
652 if (!scroll_latching_enabled_) { 652 if (!scroll_latching_enabled_) {
653 EXPECT_EQ(2U, all_sent_events().size()); 653 EXPECT_EQ(2U, all_sent_events().size());
654 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 654 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
655 updateEventIndex = 1; 655 updateEventIndex = 1;
656 } else { 656 } else {
657 // Scroll latching: no new scroll begin expected. 657 // Scroll latching: no new scroll begin expected.
658 EXPECT_EQ(1U, all_sent_events().size()); 658 EXPECT_EQ(1U, all_sent_events().size());
659 updateEventIndex = 0; 659 updateEventIndex = 0;
660 } 660 }
661 EXPECT_GE(updateEventIndex, 0); 661 EXPECT_GE(updateEventIndex, 0);
662 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(updateEventIndex)); 662 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(updateEventIndex));
663 EXPECT_EQ(0U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaX); 663 EXPECT_EQ(0U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaX);
664 EXPECT_EQ(1U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaY); 664 EXPECT_EQ(1U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaY);
665 EXPECT_EQ(static_cast<size_t>(updateEventIndex + 1), 665 EXPECT_EQ(static_cast<size_t>(updateEventIndex + 1),
666 GetAndResetSentEventCount()); 666 GetAndResetSentEventCount());
667 } 667 }
668 668
669 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests, 669 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests,
670 MouseWheelEventQueueTest, 670 MouseWheelEventQueueTest,
671 testing::Bool()); 671 testing::Bool());
672 672
673 } // namespace content 673 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698