Index: cc/trees/layer_tree_impl.cc |
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc |
index 25ec5dbda5e46e7767f11469d800dab8c9a1e306..596476081d1b175e64dcaf8246c6b47f83d837ad 100644 |
--- a/cc/trees/layer_tree_impl.cc |
+++ b/cc/trees/layer_tree_impl.cc |
@@ -548,6 +548,20 @@ gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const { |
1.0f / current_page_scale_factor()); |
} |
+static const gfx::Transform LayerScreenSpaceTransform( |
+ const LayerImpl* layer, |
+ const TransformTree& transform_tree, |
+ const bool use_property_trees) { |
+ if (!use_property_trees) |
+ return layer->screen_space_transform(); |
+ // When we use property trees, UpdateDrawProperties does not update the draw |
+ // properties of a layer that is not in render surface layer list, so we need |
+ // to compute the screen space transform. |
+ return layer->IsDrawnRenderSurfaceLayerListMember() |
+ ? layer->screen_space_transform() |
+ : ScreenSpaceTransformFromPropertyTrees(layer, transform_tree); |
+} |
+ |
gfx::Rect LayerTreeImpl::RootScrollLayerDeviceViewportBounds() const { |
LayerImpl* root_scroll_layer = OuterViewportScrollLayer() |
? OuterViewportScrollLayer() |
@@ -555,8 +569,12 @@ gfx::Rect LayerTreeImpl::RootScrollLayerDeviceViewportBounds() const { |
if (!root_scroll_layer || root_scroll_layer->children().empty()) |
return gfx::Rect(); |
LayerImpl* layer = root_scroll_layer->children()[0].get(); |
- return MathUtil::MapEnclosingClippedRect(layer->screen_space_transform(), |
- gfx::Rect(layer->bounds())); |
+ bool use_property_trees = |
+ settings().verify_property_trees || settings().use_property_trees; |
+ return MathUtil::MapEnclosingClippedRect( |
+ LayerScreenSpaceTransform(layer, property_trees_.transform_tree, |
+ use_property_trees), |
+ gfx::Rect(layer->bounds())); |
} |
void LayerTreeImpl::ApplySentScrollAndScaleDeltasFromAbortedCommit() { |
@@ -1390,20 +1408,6 @@ static const LayerImpl* GetNextClippingLayer(const LayerImpl* layer) { |
return layer->parent(); |
} |
-static const gfx::Transform LayerScreenSpaceTransform( |
- const LayerImpl* layer, |
- const TransformTree& transform_tree, |
- const bool use_property_trees) { |
- if (!use_property_trees) |
- return layer->screen_space_transform(); |
- // When we use property trees, UpdateDrawProperties does not update the draw |
- // properties of a layer that is not in render surface layer list, so we need |
- // to compute the screen space transform. |
- return layer->IsDrawnRenderSurfaceLayerListMember() |
- ? layer->screen_space_transform() |
- : ScreenSpaceTransformFromPropertyTrees(layer, transform_tree); |
-} |
- |
static const gfx::Transform SurfaceScreenSpaceTransform( |
const LayerImpl* layer, |
const TransformTree& transform_tree, |