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 835a82b243640998d7c35ad7a64114c2800d440c..25b4dc1876c2315269b9f4bc4d5d8f72c142a8b0 100644 |
--- a/ui/events/blink/blink_event_util.cc |
+++ b/ui/events/blink/blink_event_util.cc |
@@ -125,6 +125,21 @@ WebTouchPoint CreateWebTouchPoint(const MotionEvent& event, |
return touch; |
} |
+WebGestureEvent::RailsMode ToRailsMode( |
+ GestureEventDetails::ScrollRailState scroll_rail_state) { |
+ switch(scroll_rail_state) { |
+ case GestureEventDetails::ScrollRailState::Horizontal: |
+ return WebGestureEvent::RailsModeHorizontal; |
+ case GestureEventDetails::ScrollRailState::Vertical: |
+ return WebGestureEvent::RailsModeVertical; |
+ case GestureEventDetails::ScrollRailState::Free: |
+ return WebGestureEvent::RailsModeFree; |
+ default: |
+ NOTREACHED() << "Invalid rail mode"; |
+ return WebGestureEvent::RailsModeFree; |
+ } |
+} |
+ |
} // namespace |
blink::WebTouchEvent CreateWebTouchEventFromMotionEvent( |
@@ -249,6 +264,8 @@ WebGestureEvent CreateWebGestureEvent(const GestureEventDetails& details, |
gesture.data.scrollUpdate.deltaY = details.scroll_y(); |
gesture.data.scrollUpdate.previousUpdateInSequencePrevented = |
details.previous_scroll_update_in_sequence_prevented(); |
+ gesture.data.scrollUpdate.railsMode = |
+ ToRailsMode(details.scroll_rail_state()); |
break; |
case ET_GESTURE_SCROLL_END: |
gesture.type = WebInputEvent::GestureScrollEnd; |
@@ -257,6 +274,8 @@ WebGestureEvent CreateWebGestureEvent(const GestureEventDetails& details, |
gesture.type = WebInputEvent::GestureFlingStart; |
gesture.data.flingStart.velocityX = details.velocity_x(); |
gesture.data.flingStart.velocityY = details.velocity_y(); |
+ gesture.data.flingStart.railsMode = |
+ ToRailsMode(details.scroll_rail_state()); |
break; |
case ET_SCROLL_FLING_CANCEL: |
gesture.type = WebInputEvent::GestureFlingCancel; |