Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Unified Diff: cc/layers/layer_impl.cc

Issue 1675963002: Move MaxScrollOffset to property_trees (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix unit tests failures Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/layers/layer_impl.cc
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
index 56b79e8f20dac1673c233a73c2516c655ad9385a..a2cb07c6d7e05c14a31e4de81b735ce19437d91f 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -1028,12 +1028,19 @@ void LayerImpl::SetBounds(const gfx::Size& bounds) {
bounds_ = bounds;
layer_tree_impl()->DidUpdateScrollState(id());
+
if (masks_to_bounds())
NoteLayerPropertyChangedForSubtree();
else
NoteLayerPropertyChanged();
}
+void LayerImpl::SetBoundsForTesting(const gfx::Size& bounds) {
sunxd 2016/02/09 00:11:32 Dead code.
+ SetBounds(bounds);
+ layer_tree_impl()->property_trees()->needs_rebuild = true;
+ layer_tree_impl()->BuildPropertyTreesForTesting();
+}
+
void LayerImpl::SetBoundsDelta(const gfx::Vector2dF& bounds_delta) {
DCHECK(IsActive());
if (bounds_delta_ == bounds_delta)
@@ -1041,24 +1048,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 +1626,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(
sunxd 2016/02/09 00:11:32 This will be moved in the next CL.
+ scroll_tree_index());
}
gfx::ScrollOffset LayerImpl::ClampScrollOffsetToLimits(

Powered by Google App Engine
This is Rietveld 408576698