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 |