Index: content/renderer/render_widget.cc |
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
index de16016217bd6bb6eb96a4e6aa2b4e6bbc4226a9..a58212059011a1b670c7d3c28dbd70dba91c8deb 100644 |
--- a/content/renderer/render_widget.cc |
+++ b/content/renderer/render_widget.cc |
@@ -1208,7 +1208,8 @@ void RenderWidget::OnHandleInputEvent(const blink::WebInputEvent* input_event, |
// that they can be used to produce the elastic overscroll effect on Mac. |
if (input_event->type == WebInputEvent::MouseWheel) { |
ObserveWheelEventAndResult( |
- static_cast<const WebMouseWheelEvent&>(*input_event), processed); |
+ static_cast<const WebMouseWheelEvent&>(*input_event), |
+ event_overscroll.get(), processed); |
} |
bool frame_pending = compositor_ && compositor_->BeginMainFrameRequested(); |
@@ -2164,6 +2165,10 @@ bool RenderWidget::DoesRecordFullLayer() const { |
} |
#endif |
+bool RenderWidget::IsElasticOverscrollEnabled() const { |
+ return compositor_deps_->IsElasticOverscrollEnabled(); |
+} |
+ |
bool RenderWidget::CanComposeInline() { |
return true; |
} |
@@ -2308,23 +2313,20 @@ bool RenderWidget::WillHandleGestureEvent( |
void RenderWidget::ObserveWheelEventAndResult( |
const blink::WebMouseWheelEvent& wheel_event, |
+ DidOverscrollParams* params, |
bool event_processed) { |
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 |
+ gfx::Vector2dF wheel_unused_delta; |
jdduke (slow)
2015/06/26 15:15:45
Ah, I didn't realize we only use the "latest_overs
MuVen
2015/06/29 13:29:52
Done.
|
+ if (params) |
+ wheel_unused_delta = params->latest_overscroll_delta; |
+ |
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 = !wheel_unused_delta.IsZero(); |
+ ; |
jdduke (slow)
2015/06/26 15:15:45
Looks like an extra ';'
MuVen
2015/06/29 13:29:52
Done.
|
+ scroll_result.unused_scroll_delta = wheel_unused_delta; |
RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
InputHandlerManager* input_handler_manager = |