| Index: content/browser/renderer_host/render_widget_host_view_android.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
|
| index 501eec1b74bf89e6362aa9c060bbb2742d2962e4..e59ffddf3ed819af6bb0d9ad4e9e2ee79aa9740d 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_android.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
|
| @@ -133,19 +133,20 @@ OverscrollGlow::DisplayParameters CreateOverscrollDisplayParameters(
|
| OverscrollGlow::DisplayParameters params;
|
| params.size = gfx::ScaleSize(
|
| frame_metadata.scrollable_viewport_size, scale_factor);
|
| - params.edge_offsets[EdgeEffect::EDGE_TOP] =
|
| + params.edge_offsets[OverscrollGlow::EDGE_TOP] =
|
| -frame_metadata.root_scroll_offset.y() * scale_factor;
|
| - params.edge_offsets[EdgeEffect::EDGE_LEFT] =
|
| + params.edge_offsets[OverscrollGlow::EDGE_LEFT] =
|
| -frame_metadata.root_scroll_offset.x() * scale_factor;
|
| - params.edge_offsets[EdgeEffect::EDGE_BOTTOM] =
|
| + params.edge_offsets[OverscrollGlow::EDGE_BOTTOM] =
|
| (frame_metadata.root_layer_size.height() -
|
| frame_metadata.root_scroll_offset.y() -
|
| - frame_metadata.scrollable_viewport_size.height()) * scale_factor;
|
| - params.edge_offsets[EdgeEffect::EDGE_RIGHT] =
|
| + frame_metadata.scrollable_viewport_size.height()) *
|
| + scale_factor;
|
| + params.edge_offsets[OverscrollGlow::EDGE_RIGHT] =
|
| (frame_metadata.root_layer_size.width() -
|
| frame_metadata.root_scroll_offset.x() -
|
| - frame_metadata.scrollable_viewport_size.width()) * scale_factor;
|
| - params.device_scale_factor = frame_metadata.device_scale_factor;
|
| + frame_metadata.scrollable_viewport_size.width()) *
|
| + scale_factor;
|
|
|
| return params;
|
| }
|
| @@ -1237,6 +1238,13 @@ void RenderWidgetHostViewAndroid::ProcessAckedTouchEvent(
|
| void RenderWidgetHostViewAndroid::GestureEventAck(
|
| const blink::WebGestureEvent& event,
|
| InputEventAckState ack_result) {
|
| + // The overscroll effect requires an explicit release signal that may not be
|
| + // sent from the renderer compositor.
|
| + if (event.type == blink::WebInputEvent::GestureScrollEnd ||
|
| + event.type == blink::WebInputEvent::GestureFlingStart) {
|
| + DidOverscroll(DidOverscrollParams());
|
| + }
|
| +
|
| switch (event.type) {
|
| case blink::WebInputEvent::GestureScrollBegin:
|
| touch_scrolling_ = true;
|
| @@ -1424,7 +1432,10 @@ void RenderWidgetHostViewAndroid::DidOverscroll(
|
| gfx::ScaleVector2d(params.latest_overscroll_delta,
|
| device_scale_factor),
|
| gfx::ScaleVector2d(params.current_fling_velocity,
|
| - device_scale_factor))) {
|
| + device_scale_factor),
|
| + gfx::ScaleVector2d(
|
| + params.causal_event_viewport_point.OffsetFromOrigin(),
|
| + device_scale_factor))) {
|
| SetNeedsAnimate();
|
| }
|
| }
|
|
|