| Index: content/renderer/render_widget.cc
|
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
|
| index ff314be36cba567af9beb0eb5d1a0de4e4ca688f..8921dcb83c10f97c635df6f75a82b667635d6adc 100644
|
| --- a/content/renderer/render_widget.cc
|
| +++ b/content/renderer/render_widget.cc
|
| @@ -2215,6 +2215,12 @@ void RenderWidget::didOverscroll(
|
| const blink::WebFloatSize& accumulatedRootOverScroll,
|
| const blink::WebFloatPoint& position,
|
| const blink::WebFloatSize& velocity) {
|
| + if (compositor_deps_->IsElasticOverscrollEnabled()) {
|
| + latest_overscroll_delta_ =
|
| + gfx::Vector2dF(-unusedDelta.width, -unusedDelta.height);
|
| + return;
|
| + }
|
| +
|
| DidOverscrollParams params;
|
| // TODO(jdduke): Consider bundling the overscroll with the input event ack to
|
| // save an IPC.
|
| @@ -2289,19 +2295,12 @@ void RenderWidget::ObserveWheelEventAndResult(
|
| if (!compositor_deps_->IsElasticOverscrollEnabled())
|
| return;
|
|
|
| - // Blink does not accurately compute scroll bubbling or overscroll. For now,
|
| - // assume that an unprocessed event was entirely an overscroll, and that a
|
| - // processed event was entirely scroll.
|
| - // TODO(ccameron): Retrieve an accurate scroll result from Blink.
|
| - // http://crbug.com/442859
|
| cc::InputHandlerScrollResult scroll_result;
|
| - if (event_processed) {
|
| - scroll_result.did_scroll = true;
|
| - } else {
|
| - scroll_result.did_overscroll_root = true;
|
| - scroll_result.unused_scroll_delta =
|
| - gfx::Vector2dF(-wheel_event.deltaX, -wheel_event.deltaY);
|
| - }
|
| + scroll_result.did_scroll = event_processed;
|
| + scroll_result.did_overscroll_root = !latest_overscroll_delta_.IsZero();
|
| + scroll_result.unused_scroll_delta = latest_overscroll_delta_;
|
| + latest_overscroll_delta_.set_x(0);
|
| + latest_overscroll_delta_.set_y(0);
|
|
|
| RenderThreadImpl* render_thread = RenderThreadImpl::current();
|
| InputHandlerManager* input_handler_manager =
|
|
|