| Index: content/browser/renderer_host/input/input_router_impl_unittest.cc
|
| diff --git a/content/browser/renderer_host/input/input_router_impl_unittest.cc b/content/browser/renderer_host/input/input_router_impl_unittest.cc
|
| index bb061569cf13dae1324dacd15648fe4022691912..795ca60a61904d6b56b1e736c30f91659e39cbce 100644
|
| --- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
|
| +++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
|
| @@ -1628,6 +1628,7 @@ TEST_F(InputRouterImplTest, TouchpadPinchUpdate) {
|
| EXPECT_TRUE(wheel_event->hasPreciseScrollingDeltas);
|
| EXPECT_EQ(1, wheel_event->wheelTicksY);
|
| EXPECT_EQ(0, wheel_event->wheelTicksX);
|
| + EXPECT_FALSE(wheel_event->canScroll);
|
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
|
|
| // Indicate that the wheel event was unhandled.
|
| @@ -1650,6 +1651,7 @@ TEST_F(InputRouterImplTest, TouchpadPinchUpdate) {
|
| EXPECT_FLOAT_EQ(PinchScaleToWheelDelta(0.3f), wheel_event->deltaY);
|
| EXPECT_TRUE(wheel_event->hasPreciseScrollingDeltas);
|
| EXPECT_EQ(-1, wheel_event->wheelTicksY);
|
| + EXPECT_FALSE(wheel_event->canScroll);
|
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
|
|
| // Indicate that the wheel event was handled this time.
|
| @@ -1729,8 +1731,7 @@ TEST_F(InputRouterImplTest, TouchpadPinchAndWheel) {
|
| // Note that in practice interleaving pinch and wheel events should be rare
|
| // (eg. requires the use of a mouse and trackpad at the same time).
|
|
|
| - // Use the control modifier to match the synthetic wheel events so that
|
| - // they're elligble for coalescing.
|
| + // Synthetic wheel and real wheel events can never be coalesced together.
|
| int mod = WebInputEvent::ControlKey;
|
|
|
| // Event 1: sent directly.
|
| @@ -1741,7 +1742,8 @@ TEST_F(InputRouterImplTest, TouchpadPinchAndWheel) {
|
| SimulateWheelEvent(0, -10, mod, true);
|
| EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
|
|
| - // Event 3: enqueued in InputRouter, not coalesced into #2.
|
| + // Event 3: enqueued in InputRouter, not coalesced into #2 because of
|
| + // synthesized_from_pinch.
|
| SimulateGesturePinchUpdateEvent(
|
| 1.5f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
|
| EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| @@ -1751,10 +1753,15 @@ TEST_F(InputRouterImplTest, TouchpadPinchAndWheel) {
|
| 1.2f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
|
| EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
|
|
| - // Event 5: coalesced into wheel event for #3.
|
| + // Event 5: enqueued in InputRouter, not coalesced into #3 because of
|
| + // synthesized_from_pinch.
|
| SimulateWheelEvent(2, 0, mod, true);
|
| EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
|
|
| + // Event 6: coalesced into #5.
|
| + SimulateWheelEvent(0, 3, mod, true);
|
| + EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| +
|
| // Send ack for #1.
|
| SendInputEventACK(WebInputEvent::MouseWheel,
|
| INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
|
| @@ -1771,6 +1778,7 @@ TEST_F(InputRouterImplTest, TouchpadPinchAndWheel) {
|
| EXPECT_EQ(0, wheel_event->deltaX);
|
| EXPECT_EQ(-10, wheel_event->deltaY);
|
| EXPECT_EQ(mod, wheel_event->modifiers);
|
| + EXPECT_TRUE(wheel_event->canScroll);
|
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
|
|
| // Send ack for #2.
|
| @@ -1779,22 +1787,41 @@ TEST_F(InputRouterImplTest, TouchpadPinchAndWheel) {
|
| EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
|
| EXPECT_EQ(WebInputEvent::MouseWheel, ack_handler_->ack_event_type());
|
|
|
| - // Verify we sent #3 (with #5 coalesced in).
|
| + // Verify we sent #3.
|
| ASSERT_EQ(1U, process_->sink().message_count());
|
| input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
|
| ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type);
|
| wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
|
| - EXPECT_EQ(2, wheel_event->deltaX);
|
| + EXPECT_EQ(0, wheel_event->deltaX);
|
| EXPECT_EQ(PinchScaleToWheelDelta(1.5f), wheel_event->deltaY);
|
| EXPECT_EQ(mod, wheel_event->modifiers);
|
| + EXPECT_FALSE(wheel_event->canScroll);
|
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
|
|
| +
|
| // Send ack for #3.
|
| SendInputEventACK(WebInputEvent::MouseWheel,
|
| INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
|
| EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
|
| EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type());
|
|
|
| + // Verify we sent #5 with #6 coalesced into it.
|
| + ASSERT_EQ(1U, process_->sink().message_count());
|
| + input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
|
| + ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type);
|
| + wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
|
| + EXPECT_EQ(2, wheel_event->deltaX);
|
| + EXPECT_EQ(3, wheel_event->deltaY);
|
| + EXPECT_EQ(mod, wheel_event->modifiers);
|
| + EXPECT_TRUE(wheel_event->canScroll);
|
| + EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| +
|
| + // Send ack for #5.
|
| + SendInputEventACK(WebInputEvent::MouseWheel,
|
| + INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
|
| + EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
|
| + EXPECT_EQ(WebInputEvent::MouseWheel, ack_handler_->ack_event_type());
|
| +
|
| // Verify we sent #4.
|
| ASSERT_EQ(1U, process_->sink().message_count());
|
| input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
|
| @@ -1803,6 +1830,7 @@ TEST_F(InputRouterImplTest, TouchpadPinchAndWheel) {
|
| EXPECT_EQ(0, wheel_event->deltaX);
|
| EXPECT_FLOAT_EQ(PinchScaleToWheelDelta(1.2f), wheel_event->deltaY);
|
| EXPECT_EQ(mod, wheel_event->modifiers);
|
| + EXPECT_FALSE(wheel_event->canScroll);
|
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
|
|
| // Send ack for #4.
|
|
|