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 46748208f0f8533e8efe3fbdcbccb5248509446b..1b0dbe86065025dd406ace277be93b035b215ba6 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
@@ -296,15 +296,16 @@ void RenderWidgetHostViewAndroid::Focus() { |
host_->Focus(); |
host_->SetInputMethodActive(true); |
ResetClipping(); |
+ if (overscroll_effect_) |
+ overscroll_effect_->SetEnabled(true); |
} |
void RenderWidgetHostViewAndroid::Blur() { |
host_->ExecuteEditCommand("Unselect", ""); |
host_->SetInputMethodActive(false); |
host_->Blur(); |
- |
if (overscroll_effect_) |
- overscroll_effect_->Finish(); |
+ overscroll_effect_->SetEnabled(false); |
} |
bool RenderWidgetHostViewAndroid::HasFocus() const { |
@@ -739,7 +740,7 @@ void RenderWidgetHostViewAndroid::RemoveLayers() { |
} |
bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { |
- if (!overscroll_effect_ || !HasFocus()) |
+ if (!overscroll_effect_) |
return false; |
return overscroll_effect_->Animate(frame_time); |
} |
@@ -748,7 +749,7 @@ void RenderWidgetHostViewAndroid::CreateOverscrollEffectIfNecessary() { |
if (!overscroll_effect_enabled_ || overscroll_effect_) |
return; |
- overscroll_effect_ = OverscrollGlow::Create(); |
+ overscroll_effect_ = OverscrollGlow::Create(true); |
// Prevent future creation attempts on failure. |
if (!overscroll_effect_) |
@@ -775,7 +776,7 @@ void RenderWidgetHostViewAndroid::UpdateAnimationSize( |
void RenderWidgetHostViewAndroid::ScheduleAnimationIfNecessary() { |
if (!content_view_core_) |
return; |
- if (overscroll_effect_ && overscroll_effect_->IsActive()) |
+ if (overscroll_effect_ && overscroll_effect_->NeedsAnimate()) |
content_view_core_->SetNeedsAnimate(); |
} |
@@ -963,6 +964,10 @@ void RenderWidgetHostViewAndroid::SendMouseWheelEvent( |
void RenderWidgetHostViewAndroid::SendGestureEvent( |
const WebKit::WebGestureEvent& event) { |
+ // Sending a gesture that may trigger overscroll should resume the effect. |
+ if (overscroll_effect_) |
+ overscroll_effect_->SetEnabled(true); |
+ |
if (host_) |
host_->ForwardGestureEvent(event); |
} |
@@ -1030,7 +1035,7 @@ void RenderWidgetHostViewAndroid::OnOverscrolled( |
gfx::Vector2dF accumulated_overscroll, |
gfx::Vector2dF current_fling_velocity) { |
CreateOverscrollEffectIfNecessary(); |
- if (!overscroll_effect_ || !HasFocus()) |
+ if (!overscroll_effect_) |
return; |
overscroll_effect_->OnOverscrolled(base::TimeTicks::Now(), |