Index: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp |
diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp |
index 8f6f6f8bff6faa6b1eed578ee3dc8bf129e2734d..ff4963bf0446c3d7558206b75b4a20f06fd40d47 100644 |
--- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp |
+++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp |
@@ -1109,9 +1109,10 @@ void CompositedLayerMapping::updateOverflowControlsHostLayerGeometry( |
transformState.flatten(); |
hostLayerPosition = LayoutPoint(transformState.lastPlanarPoint()); |
if (PaintLayerScrollableArea* scrollableArea = |
- compositingStackingContext->getScrollableArea()) |
+ compositingStackingContext->getScrollableArea()) { |
hostLayerPosition.move( |
- LayoutSize(scrollableArea->adjustedScrollOffset())); |
+ LayoutSize(toFloatSize(scrollableArea->scrollPosition()))); |
+ } |
hostLayerPosition.move(-stackingOffsetFromLayoutObject); |
} |
} else { |
@@ -1221,8 +1222,8 @@ void CompositedLayerMapping::updateScrollingLayerGeometry( |
LayoutBox* layoutBox = toLayoutBox(layoutObject()); |
IntRect overflowClipRect = |
enclosingIntRect(layoutBox->overflowClipRect(LayoutPoint())); |
- DoubleSize adjustedScrollOffset = |
- m_owningLayer.getScrollableArea()->adjustedScrollOffset(); |
+ FloatPoint scrollPosition = |
+ m_owningLayer.getScrollableArea()->scrollPosition(); |
m_scrollingLayer->setPosition(FloatPoint( |
overflowClipRect.location() - localCompositingBounds.location() + |
roundedIntSize(m_owningLayer.subpixelAccumulation()))); |
@@ -1249,8 +1250,8 @@ void CompositedLayerMapping::updateScrollingLayerGeometry( |
m_scrollingContentsLayer->setNeedsDisplay(); |
DoubleSize scrollingContentsOffset( |
- overflowClipRect.location().x() - adjustedScrollOffset.width(), |
- overflowClipRect.location().y() - adjustedScrollOffset.height()); |
+ overflowClipRect.location().x() - scrollPosition.x(), |
+ overflowClipRect.location().y() - scrollPosition.y()); |
// The scroll offset change is compared using floating point so that |
// fractional scroll offset change can be propagated to compositor. |
if (scrollingContentsOffset != m_scrollingContentsOffset || |
@@ -1258,9 +1259,8 @@ void CompositedLayerMapping::updateScrollingLayerGeometry( |
bool coordinatorHandlesOffset = |
compositor()->scrollingLayerDidChange(&m_owningLayer); |
m_scrollingContentsLayer->setPosition( |
- coordinatorHandlesOffset |
- ? FloatPoint() |
- : FloatPoint(-toFloatSize(adjustedScrollOffset))); |
+ coordinatorHandlesOffset ? FloatPoint() |
+ : FloatPoint(-toFloatSize(scrollPosition))); |
} |
m_scrollingContentsOffset = scrollingContentsOffset; |
@@ -2893,10 +2893,11 @@ void CompositedLayerMapping::adjustForCompositedScrolling( |
if (PaintLayerScrollableArea* scrollableArea = |
m_owningLayer.getScrollableArea()) { |
if (scrollableArea->usesCompositedScrolling()) { |
- // Note: this is just the scroll offset, *not* the "adjusted scroll |
- // offset". Scroll offset does not include the origin adjustment. That |
- // is instead baked already into offsetFromLayoutObject. |
- DoubleSize scrollOffset = scrollableArea->scrollOffset(); |
+ // Note: this is the offset from the beginning of flow of the block, not |
+ // the offset from the top/left of the overflow rect. |
+ // offsetFromLayoutObject adds the origin offset from top/left to the |
+ // beginning of flow. |
+ ScrollOffset scrollOffset = scrollableArea->scrollOffset(); |
offset.expand(-scrollOffset.width(), -scrollOffset.height()); |
} |
} |