| Index: third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp b/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
|
| index 086b5b51fe0577a335892660e0d1b486135072ab..db7c066603e031565dbc37c3a0b61422074c27e6 100644
|
| --- a/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
|
| @@ -43,6 +43,8 @@ PaintInvalidationState::PaintInvalidationState(
|
| m_cachedOffsetsEnabled(true),
|
| m_cachedOffsetsForAbsolutePositionEnabled(true),
|
| m_paintInvalidationContainer(&layoutView.containerForPaintInvalidation()),
|
| + m_scrollAdjustment(
|
| + m_paintInvalidationContainer->scrollAdjustmentForPaintInvalidation()),
|
| m_paintInvalidationContainerForStackedContents(
|
| m_paintInvalidationContainer),
|
| m_containerForAbsolutePosition(layoutView),
|
| @@ -85,6 +87,7 @@ PaintInvalidationState::PaintInvalidationState(
|
| m_cachedOffsetsForAbsolutePositionEnabled(
|
| parentState.m_cachedOffsetsForAbsolutePositionEnabled),
|
| m_paintInvalidationContainer(parentState.m_paintInvalidationContainer),
|
| + m_scrollAdjustment(parentState.m_scrollAdjustment),
|
| m_paintInvalidationContainerForStackedContents(
|
| parentState.m_paintInvalidationContainerForStackedContents),
|
| m_containerForAbsolutePosition(
|
| @@ -120,6 +123,7 @@ PaintInvalidationState::PaintInvalidationState(
|
| DCHECK(parentState.m_didUpdateForChildren);
|
| #endif
|
|
|
| + const auto* oldPaintInvalidationContainer = m_paintInvalidationContainer;
|
| if (currentObject.isPaintInvalidationContainer()) {
|
| m_paintInvalidationContainer = toLayoutBoxModelObject(¤tObject);
|
| if (currentObject.styleRef().isStackingContext())
|
| @@ -167,6 +171,15 @@ PaintInvalidationState::PaintInvalidationState(
|
| PaintInvalidatorContext::ForcedSubtreeFullInvalidation;
|
| }
|
|
|
| + if (m_paintInvalidationContainer != oldPaintInvalidationContainer) {
|
| + m_scrollAdjustment =
|
| + m_paintInvalidationContainer->scrollAdjustmentForPaintInvalidation();
|
| + } else {
|
| + DCHECK(
|
| + m_scrollAdjustment ==
|
| + m_paintInvalidationContainer->scrollAdjustmentForPaintInvalidation());
|
| + }
|
| +
|
| if (!currentObject.isBoxModelObject() && !currentObject.isSVG())
|
| return;
|
|
|
| @@ -442,14 +455,13 @@ LayoutPoint PaintInvalidationState::computeLocationInBacking(
|
| point = slowLocalToAncestorPoint(
|
| m_currentObject, *m_paintInvalidationContainer, FloatPoint());
|
| }
|
| +
|
| + point.move(m_scrollAdjustment);
|
| }
|
|
|
| PaintLayer::mapPointInPaintInvalidationContainerToBacking(
|
| *m_paintInvalidationContainer, point);
|
|
|
| - point.move(m_currentObject.scrollAdjustmentForPaintInvalidation(
|
| - *m_paintInvalidationContainer));
|
| -
|
| return LayoutPoint(point);
|
| }
|
|
|
| @@ -493,8 +505,8 @@ LayoutRect PaintInvalidationState::computeVisualRectInBackingForSVG() const {
|
|
|
| m_currentObject.adjustVisualRectForRasterEffects(rect);
|
|
|
| - rect.move(m_currentObject.scrollAdjustmentForPaintInvalidation(
|
| - *m_paintInvalidationContainer));
|
| + if (m_currentObject != m_paintInvalidationContainer)
|
| + rect.move(m_scrollAdjustment);
|
|
|
| return rect;
|
| }
|
| @@ -551,8 +563,8 @@ void PaintInvalidationState::mapLocalRectToVisualRectInBacking(
|
|
|
| m_currentObject.adjustVisualRectForRasterEffects(rect);
|
|
|
| - rect.move(m_currentObject.scrollAdjustmentForPaintInvalidation(
|
| - *m_paintInvalidationContainer));
|
| + if (m_currentObject != m_paintInvalidationContainer)
|
| + rect.move(m_scrollAdjustment);
|
| }
|
|
|
| void PaintInvalidationState::addClipRectRelativeToPaintOffset(
|
|
|