Index: content/renderer/input/input_handler_proxy.cc |
diff --git a/content/renderer/input/input_handler_proxy.cc b/content/renderer/input/input_handler_proxy.cc |
index f714ef1f3d956678b8ba0b3cd744f85715a142a7..fb798a0f653b96e254a5b2625f5b69fca89807a8 100644 |
--- a/content/renderer/input/input_handler_proxy.cc |
+++ b/content/renderer/input/input_handler_proxy.cc |
@@ -168,6 +168,22 @@ void ReportInputEventLatencyUma(const WebInputEvent& event, |
} |
} |
+cc::InputHandler::RailsMode ConvertRailsMode( |
+ blink::WebInputEvent::RailsMode rails_mode) { |
+ switch (rails_mode) { |
+ case blink::WebInputEvent::RailsModeFree: |
+ return cc::InputHandler::RAILS_MODE_FREE; |
+ case blink::WebInputEvent::RailsModeHorizontal: |
+ return cc::InputHandler::RAILS_MODE_HORIZONTAL; |
+ case blink::WebInputEvent::RailsModeVertical: |
+ return cc::InputHandler::RAILS_MODE_VERTICAL; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+ return cc::InputHandler::RAILS_MODE_FREE; |
+} |
+ |
} // namespace |
namespace content { |
@@ -331,16 +347,9 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleMouseWheel( |
const WebMouseWheelEvent& wheel_event) { |
InputHandlerProxy::EventDisposition result = DID_NOT_HANDLE; |
cc::InputHandlerScrollResult scroll_result; |
- |
- // TODO(ccameron): The rail information should be pushed down into |
- // InputHandler. |
- gfx::Vector2dF scroll_delta( |
- wheel_event.railsMode != WebInputEvent::RailsModeVertical |
- ? -wheel_event.deltaX |
- : 0, |
- wheel_event.railsMode != WebInputEvent::RailsModeHorizontal |
- ? -wheel_event.deltaY |
- : 0); |
+ const gfx::Vector2dF scroll_delta(-wheel_event.deltaX, -wheel_event.deltaY); |
+ const cc::InputHandler::RailsMode rails_mode = |
+ ConvertRailsMode(wheel_event.railsMode); |
if (wheel_event.scrollByPage) { |
// TODO(jamesr): We don't properly handle scroll by page in the compositor |
@@ -374,7 +383,8 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleMouseWheel( |
TRACE_EVENT_SCOPE_THREAD, "deltaX", |
scroll_delta.x(), "deltaY", scroll_delta.y()); |
gfx::Point scroll_point(wheel_event.x, wheel_event.y); |
- scroll_result = input_handler_->ScrollBy(scroll_point, scroll_delta); |
+ scroll_result = |
+ input_handler_->ScrollBy(scroll_point, scroll_delta, rails_mode); |
HandleOverscroll(scroll_point, scroll_result); |
input_handler_->ScrollEnd(); |
result = scroll_result.did_scroll ? DID_HANDLE : DROP_EVENT; |
@@ -459,7 +469,7 @@ InputHandlerProxy::HandleGestureScrollUpdate( |
gfx::Vector2dF scroll_delta(-gesture_event.data.scrollUpdate.deltaX, |
-gesture_event.data.scrollUpdate.deltaY); |
cc::InputHandlerScrollResult scroll_result = input_handler_->ScrollBy( |
- scroll_point, scroll_delta); |
+ scroll_point, scroll_delta, cc::InputHandler::RAILS_MODE_FREE); |
HandleOverscroll(scroll_point, scroll_result); |
return scroll_result.did_scroll ? DID_HANDLE : DROP_EVENT; |
} |
@@ -935,8 +945,9 @@ bool InputHandlerProxy::scrollBy(const WebFloatSize& increment, |
break; |
case blink::WebGestureDeviceTouchscreen: { |
clipped_increment = ToClientScrollIncrement(clipped_increment); |
- cc::InputHandlerScrollResult scroll_result = input_handler_->ScrollBy( |
- fling_parameters_.point, clipped_increment); |
+ cc::InputHandlerScrollResult scroll_result = |
+ input_handler_->ScrollBy(fling_parameters_.point, clipped_increment, |
+ cc::InputHandler::RAILS_MODE_FREE); |
HandleOverscroll(fling_parameters_.point, scroll_result); |
did_scroll = scroll_result.did_scroll; |
} break; |