| 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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 EXPECT_EQ(WebInputEvent::MouseWheel, event->type); | 138 EXPECT_EQ(WebInputEvent::MouseWheel, event->type); |
| 139 | 139 |
| 140 } // namespace | 140 } // namespace |
| 141 | 141 |
| 142 class MouseWheelEventQueueTest : public testing::Test, | 142 class MouseWheelEventQueueTest : public testing::Test, |
| 143 public MouseWheelEventQueueClient { | 143 public MouseWheelEventQueueClient { |
| 144 public: | 144 public: |
| 145 MouseWheelEventQueueTest() | 145 MouseWheelEventQueueTest() |
| 146 : acked_event_count_(0), | 146 : acked_event_count_(0), |
| 147 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) { | 147 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) { |
| 148 queue_.reset(new MouseWheelEventQueue(this, kScrollEndTimeoutMs)); | 148 SetUpForGestureTesting(false); |
| 149 } | 149 } |
| 150 | 150 |
| 151 ~MouseWheelEventQueueTest() override {} | 151 ~MouseWheelEventQueueTest() override {} |
| 152 | 152 |
| 153 // MouseWheelEventQueueClient | 153 // MouseWheelEventQueueClient |
| 154 void SendMouseWheelEventImmediately( | 154 void SendMouseWheelEventImmediately( |
| 155 const MouseWheelEventWithLatencyInfo& event) override { | 155 const MouseWheelEventWithLatencyInfo& event) override { |
| 156 WebMouseWheelEvent* cloned_event = new WebMouseWheelEvent(); | 156 WebMouseWheelEvent* cloned_event = new WebMouseWheelEvent(); |
| 157 std::unique_ptr<WebInputEvent> cloned_event_holder(cloned_event); | 157 std::unique_ptr<WebInputEvent> cloned_event_holder(cloned_event); |
| 158 *cloned_event = event.event; | 158 *cloned_event = event.event; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 169 } | 169 } |
| 170 | 170 |
| 171 void OnMouseWheelEventAck(const MouseWheelEventWithLatencyInfo& event, | 171 void OnMouseWheelEventAck(const MouseWheelEventWithLatencyInfo& event, |
| 172 InputEventAckState ack_result) override { | 172 InputEventAckState ack_result) override { |
| 173 ++acked_event_count_; | 173 ++acked_event_count_; |
| 174 last_acked_event_ = event.event; | 174 last_acked_event_ = event.event; |
| 175 last_acked_event_state_ = ack_result; | 175 last_acked_event_state_ = ack_result; |
| 176 } | 176 } |
| 177 | 177 |
| 178 protected: | 178 protected: |
| 179 void SetUpForGestureTesting(bool send_gestures) { |
| 180 queue_.reset( |
| 181 new MouseWheelEventQueue(this, send_gestures, kScrollEndTimeoutMs)); |
| 182 } |
| 183 |
| 179 size_t queued_event_count() const { return queue_->queued_size(); } | 184 size_t queued_event_count() const { return queue_->queued_size(); } |
| 180 | 185 |
| 181 bool event_in_flight() const { return queue_->event_in_flight(); } | 186 bool event_in_flight() const { return queue_->event_in_flight(); } |
| 182 | 187 |
| 183 std::vector<std::unique_ptr<WebInputEvent>>& all_sent_events() { | 188 std::vector<std::unique_ptr<WebInputEvent>>& all_sent_events() { |
| 184 return sent_events_; | 189 return sent_events_; |
| 185 } | 190 } |
| 186 | 191 |
| 187 const std::unique_ptr<WebInputEvent>& sent_input_event(size_t index) { | 192 const std::unique_ptr<WebInputEvent>& sent_input_event(size_t index) { |
| 188 return sent_events_[index]; | 193 return sent_events_[index]; |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 423 // Receive an ACK for the second mouse wheel event. | 428 // Receive an ACK for the second mouse wheel event. |
| 424 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 429 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 425 EXPECT_EQ(0U, queued_event_count()); | 430 EXPECT_EQ(0U, queued_event_count()); |
| 426 EXPECT_FALSE(event_in_flight()); | 431 EXPECT_FALSE(event_in_flight()); |
| 427 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 432 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 428 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 433 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 429 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 434 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); |
| 430 } | 435 } |
| 431 | 436 |
| 432 TEST_F(MouseWheelEventQueueTest, GestureSending) { | 437 TEST_F(MouseWheelEventQueueTest, GestureSending) { |
| 438 SetUpForGestureTesting(true); |
| 433 GestureSendingTest(false); | 439 GestureSendingTest(false); |
| 434 } | 440 } |
| 435 | 441 |
| 436 TEST_F(MouseWheelEventQueueTest, GestureSendingPrecisePixels) { | 442 TEST_F(MouseWheelEventQueueTest, GestureSendingPrecisePixels) { |
| 443 SetUpForGestureTesting(true); |
| 437 GestureSendingTest(false); | 444 GestureSendingTest(false); |
| 438 } | 445 } |
| 439 | 446 |
| 440 TEST_F(MouseWheelEventQueueTest, GestureSendingWithPhaseInformation) { | 447 TEST_F(MouseWheelEventQueueTest, GestureSendingWithPhaseInformation) { |
| 448 SetUpForGestureTesting(true); |
| 441 PhaseGestureSendingTest(false); | 449 PhaseGestureSendingTest(false); |
| 442 } | 450 } |
| 443 | 451 |
| 444 TEST_F(MouseWheelEventQueueTest, | 452 TEST_F(MouseWheelEventQueueTest, |
| 445 GestureSendingWithPhaseInformationPrecisePixels) { | 453 GestureSendingWithPhaseInformationPrecisePixels) { |
| 454 SetUpForGestureTesting(true); |
| 446 PhaseGestureSendingTest(true); | 455 PhaseGestureSendingTest(true); |
| 447 } | 456 } |
| 448 | 457 |
| 449 TEST_F(MouseWheelEventQueueTest, GestureSendingInterrupted) { | 458 TEST_F(MouseWheelEventQueueTest, GestureSendingInterrupted) { |
| 459 SetUpForGestureTesting(true); |
| 450 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; | 460 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; |
| 451 | 461 |
| 452 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 462 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 453 kWheelScrollGlobalY, 1, 1, 0, false); | 463 kWheelScrollGlobalY, 1, 1, 0, false); |
| 454 EXPECT_EQ(0U, queued_event_count()); | 464 EXPECT_EQ(0U, queued_event_count()); |
| 455 EXPECT_TRUE(event_in_flight()); | 465 EXPECT_TRUE(event_in_flight()); |
| 456 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 466 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 457 | 467 |
| 458 // Receive an ACK for the mouse wheel event. | 468 // Receive an ACK for the mouse wheel event. |
| 459 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 469 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 EXPECT_FALSE(event_in_flight()); | 512 EXPECT_FALSE(event_in_flight()); |
| 503 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 513 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); |
| 504 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 514 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 505 EXPECT_EQ(2U, all_sent_events().size()); | 515 EXPECT_EQ(2U, all_sent_events().size()); |
| 506 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 516 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 507 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 517 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 508 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 518 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 509 } | 519 } |
| 510 | 520 |
| 511 TEST_F(MouseWheelEventQueueTest, GestureRailScrolling) { | 521 TEST_F(MouseWheelEventQueueTest, GestureRailScrolling) { |
| 522 SetUpForGestureTesting(true); |
| 512 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; | 523 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; |
| 513 | 524 |
| 514 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 525 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 515 kWheelScrollGlobalY, 1, 1, 0, false, | 526 kWheelScrollGlobalY, 1, 1, 0, false, |
| 516 WebInputEvent::RailsModeHorizontal); | 527 WebInputEvent::RailsModeHorizontal); |
| 517 EXPECT_EQ(0U, queued_event_count()); | 528 EXPECT_EQ(0U, queued_event_count()); |
| 518 EXPECT_TRUE(event_in_flight()); | 529 EXPECT_TRUE(event_in_flight()); |
| 519 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 530 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 520 | 531 |
| 521 // Receive an ACK for the mouse wheel event. | 532 // Receive an ACK for the mouse wheel event. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 551 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 562 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 552 EXPECT_EQ(2U, all_sent_events().size()); | 563 EXPECT_EQ(2U, all_sent_events().size()); |
| 553 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 564 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 554 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 565 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 555 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); | 566 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); |
| 556 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); | 567 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); |
| 557 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 568 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 558 } | 569 } |
| 559 | 570 |
| 560 } // namespace content | 571 } // namespace content |
| OLD | NEW |