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 fe64d9240c1ca08a6ab3fbb4bb6cd3e3cea82514..821e42447e9109e376b2b00bae9bd5619e943dcf 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
@@ -124,13 +124,6 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( |
overscroll_effect_enabled_ = !CommandLine::ForCurrentProcess()-> |
HasSwitch(switches::kDisableOverscrollEdgeEffect); |
- // Don't block the main thread with effect resource loading. |
- // Actual effect creation is deferred until an overscroll event is received. |
- if (overscroll_effect_enabled_) { |
- base::WorkerPool::PostTask(FROM_HERE, |
- base::Bind(&OverscrollGlow::EnsureResources), |
- true); |
- } |
host_->SetView(this); |
SetContentViewCore(content_view_core); |
@@ -865,7 +858,7 @@ void RenderWidgetHostViewAndroid::RemoveLayers() { |
return; |
if (overscroll_effect_) |
- content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); |
+ overscroll_effect_->RemoveLayer(); |
content_view_core_->RemoveLayer(layer_); |
} |
@@ -876,7 +869,7 @@ bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { |
bool overscroll_running = overscroll_effect_->Animate(frame_time); |
if (!overscroll_running) |
- content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); |
+ overscroll_effect_->RemoveLayer(); |
return overscroll_running; |
} |
@@ -911,11 +904,11 @@ void RenderWidgetHostViewAndroid::ScheduleAnimationIfNecessary() { |
return; |
if (overscroll_effect_->NeedsAnimate() && are_layers_attached_) { |
- if (!overscroll_effect_->root_layer()->parent()) |
- content_view_core_->AttachLayer(overscroll_effect_->root_layer()); |
+ if (!overscroll_effect_->IsAttached()) |
+ overscroll_effect_->AttachLayerTo(content_view_core_->GetLayer()); |
content_view_core_->SetNeedsAnimate(); |
} else { |
- content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); |
+ overscroll_effect_->RemoveLayer(); |
} |
} |
@@ -1262,8 +1255,22 @@ void RenderWidgetHostViewAndroid::HasTouchEventHandlers( |
content_view_core_->HasTouchEventHandlers(need_touch_events); |
} |
-void RenderWidgetHostViewAndroid::OnCompositingDidCommit() { |
+void RenderWidgetHostViewAndroid::OnCompositingDidCommit( |
+ Compositor* compositor) { |
RunAckCallbacks(); |
+ if (overscroll_effect_) { |
+ cc::UIResourceId edge_id = compositor->GetOverscrollEdgeId(); |
+ cc::UIResourceId glow_id = compositor->GetOverscrollGlowId(); |
+ if (edge_id && glow_id) { |
+ bool updated_resources = overscroll_effect_->SetLayerResources( |
+ edge_id, |
+ glow_id, |
+ compositor->GetUIResourceSize(edge_id), |
+ compositor->GetUIResourceSize(glow_id)); |
+ if (updated_resources) |
+ ScheduleAnimationIfNecessary(); |
+ } |
+ } |
} |
void RenderWidgetHostViewAndroid::OnDetachCompositor() { |