| 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> |
| 11 | 11 |
| 12 #include "base/location.h" | 12 #include "base/location.h" |
| 13 #include "base/message_loop/message_loop.h" | 13 #include "base/message_loop/message_loop.h" |
| 14 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
| 15 #include "base/single_thread_task_runner.h" | 15 #include "base/single_thread_task_runner.h" |
| 16 #include "base/test/scoped_task_environment.h" |
| 16 #include "base/threading/thread_task_runner_handle.h" | 17 #include "base/threading/thread_task_runner_handle.h" |
| 17 #include "content/browser/renderer_host/input/timeout_monitor.h" | 18 #include "content/browser/renderer_host/input/timeout_monitor.h" |
| 18 #include "content/common/input/synthetic_web_input_event_builders.h" | 19 #include "content/common/input/synthetic_web_input_event_builders.h" |
| 19 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
| 20 #include "third_party/WebKit/public/platform/WebInputEvent.h" | 21 #include "third_party/WebKit/public/platform/WebInputEvent.h" |
| 21 #include "ui/events/base_event_utils.h" | 22 #include "ui/events/base_event_utils.h" |
| 22 | 23 |
| 23 using blink::WebGestureEvent; | 24 using blink::WebGestureEvent; |
| 24 using blink::WebInputEvent; | 25 using blink::WebInputEvent; |
| 25 using blink::WebMouseWheelEvent; | 26 using blink::WebMouseWheelEvent; |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 | 134 |
| 134 #define EXPECT_MOUSE_WHEEL(event) \ | 135 #define EXPECT_MOUSE_WHEEL(event) \ |
| 135 EXPECT_EQ(WebInputEvent::kMouseWheel, event->GetType()); | 136 EXPECT_EQ(WebInputEvent::kMouseWheel, event->GetType()); |
| 136 | 137 |
| 137 } // namespace | 138 } // namespace |
| 138 | 139 |
| 139 class MouseWheelEventQueueTest : public testing::TestWithParam<bool>, | 140 class MouseWheelEventQueueTest : public testing::TestWithParam<bool>, |
| 140 public MouseWheelEventQueueClient { | 141 public MouseWheelEventQueueClient { |
| 141 public: | 142 public: |
| 142 MouseWheelEventQueueTest() | 143 MouseWheelEventQueueTest() |
| 143 : acked_event_count_(0), | 144 : scoped_task_environment_( |
| 145 base::test::ScopedTaskEnvironment::MainThreadType::UI), |
| 146 acked_event_count_(0), |
| 144 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) { | 147 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) { |
| 145 scroll_latching_enabled_ = GetParam(); | 148 scroll_latching_enabled_ = GetParam(); |
| 146 queue_.reset(new MouseWheelEventQueue(this, scroll_latching_enabled_)); | 149 queue_.reset(new MouseWheelEventQueue(this, scroll_latching_enabled_)); |
| 147 scroll_end_timeout_ms_ = scroll_latching_enabled_ ? 100 : 0; | 150 scroll_end_timeout_ms_ = scroll_latching_enabled_ ? 100 : 0; |
| 148 } | 151 } |
| 149 | 152 |
| 150 ~MouseWheelEventQueueTest() override {} | 153 ~MouseWheelEventQueueTest() override {} |
| 151 | 154 |
| 152 // MouseWheelEventQueueClient | 155 // MouseWheelEventQueueClient |
| 153 void SendMouseWheelEventImmediately( | 156 void SendMouseWheelEventImmediately( |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 EXPECT_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(0)); | 440 EXPECT_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(0)); |
| 438 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 441 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 439 } else { | 442 } else { |
| 440 EXPECT_EQ(2U, all_sent_events().size()); | 443 EXPECT_EQ(2U, all_sent_events().size()); |
| 441 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 444 EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 442 EXPECT_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(1)); | 445 EXPECT_INERTIAL_GESTURE_SCROLL_END(sent_gesture_event(1)); |
| 443 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 446 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 444 } | 447 } |
| 445 } | 448 } |
| 446 | 449 |
| 450 base::test::ScopedTaskEnvironment scoped_task_environment_; |
| 447 std::unique_ptr<MouseWheelEventQueue> queue_; | 451 std::unique_ptr<MouseWheelEventQueue> queue_; |
| 448 std::vector<std::unique_ptr<WebInputEvent>> sent_events_; | 452 std::vector<std::unique_ptr<WebInputEvent>> sent_events_; |
| 449 size_t acked_event_count_; | 453 size_t acked_event_count_; |
| 450 InputEventAckState last_acked_event_state_; | 454 InputEventAckState last_acked_event_state_; |
| 451 base::MessageLoopForUI message_loop_; | |
| 452 WebMouseWheelEvent last_acked_event_; | 455 WebMouseWheelEvent last_acked_event_; |
| 453 int64_t scroll_end_timeout_ms_; | 456 int64_t scroll_end_timeout_ms_; |
| 454 bool scroll_latching_enabled_; | 457 bool scroll_latching_enabled_; |
| 455 }; | 458 }; |
| 456 | 459 |
| 457 // Tests that mouse wheel events are queued properly. | 460 // Tests that mouse wheel events are queued properly. |
| 458 TEST_P(MouseWheelEventQueueTest, Basic) { | 461 TEST_P(MouseWheelEventQueueTest, Basic) { |
| 459 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 462 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 460 kWheelScrollGlobalY, 1, 1, 0, false); | 463 kWheelScrollGlobalY, 1, 1, 0, false); |
| 461 EXPECT_EQ(0U, queued_event_count()); | 464 EXPECT_EQ(0U, queued_event_count()); |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 701 EXPECT_EQ(0U, sent_gesture_event(0)->data.scroll_update.delta_x); | 704 EXPECT_EQ(0U, sent_gesture_event(0)->data.scroll_update.delta_x); |
| 702 EXPECT_EQ(1U, sent_gesture_event(0)->data.scroll_update.delta_y); | 705 EXPECT_EQ(1U, sent_gesture_event(0)->data.scroll_update.delta_y); |
| 703 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 706 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 704 } | 707 } |
| 705 | 708 |
| 706 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests, | 709 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests, |
| 707 MouseWheelEventQueueTest, | 710 MouseWheelEventQueueTest, |
| 708 testing::Bool()); | 711 testing::Bool()); |
| 709 | 712 |
| 710 } // namespace content | 713 } // namespace content |
| OLD | NEW |