| 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 fe08825927b101acaa91ff6d03e2b1fab00f0c61..dc3a7b7758409038c57d97d6ab112ad65a7c24b3 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -2953,6 +2953,15 @@ void LayerTreeHostImpl::SetFullRootLayerDamage() {
|
| SetViewportDamage(gfx::Rect(DrawViewportSize()));
|
| }
|
|
|
| +void LayerTreeHostImpl::ScrollViewportInnerFirst(gfx::Vector2dF scroll_delta) {
|
| + DCHECK(InnerViewportScrollLayer());
|
| + LayerImpl* scroll_layer = InnerViewportScrollLayer();
|
| +
|
| + gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta);
|
| + if (!unused_delta.IsZero() && OuterViewportScrollLayer())
|
| + OuterViewportScrollLayer()->ScrollBy(unused_delta);
|
| +}
|
| +
|
| void LayerTreeHostImpl::ScrollViewportBy(gfx::Vector2dF scroll_delta) {
|
| DCHECK(InnerViewportScrollLayer());
|
| LayerImpl* scroll_layer = OuterViewportScrollLayer()
|
| @@ -2980,7 +2989,7 @@ void LayerTreeHostImpl::AnimatePageScale(base::TimeTicks monotonic_time) {
|
| gfx::Vector2dF next_scroll =
|
| page_scale_animation_->ScrollOffsetAtTime(monotonic_time);
|
|
|
| - ScrollViewportBy(next_scroll - scroll_total);
|
| + ScrollViewportInnerFirst(next_scroll - scroll_total);
|
| SetNeedsRedraw();
|
|
|
| if (page_scale_animation_->IsAnimationCompleteAtTime(monotonic_time)) {
|
|
|