Index: cc/trees/layer_tree_impl.cc |
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc |
index 8f2f0139328ba3465d80fcd6ba0974de2bed86e1..1fe9ba686f1f5daab00fb5a659aea6cd76f85a98 100644 |
--- a/cc/trees/layer_tree_impl.cc |
+++ b/cc/trees/layer_tree_impl.cc |
@@ -51,7 +51,6 @@ class LayerScrollOffsetDelegateProxy : public LayerImpl::ScrollOffsetDelegate { |
// LayerScrollOffsetDelegate implementation. |
void SetTotalScrollOffset(const gfx::ScrollOffset& new_offset) override { |
last_set_scroll_offset_ = new_offset; |
- layer_tree_impl_->UpdateScrollOffsetDelegate(); |
} |
gfx::ScrollOffset GetTotalScrollOffset() override { |
@@ -62,6 +61,10 @@ class LayerScrollOffsetDelegateProxy : public LayerImpl::ScrollOffsetDelegate { |
return delegate_->IsExternalFlingActive(); |
} |
+ void Update() const override { |
+ layer_tree_impl_->UpdateScrollOffsetDelegate(); |
+ } |
+ |
private: |
LayerImpl* layer_; |
LayerScrollOffsetDelegate* delegate_; |
@@ -930,6 +933,9 @@ void LayerTreeImpl::SetRootLayerScrollOffsetDelegate( |
outer_viewport_scroll_layer_->SetScrollOffsetDelegate( |
outer_viewport_scroll_delegate_proxy_.get()); |
} |
+ |
+ if (inner_viewport_scroll_layer_) |
+ UpdateScrollOffsetDelegate(); |
} |
} |
@@ -945,6 +951,7 @@ void LayerTreeImpl::OnRootLayerDelegatedScrollOffsetChanged() { |
void LayerTreeImpl::UpdateScrollOffsetDelegate() { |
DCHECK(InnerViewportScrollLayer()); |
+ DCHECK(!OuterViewportScrollLayer() || outer_viewport_scroll_delegate_proxy_); |
DCHECK(root_layer_scroll_offset_delegate_); |
gfx::ScrollOffset offset = |