Index: ui/events/blink/blink_event_util.cc |
diff --git a/ui/events/blink/blink_event_util.cc b/ui/events/blink/blink_event_util.cc |
index 6378ce21ff9968ecc7e1652a547c9d451f982fbf..ac5a14aa438e64447b6d164dd6e5e71aa0ce581e 100644 |
--- a/ui/events/blink/blink_event_util.cc |
+++ b/ui/events/blink/blink_event_util.cc |
@@ -670,11 +670,17 @@ WebGestureEvent CreateWebGestureEvent(const GestureEventDetails& details, |
gesture.data.scrollBegin.pointerCount = details.touch_points(); |
gesture.data.scrollBegin.deltaXHint = details.scroll_x_hint(); |
gesture.data.scrollBegin.deltaYHint = details.scroll_y_hint(); |
+ gesture.data.scrollBegin.deltaHintUnits = |
+ static_cast<blink::WebGestureEvent::ScrollUnits>( |
+ details.scroll_begin_units()); |
break; |
case ET_GESTURE_SCROLL_UPDATE: |
gesture.setType(WebInputEvent::GestureScrollUpdate); |
gesture.data.scrollUpdate.deltaX = details.scroll_x(); |
gesture.data.scrollUpdate.deltaY = details.scroll_y(); |
+ gesture.data.scrollUpdate.deltaUnits = |
+ static_cast<blink::WebGestureEvent::ScrollUnits>( |
+ details.scroll_update_units()); |
gesture.data.scrollUpdate.previousUpdateInSequencePrevented = |
details.previous_scroll_update_in_sequence_prevented(); |
break; |
@@ -750,10 +756,12 @@ std::unique_ptr<blink::WebInputEvent> TranslateAndScaleWebInputEvent( |
wheel_event->y += delta.y(); |
wheel_event->x *= scale; |
wheel_event->y *= scale; |
- wheel_event->deltaX *= scale; |
- wheel_event->deltaY *= scale; |
- wheel_event->wheelTicksX *= scale; |
- wheel_event->wheelTicksY *= scale; |
+ if (!wheel_event->scrollByPage) { |
+ wheel_event->deltaX *= scale; |
+ wheel_event->deltaY *= scale; |
+ wheel_event->wheelTicksX *= scale; |
+ wheel_event->wheelTicksY *= scale; |
+ } |
} else if (blink::WebInputEvent::isMouseEventType(event.type())) { |
blink::WebMouseEvent* mouse_event = new blink::WebMouseEvent; |
scaled_event.reset(mouse_event); |
@@ -788,12 +796,18 @@ std::unique_ptr<blink::WebInputEvent> TranslateAndScaleWebInputEvent( |
gesture_event->y *= scale; |
switch (gesture_event->type()) { |
case blink::WebInputEvent::GestureScrollUpdate: |
- gesture_event->data.scrollUpdate.deltaX *= scale; |
- gesture_event->data.scrollUpdate.deltaY *= scale; |
+ if (gesture_event->data.scrollUpdate.deltaUnits != |
+ blink::WebGestureEvent::ScrollUnits::Page) { |
+ gesture_event->data.scrollUpdate.deltaX *= scale; |
+ gesture_event->data.scrollUpdate.deltaY *= scale; |
+ } |
break; |
case blink::WebInputEvent::GestureScrollBegin: |
- gesture_event->data.scrollBegin.deltaXHint *= scale; |
- gesture_event->data.scrollBegin.deltaYHint *= scale; |
+ if (gesture_event->data.scrollBegin.deltaHintUnits != |
+ blink::WebGestureEvent::ScrollUnits::Page) { |
+ gesture_event->data.scrollBegin.deltaXHint *= scale; |
+ gesture_event->data.scrollBegin.deltaYHint *= scale; |
+ } |
break; |
case blink::WebInputEvent::GesturePinchUpdate: |