Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 56b79e8f20dac1673c233a73c2516c655ad9385a..0c22cf93d441776337f22880138c5423a69f264f 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -1028,6 +1028,7 @@ void LayerImpl::SetBounds(const gfx::Size& bounds) { |
bounds_ = bounds; |
layer_tree_impl()->DidUpdateScrollState(id()); |
+ |
if (masks_to_bounds()) |
NoteLayerPropertyChangedForSubtree(); |
else |
@@ -1041,24 +1042,24 @@ void LayerImpl::SetBoundsDelta(const gfx::Vector2dF& bounds_delta) { |
bounds_delta_ = bounds_delta; |
- TransformTree& transform_tree = |
- layer_tree_impl()->property_trees()->transform_tree; |
+ PropertyTrees* property_trees = layer_tree_impl()->property_trees(); |
if (this == layer_tree_impl()->InnerViewportContainerLayer()) |
- transform_tree.SetInnerViewportBoundsDelta(bounds_delta); |
+ property_trees->SetInnerViewportContainerBoundsDelta(bounds_delta); |
else if (this == layer_tree_impl()->OuterViewportContainerLayer()) |
- transform_tree.SetOuterViewportBoundsDelta(bounds_delta); |
+ property_trees->SetOuterViewportContainerBoundsDelta(bounds_delta); |
+ else if (this == layer_tree_impl()->InnerViewportScrollLayer()) |
+ property_trees->SetInnerViewportScrollBoundsDelta(bounds_delta); |
layer_tree_impl()->DidUpdateScrollState(id()); |
if (masks_to_bounds()) { |
// If layer is clipping, then update the clip node using the new bounds. |
- ClipNode* clip_node = |
- layer_tree_impl()->property_trees()->clip_tree.Node(clip_tree_index()); |
+ ClipNode* clip_node = property_trees->clip_tree.Node(clip_tree_index()); |
if (clip_node) { |
DCHECK(id() == clip_node->owner_id); |
clip_node->data.clip = gfx::RectF( |
gfx::PointF() + offset_to_transform_parent(), gfx::SizeF(bounds())); |
- layer_tree_impl()->property_trees()->clip_tree.set_needs_update(true); |
+ property_trees->clip_tree.set_needs_update(true); |
} |
NoteLayerPropertyChangedForSubtree(); |
@@ -1619,33 +1620,8 @@ void LayerImpl::RecreateResources() { |
} |
gfx::ScrollOffset LayerImpl::MaxScrollOffset() const { |
- LayerImpl* scroll_clip_layer = |
- layer_tree_impl()->LayerById(scroll_clip_layer_id_); |
- if (!scroll_clip_layer || bounds().IsEmpty()) |
- return gfx::ScrollOffset(); |
- |
- LayerImpl const* page_scale_layer = layer_tree_impl()->PageScaleLayer(); |
- DCHECK(this != page_scale_layer); |
- DCHECK(this != layer_tree_impl()->InnerViewportScrollLayer() || |
- IsContainerForFixedPositionLayers()); |
- |
- float scale_factor = 1.f; |
- DCHECK(scroll_clip_layer != page_scale_layer); |
- if (!scroll_clip_layer->IsAffectedByPageScale() && IsAffectedByPageScale()) |
- scale_factor = layer_tree_impl()->current_page_scale_factor(); |
- |
- gfx::SizeF scaled_scroll_bounds = |
- gfx::ScaleSize(BoundsForScrolling(), scale_factor); |
- scaled_scroll_bounds.SetSize(std::floor(scaled_scroll_bounds.width()), |
- std::floor(scaled_scroll_bounds.height())); |
- |
- gfx::ScrollOffset max_offset( |
- scaled_scroll_bounds.width() - scroll_clip_layer->bounds().width(), |
- scaled_scroll_bounds.height() - scroll_clip_layer->bounds().height()); |
- // We need the final scroll offset to be in CSS coords. |
- max_offset.Scale(1 / scale_factor); |
- max_offset.SetToMax(gfx::ScrollOffset()); |
- return max_offset; |
+ return layer_tree_impl()->property_trees()->scroll_tree.MaxScrollOffset( |
+ scroll_tree_index()); |
} |
gfx::ScrollOffset LayerImpl::ClampScrollOffsetToLimits( |