Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index b5493224ee1d7787ba6115ca5b03efa7afd284f1..873d71d679921f01ad0c76f5055b7be99f9faf9f 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -242,7 +242,7 @@ LayerTreeHostImpl::LayerTreeHostImpl( |
frame_timing_tracker_(FrameTimingTracker::Create(this)) { |
if (settings.use_compositor_animation_timelines) { |
if (settings.accelerated_animation_enabled) { |
- animation_host_ = AnimationHost::Create(); |
+ animation_host_ = AnimationHost::Create(ThreadInstance::IMPL); |
animation_host_->SetMutatorHostClient(this); |
animation_host_->SetSupportsScrollAnimations( |
proxy_->SupportsImplScrolling()); |
@@ -3440,6 +3440,10 @@ void LayerTreeHostImpl::ScrollAnimationCreate( |
LayerImpl* layer_impl, |
const gfx::ScrollOffset& target_offset, |
const gfx::ScrollOffset& current_offset) { |
+ if (animation_host_) |
+ return animation_host_->ImplOnlyScrollAnimationCreate( |
+ layer_impl->id(), target_offset, current_offset); |
+ |
scoped_ptr<ScrollOffsetAnimationCurve> curve = |
ScrollOffsetAnimationCurve::Create(target_offset, |
EaseInOutTimingFunction::Create()); |
@@ -3456,6 +3460,11 @@ void LayerTreeHostImpl::ScrollAnimationCreate( |
bool LayerTreeHostImpl::ScrollAnimationUpdateTarget( |
LayerImpl* layer_impl, |
const gfx::Vector2dF& scroll_delta) { |
+ if (animation_host_) |
+ return animation_host_->ImplOnlyScrollAnimationUpdateTarget( |
+ layer_impl->id(), scroll_delta, layer_impl->MaxScrollOffset(), |
+ CurrentBeginFrameArgs().frame_time); |
+ |
Animation* animation = |
layer_impl->layer_animation_controller() |
? layer_impl->layer_animation_controller()->GetAnimation( |
@@ -3592,4 +3601,19 @@ void LayerTreeHostImpl::SetLayerScrollOffsetMutated( |
} |
} |
+void LayerTreeHostImpl::ScrollOffsetAnimationFinished() { |
+ ScrollEnd(); |
+} |
+ |
+gfx::ScrollOffset LayerTreeHostImpl::GetScrollOffsetForAnimation( |
+ int layer_id) const { |
+ if (active_tree()) { |
+ LayerAnimationValueProvider* layer = active_tree()->LayerById(layer_id); |
+ if (layer) |
+ return layer->ScrollOffsetForAnimation(); |
+ } |
+ |
+ return gfx::ScrollOffset(); |
+} |
+ |
} // namespace cc |