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

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

Issue 2158423002: Wheel scroll latching enabled behind flag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: unit_tests_fixed Created 4 years, 5 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 12 matching lines...) Expand all
23 using blink::WebInputEvent; 23 using blink::WebInputEvent;
24 using blink::WebMouseWheelEvent; 24 using blink::WebMouseWheelEvent;
25 25
26 namespace content { 26 namespace content {
27 namespace { 27 namespace {
28 28
29 const float kWheelScrollX = 10; 29 const float kWheelScrollX = 10;
30 const float kWheelScrollY = 12; 30 const float kWheelScrollY = 12;
31 const float kWheelScrollGlobalX = 50; 31 const float kWheelScrollGlobalX = 50;
32 const float kWheelScrollGlobalY = 72; 32 const float kWheelScrollGlobalY = 72;
33 const int64_t kScrollEndTimeoutMs = 100; 33 const bool kTouchpadScrollLating = true;
tdresser 2016/07/22 15:43:15 Spelling.
sahel 2016/07/25 15:54:53 Done.
34 const int64_t kScrollEndTimeoutMs = kTouchpadScrollLating ? 100 : 0;
34 35
35 base::TimeDelta DefaultScrollEndTimeoutDelay() { 36 base::TimeDelta DefaultScrollEndTimeoutDelay() {
36 return base::TimeDelta::FromMilliseconds(kScrollEndTimeoutMs); 37 return base::TimeDelta::FromMilliseconds(kScrollEndTimeoutMs);
37 } 38 }
38 39
39 #define EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event) \ 40 #define EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event) \
40 EXPECT_EQ(WebInputEvent::GestureScrollBegin, event->type); \ 41 EXPECT_EQ(WebInputEvent::GestureScrollBegin, event->type); \
41 EXPECT_EQ(kWheelScrollX, event->x); \ 42 EXPECT_EQ(kWheelScrollX, event->x); \
42 EXPECT_EQ(kWheelScrollY, event->y); \ 43 EXPECT_EQ(kWheelScrollY, event->y); \
43 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \ 44 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 EXPECT_EQ(WebInputEvent::MouseWheel, event->type); 140 EXPECT_EQ(WebInputEvent::MouseWheel, event->type);
140 141
141 } // namespace 142 } // namespace
142 143
143 class MouseWheelEventQueueTest : public testing::Test, 144 class MouseWheelEventQueueTest : public testing::Test,
144 public MouseWheelEventQueueClient { 145 public MouseWheelEventQueueClient {
145 public: 146 public:
146 MouseWheelEventQueueTest() 147 MouseWheelEventQueueTest()
147 : acked_event_count_(0), 148 : acked_event_count_(0),
148 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) { 149 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) {
149 queue_.reset(new MouseWheelEventQueue(this, kScrollEndTimeoutMs)); 150 queue_.reset(new MouseWheelEventQueue(this, kTouchpadScrollLating));
150 } 151 }
151 152
152 ~MouseWheelEventQueueTest() override {} 153 ~MouseWheelEventQueueTest() override {}
153 154
154 // MouseWheelEventQueueClient 155 // MouseWheelEventQueueClient
155 void SendMouseWheelEventImmediately( 156 void SendMouseWheelEventImmediately(
156 const MouseWheelEventWithLatencyInfo& event) override { 157 const MouseWheelEventWithLatencyInfo& event) override {
157 WebMouseWheelEvent* cloned_event = new WebMouseWheelEvent(); 158 WebMouseWheelEvent* cloned_event = new WebMouseWheelEvent();
158 std::unique_ptr<WebInputEvent> cloned_event_holder(cloned_event); 159 std::unique_ptr<WebInputEvent> cloned_event_holder(cloned_event);
159 *cloned_event = event.event; 160 *cloned_event = event.event;
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 const WebGestureEvent::ScrollUnits scroll_units = 309 const WebGestureEvent::ScrollUnits scroll_units =
309 high_precision ? WebGestureEvent::PrecisePixels 310 high_precision ? WebGestureEvent::PrecisePixels
310 : WebGestureEvent::Pixels; 311 : WebGestureEvent::Pixels;
311 312
312 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 313 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
313 kWheelScrollGlobalY, 1, 1, 0, high_precision, 314 kWheelScrollGlobalY, 1, 1, 0, high_precision,
314 WebMouseWheelEvent::PhaseBegan, 315 WebMouseWheelEvent::PhaseBegan,
315 WebMouseWheelEvent::PhaseNone); 316 WebMouseWheelEvent::PhaseNone);
316 EXPECT_EQ(1U, GetAndResetSentEventCount()); 317 EXPECT_EQ(1U, GetAndResetSentEventCount());
317 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 318 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
318 EXPECT_EQ(3U, all_sent_events().size()); 319 EXPECT_EQ(2U, all_sent_events().size());
319 EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(sent_gesture_event(0)); 320 EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(sent_gesture_event(0));
320 EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(sent_gesture_event(1)); 321 EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(sent_gesture_event(1));
321 EXPECT_SYNTHETIC_GESTURE_SCROLL_END(sent_gesture_event(2)); 322 EXPECT_EQ(2U, GetAndResetSentEventCount());
322 EXPECT_EQ(3U, GetAndResetSentEventCount());
323 323
324 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 324 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
325 kWheelScrollGlobalY, 5, 5, 0, high_precision, 325 kWheelScrollGlobalY, 5, 5, 0, high_precision,
326 WebMouseWheelEvent::PhaseChanged, 326 WebMouseWheelEvent::PhaseChanged,
327 WebMouseWheelEvent::PhaseNone); 327 WebMouseWheelEvent::PhaseNone);
328 EXPECT_EQ(1U, GetAndResetSentEventCount()); 328 EXPECT_EQ(1U, GetAndResetSentEventCount());
329 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 329 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
330 EXPECT_EQ(3U, all_sent_events().size()); 330 EXPECT_EQ(1U, all_sent_events().size());
331 EXPECT_SYNTHETIC_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 331 EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(sent_gesture_event(0));
332 EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(sent_gesture_event(1)); 332 EXPECT_EQ(1U, GetAndResetSentEventCount());
333 EXPECT_SYNTHETIC_GESTURE_SCROLL_END(sent_gesture_event(2));
334 EXPECT_EQ(3U, GetAndResetSentEventCount());
335 333
336 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 334 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
337 kWheelScrollGlobalY, 0, 0, 0, high_precision, 335 kWheelScrollGlobalY, 0, 0, 0, high_precision,
338 WebMouseWheelEvent::PhaseEnded, 336 WebMouseWheelEvent::PhaseEnded,
339 WebMouseWheelEvent::PhaseNone); 337 WebMouseWheelEvent::PhaseNone);
340 EXPECT_EQ(1U, GetAndResetSentEventCount()); 338 EXPECT_EQ(1U, GetAndResetSentEventCount());
341 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 339 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
342 EXPECT_EQ(2U, all_sent_events().size()); 340 EXPECT_EQ(1U, all_sent_events().size());
343 EXPECT_SYNTHETIC_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 341 EXPECT_GESTURE_SCROLL_END_WITH_PHASE(sent_gesture_event(0));
344 EXPECT_GESTURE_SCROLL_END_WITH_PHASE(sent_gesture_event(1)); 342 EXPECT_EQ(1U, GetAndResetSentEventCount());
345 EXPECT_EQ(2U, GetAndResetSentEventCount());
346 343
347 // Send a double phase end; OSX does it consistently. 344 // Send a double phase end; OSX does it consistently.
348 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 345 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
349 kWheelScrollGlobalY, 0, 0, 0, high_precision, 346 kWheelScrollGlobalY, 0, 0, 0, high_precision,
350 WebMouseWheelEvent::PhaseEnded, 347 WebMouseWheelEvent::PhaseEnded,
351 WebMouseWheelEvent::PhaseNone); 348 WebMouseWheelEvent::PhaseNone);
352 EXPECT_EQ(1U, GetAndResetSentEventCount()); 349 EXPECT_EQ(1U, GetAndResetSentEventCount());
353 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 350 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
354 EXPECT_EQ(0U, all_sent_events().size()); 351 EXPECT_EQ(0U, all_sent_events().size());
355 EXPECT_EQ(0U, GetAndResetSentEventCount()); 352 EXPECT_EQ(0U, GetAndResetSentEventCount());
356 353
357 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 354 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
358 kWheelScrollGlobalY, 5, 5, 0, high_precision, 355 kWheelScrollGlobalY, 5, 5, 0, high_precision,
359 WebMouseWheelEvent::PhaseNone, 356 WebMouseWheelEvent::PhaseNone,
360 WebMouseWheelEvent::PhaseBegan); 357 WebMouseWheelEvent::PhaseBegan);
361 EXPECT_EQ(1U, GetAndResetSentEventCount()); 358 EXPECT_EQ(1U, GetAndResetSentEventCount());
362 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 359 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
363 EXPECT_EQ(3U, all_sent_events().size()); 360 EXPECT_EQ(2U, all_sent_events().size());
364 EXPECT_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 361 EXPECT_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
365 EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); 362 EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(sent_gesture_event(1));
366 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(2)); 363 EXPECT_EQ(2U, GetAndResetSentEventCount());
367 EXPECT_EQ(3U, GetAndResetSentEventCount());
368 364
369 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 365 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
370 kWheelScrollGlobalY, 5, 5, 0, high_precision, 366 kWheelScrollGlobalY, 5, 5, 0, high_precision,
371 WebMouseWheelEvent::PhaseNone, 367 WebMouseWheelEvent::PhaseNone,
372 WebMouseWheelEvent::PhaseChanged); 368 WebMouseWheelEvent::PhaseChanged);
373 EXPECT_EQ(1U, GetAndResetSentEventCount()); 369 EXPECT_EQ(1U, GetAndResetSentEventCount());
374 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 370 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
375 EXPECT_EQ(3U, all_sent_events().size()); 371 EXPECT_EQ(1U, all_sent_events().size());
376 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 372 EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(sent_gesture_event(0));
377 EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); 373 EXPECT_EQ(1U, GetAndResetSentEventCount());
378 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(2));
379 EXPECT_EQ(3U, GetAndResetSentEventCount());
380 374
381 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, 375 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX,
382 kWheelScrollGlobalY, 0, 0, 0, high_precision, 376 kWheelScrollGlobalY, 0, 0, 0, high_precision,
383 WebMouseWheelEvent::PhaseNone, 377 WebMouseWheelEvent::PhaseNone,
384 WebMouseWheelEvent::PhaseEnded); 378 WebMouseWheelEvent::PhaseEnded);
385 EXPECT_EQ(1U, GetAndResetSentEventCount()); 379 EXPECT_EQ(1U, GetAndResetSentEventCount());
386 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 380 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
387 EXPECT_EQ(2U, all_sent_events().size()); 381 EXPECT_EQ(1U, all_sent_events().size());
388 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 382 EXPECT_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(0));
389 EXPECT_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(1)); 383 EXPECT_EQ(1U, GetAndResetSentEventCount());
390 EXPECT_EQ(2U, GetAndResetSentEventCount());
391 } 384 }
392 385
393 std::unique_ptr<MouseWheelEventQueue> queue_; 386 std::unique_ptr<MouseWheelEventQueue> queue_;
394 std::vector<std::unique_ptr<WebInputEvent>> sent_events_; 387 std::vector<std::unique_ptr<WebInputEvent>> sent_events_;
395 size_t acked_event_count_; 388 size_t acked_event_count_;
396 InputEventAckState last_acked_event_state_; 389 InputEventAckState last_acked_event_state_;
397 base::MessageLoopForUI message_loop_; 390 base::MessageLoopForUI message_loop_;
398 WebMouseWheelEvent last_acked_event_; 391 WebMouseWheelEvent last_acked_event_;
399 }; 392 };
400 393
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 545 EXPECT_EQ(1U, GetAndResetAckedEventCount());
553 EXPECT_EQ(2U, all_sent_events().size()); 546 EXPECT_EQ(2U, all_sent_events().size());
554 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); 547 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0));
555 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); 548 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1));
556 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); 549 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX);
557 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); 550 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY);
558 EXPECT_EQ(2U, GetAndResetSentEventCount()); 551 EXPECT_EQ(2U, GetAndResetSentEventCount());
559 } 552 }
560 553
561 } // namespace content 554 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698