| 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 08562d320cf49ef6d319a9e85cdc16eb475a3a00..f19425a7c5367d6907dea56cd69ca26cad093eb4 100644
|
| --- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
|
| +++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
|
| @@ -1631,6 +1631,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.
|
| @@ -1653,6 +1654,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.
|
| @@ -1732,8 +1734,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.
|
| @@ -1744,7 +1745,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());
|
| @@ -1754,10 +1756,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);
|
| @@ -1774,6 +1781,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.
|
| @@ -1782,22 +1790,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));
|
| @@ -1806,6 +1833,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.
|
|
|