| OLD | NEW |
| 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 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 const WebGestureEvent::ScrollUnits scroll_units = | 311 const WebGestureEvent::ScrollUnits scroll_units = |
| 312 high_precision ? WebGestureEvent::PrecisePixels | 312 high_precision ? WebGestureEvent::PrecisePixels |
| 313 : WebGestureEvent::Pixels; | 313 : WebGestureEvent::Pixels; |
| 314 | 314 |
| 315 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 315 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 316 kWheelScrollGlobalY, 1, 1, 0, high_precision, | 316 kWheelScrollGlobalY, 1, 1, 0, high_precision, |
| 317 WebMouseWheelEvent::PhaseBegan, | 317 WebMouseWheelEvent::PhaseBegan, |
| 318 WebMouseWheelEvent::PhaseNone); | 318 WebMouseWheelEvent::PhaseNone); |
| 319 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 319 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 320 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 320 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 321 if (scroll_latching_enabled_) { | 321 EXPECT_EQ(3U, all_sent_events().size()); |
| 322 EXPECT_EQ(2U, all_sent_events().size()); | 322 EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(sent_gesture_event(0)); |
| 323 EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(sent_gesture_event(0)); | 323 EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(sent_gesture_event(1)); |
| 324 EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(sent_gesture_event(1)); | 324 EXPECT_SYNTHETIC_GESTURE_SCROLL_END(sent_gesture_event(2)); |
| 325 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 325 EXPECT_EQ(3U, GetAndResetSentEventCount()); |
| 326 } else { | |
| 327 EXPECT_EQ(3U, all_sent_events().size()); | |
| 328 EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(sent_gesture_event(0)); | |
| 329 EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(sent_gesture_event(1)); | |
| 330 EXPECT_SYNTHETIC_GESTURE_SCROLL_END(sent_gesture_event(2)); | |
| 331 EXPECT_EQ(3U, GetAndResetSentEventCount()); | |
| 332 } | |
| 333 | 326 |
| 334 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 327 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 335 kWheelScrollGlobalY, 5, 5, 0, high_precision, | 328 kWheelScrollGlobalY, 5, 5, 0, high_precision, |
| 336 WebMouseWheelEvent::PhaseChanged, | 329 WebMouseWheelEvent::PhaseChanged, |
| 337 WebMouseWheelEvent::PhaseNone); | 330 WebMouseWheelEvent::PhaseNone); |
| 338 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 331 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 339 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 332 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 340 if (scroll_latching_enabled_) { | 333 EXPECT_EQ(3U, all_sent_events().size()); |
| 341 EXPECT_EQ(1U, all_sent_events().size()); | 334 EXPECT_SYNTHETIC_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 342 EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(sent_gesture_event(0)); | 335 EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(sent_gesture_event(1)); |
| 343 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 336 EXPECT_SYNTHETIC_GESTURE_SCROLL_END(sent_gesture_event(2)); |
| 344 } else { | 337 EXPECT_EQ(3U, GetAndResetSentEventCount()); |
| 345 EXPECT_EQ(3U, all_sent_events().size()); | 338 |
| 346 EXPECT_SYNTHETIC_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | |
| 347 EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(sent_gesture_event(1)); | |
| 348 EXPECT_SYNTHETIC_GESTURE_SCROLL_END(sent_gesture_event(2)); | |
| 349 EXPECT_EQ(3U, GetAndResetSentEventCount()); | |
| 350 } | |
| 351 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 339 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 352 kWheelScrollGlobalY, 0, 0, 0, high_precision, | 340 kWheelScrollGlobalY, 0, 0, 0, high_precision, |
| 353 WebMouseWheelEvent::PhaseEnded, | 341 WebMouseWheelEvent::PhaseEnded, |
| 354 WebMouseWheelEvent::PhaseNone); | 342 WebMouseWheelEvent::PhaseNone); |
| 355 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 343 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 356 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 344 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 357 if (scroll_latching_enabled_) { | 345 EXPECT_EQ(2U, all_sent_events().size()); |
| 358 EXPECT_EQ(1U, all_sent_events().size()); | 346 EXPECT_SYNTHETIC_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 359 EXPECT_GESTURE_SCROLL_END_WITH_PHASE(sent_gesture_event(0)); | 347 EXPECT_GESTURE_SCROLL_END_WITH_PHASE(sent_gesture_event(1)); |
| 360 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 348 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 361 } else { | |
| 362 EXPECT_EQ(2U, all_sent_events().size()); | |
| 363 EXPECT_SYNTHETIC_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | |
| 364 EXPECT_GESTURE_SCROLL_END_WITH_PHASE(sent_gesture_event(1)); | |
| 365 EXPECT_EQ(2U, GetAndResetSentEventCount()); | |
| 366 } | |
| 367 | 349 |
| 368 // Send a double phase end; OSX does it consistently. | 350 // Send a double phase end; OSX does it consistently. |
| 369 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 351 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 370 kWheelScrollGlobalY, 0, 0, 0, high_precision, | 352 kWheelScrollGlobalY, 0, 0, 0, high_precision, |
| 371 WebMouseWheelEvent::PhaseEnded, | 353 WebMouseWheelEvent::PhaseEnded, |
| 372 WebMouseWheelEvent::PhaseNone); | 354 WebMouseWheelEvent::PhaseNone); |
| 373 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 355 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 374 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 356 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 375 EXPECT_EQ(0U, all_sent_events().size()); | 357 EXPECT_EQ(0U, all_sent_events().size()); |
| 376 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 358 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 377 | 359 |
| 378 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 360 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 379 kWheelScrollGlobalY, 5, 5, 0, high_precision, | 361 kWheelScrollGlobalY, 5, 5, 0, high_precision, |
| 380 WebMouseWheelEvent::PhaseNone, | 362 WebMouseWheelEvent::PhaseNone, |
| 381 WebMouseWheelEvent::PhaseBegan); | 363 WebMouseWheelEvent::PhaseBegan); |
| 382 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 364 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 383 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 365 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 384 if (scroll_latching_enabled_) { | 366 EXPECT_EQ(3U, all_sent_events().size()); |
| 385 EXPECT_EQ(2U, all_sent_events().size()); | 367 EXPECT_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 386 EXPECT_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 368 EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 387 EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 369 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(2)); |
| 388 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 370 EXPECT_EQ(3U, GetAndResetSentEventCount()); |
| 389 } else { | |
| 390 EXPECT_EQ(3U, all_sent_events().size()); | |
| 391 EXPECT_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | |
| 392 EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | |
| 393 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(2)); | |
| 394 EXPECT_EQ(3U, GetAndResetSentEventCount()); | |
| 395 } | |
| 396 | 371 |
| 397 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 372 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 398 kWheelScrollGlobalY, 5, 5, 0, high_precision, | 373 kWheelScrollGlobalY, 5, 5, 0, high_precision, |
| 399 WebMouseWheelEvent::PhaseNone, | 374 WebMouseWheelEvent::PhaseNone, |
| 400 WebMouseWheelEvent::PhaseChanged); | 375 WebMouseWheelEvent::PhaseChanged); |
| 401 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 376 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 402 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 377 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 403 if (scroll_latching_enabled_) { | 378 EXPECT_EQ(3U, all_sent_events().size()); |
| 404 EXPECT_EQ(1U, all_sent_events().size()); | 379 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 405 EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(sent_gesture_event(0)); | 380 EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 406 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 381 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(2)); |
| 407 } else { | 382 EXPECT_EQ(3U, GetAndResetSentEventCount()); |
| 408 EXPECT_EQ(3U, all_sent_events().size()); | |
| 409 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | |
| 410 EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | |
| 411 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(2)); | |
| 412 EXPECT_EQ(3U, GetAndResetSentEventCount()); | |
| 413 } | |
| 414 | 383 |
| 415 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 384 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 416 kWheelScrollGlobalY, 0, 0, 0, high_precision, | 385 kWheelScrollGlobalY, 0, 0, 0, high_precision, |
| 417 WebMouseWheelEvent::PhaseNone, | 386 WebMouseWheelEvent::PhaseNone, |
| 418 WebMouseWheelEvent::PhaseEnded); | 387 WebMouseWheelEvent::PhaseEnded); |
| 419 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 388 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 420 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 389 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 421 if (scroll_latching_enabled_) { | 390 EXPECT_EQ(2U, all_sent_events().size()); |
| 422 EXPECT_EQ(1U, all_sent_events().size()); | 391 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 423 EXPECT_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(0)); | 392 EXPECT_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(1)); |
| 424 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 393 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 425 } else { | |
| 426 EXPECT_EQ(2U, all_sent_events().size()); | |
| 427 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | |
| 428 EXPECT_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(1)); | |
| 429 EXPECT_EQ(2U, GetAndResetSentEventCount()); | |
| 430 } | |
| 431 } | 394 } |
| 432 | 395 |
| 433 std::unique_ptr<MouseWheelEventQueue> queue_; | 396 std::unique_ptr<MouseWheelEventQueue> queue_; |
| 434 std::vector<std::unique_ptr<WebInputEvent>> sent_events_; | 397 std::vector<std::unique_ptr<WebInputEvent>> sent_events_; |
| 435 size_t acked_event_count_; | 398 size_t acked_event_count_; |
| 436 InputEventAckState last_acked_event_state_; | 399 InputEventAckState last_acked_event_state_; |
| 437 base::MessageLoopForUI message_loop_; | 400 base::MessageLoopForUI message_loop_; |
| 438 WebMouseWheelEvent last_acked_event_; | 401 WebMouseWheelEvent last_acked_event_; |
| 439 int64_t scroll_end_timeout_ms_; | 402 int64_t scroll_end_timeout_ms_; |
| 440 bool scroll_latching_enabled_; | 403 bool scroll_latching_enabled_; |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 EXPECT_EQ(1U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaY); | 622 EXPECT_EQ(1U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaY); |
| 660 EXPECT_EQ(static_cast<size_t>(updateEventIndex + 1), | 623 EXPECT_EQ(static_cast<size_t>(updateEventIndex + 1), |
| 661 GetAndResetSentEventCount()); | 624 GetAndResetSentEventCount()); |
| 662 } | 625 } |
| 663 | 626 |
| 664 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests, | 627 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests, |
| 665 MouseWheelEventQueueTest, | 628 MouseWheelEventQueueTest, |
| 666 testing::Bool()); | 629 testing::Bool()); |
| 667 | 630 |
| 668 } // namespace content | 631 } // namespace content |
| OLD | NEW |