Index: cc/layer_tree_impl.cc |
diff --git a/cc/layer_tree_impl.cc b/cc/layer_tree_impl.cc |
index f16ec0035e93d2d3e7b66be833c00fdac28fa69e..14793a4ad8f460194ed6e7c9ba108a660a0b8aa4 100644 |
--- a/cc/layer_tree_impl.cc |
+++ b/cc/layer_tree_impl.cc |
@@ -170,8 +170,7 @@ void LayerTreeImpl::SetPageScaleDelta(float delta) |
set_needs_update_draw_properties(); |
} |
-gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const { |
- gfx::SizeF view_bounds; |
+gfx::SizeF LayerTreeImpl::UnscaledScrollableViewportSize() const { |
// The clip layer should be used for scrolling bounds if available since it |
// adjusts for non-overlay scrollbars. Otherwise, fall back to our knowledge |
// of the physical viewport size. |
@@ -179,11 +178,15 @@ gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const { |
if (root_scroll_layer_) |
clip_layer = root_scroll_layer_->parent(); |
if (clip_layer && clip_layer->masksToBounds()) { |
- view_bounds = clip_layer->bounds(); |
+ return clip_layer->bounds(); |
} else { |
- view_bounds = gfx::ScaleSize(device_viewport_size(), |
+ return gfx::ScaleSize(device_viewport_size(), |
1 / device_scale_factor()); |
} |
+} |
+ |
+gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const { |
+ gfx::SizeF view_bounds = UnscaledScrollableViewportSize(); |
view_bounds.Scale(1 / total_page_scale_factor()); |
return view_bounds; |
@@ -201,6 +204,15 @@ void LayerTreeImpl::UpdateMaxScrollOffset() { |
max_scroll.ClampToMin(gfx::Vector2dF()); |
root_scroll_layer_->setMaxScrollOffset(gfx::ToFlooredVector2d(max_scroll)); |
+ |
+ gfx::Vector2dF scrollable_viewport_size = |
+ gfx::RectF(ScrollableViewportSize()).bottom_right() - gfx::PointF(); |
+ gfx::Vector2dF original_scrollable_viewport_size = |
+ gfx::RectF(UnscaledScrollableViewportSize()).bottom_right() - |
+ gfx::PointF(); |
+ original_scrollable_viewport_size.Scale(1 / page_scale_factor()); |
+ root_scroll_layer_->setFixedContainerSizeDelta( |
+ scrollable_viewport_size - original_scrollable_viewport_size); |
} |
gfx::Transform LayerTreeImpl::ImplTransform() const { |