| Index: third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.cpp b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| index 806001ed1fb5e597d20b9b7eeb735733d5305f19..7d5c9802e1a9fb747b5ba59e3a56585d10db23fa 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
|
| @@ -1341,10 +1341,8 @@ void LayoutObject::invalidateTreeIfNeeded(const PaintInvalidationState& paintInv
|
|
|
| void LayoutObject::invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationState& childPaintInvalidationState)
|
| {
|
| - for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibling()) {
|
| - if (!child->isOutOfFlowPositioned())
|
| - child->invalidateTreeIfNeeded(childPaintInvalidationState);
|
| - }
|
| + for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibling())
|
| + child->invalidateTreeIfNeeded(childPaintInvalidationState);
|
| }
|
|
|
| static PassOwnPtr<TracedValue> jsonObjectForOldAndNewRects(const LayoutRect& oldRect, const LayoutPoint& oldLocation, const LayoutRect& newRect, const LayoutPoint& newLocation)
|
| @@ -1435,8 +1433,7 @@ PaintInvalidationReason LayoutObject::invalidatePaintIfNeeded(const PaintInvalid
|
| return PaintInvalidationNone; // Don't invalidate paints if we're printing.
|
|
|
| const LayoutBoxModelObject& paintInvalidationContainer = paintInvalidationState.paintInvalidationContainer();
|
| - // TODO(wangxianzhu): Enable this assert after we fix all paintInvalidationContainer mismatch issues. crbug.com/360286
|
| - // ASSERT(paintInvalidationContainer == containerForPaintInvalidation());
|
| + ASSERT(paintInvalidationContainer == containerForPaintInvalidation());
|
|
|
| const LayoutRect oldBounds = previousPaintInvalidationRect();
|
| const LayoutPoint oldLocation = RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() ? LayoutPoint() : previousPositionFromPaintInvalidationBacking();
|
| @@ -2625,6 +2622,11 @@ LayoutObject* LayoutObject::containerCrossingFrameBoundaries() const
|
| return isLayoutView() ? frame()->ownerLayoutObject() : container();
|
| }
|
|
|
| +LayoutObject* LayoutObject::parentCrossingFrameBoundaries() const
|
| +{
|
| + return isLayoutView() ? frame()->ownerLayoutObject() : parent();
|
| +}
|
| +
|
| bool LayoutObject::isSelectionBorder() const
|
| {
|
| SelectionState st = getSelectionState();
|
| @@ -3421,9 +3423,9 @@ static PaintInvalidationReason documentLifecycleBasedPaintInvalidationReason(con
|
| }
|
| }
|
|
|
| -inline void LayoutObject::markContainerChainForPaintInvalidation()
|
| +inline void LayoutObject::markAncestorsForPaintInvalidation()
|
| {
|
| - for (LayoutObject* container = this->containerCrossingFrameBoundaries(); container && !container->shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState(); container = container->containerCrossingFrameBoundaries())
|
| + for (LayoutObject* container = this->parentCrossingFrameBoundaries(); container && !container->shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState(); container = container->parentCrossingFrameBoundaries())
|
| container->m_bitfields.setChildShouldCheckForPaintInvalidation(true);
|
| }
|
|
|
| @@ -3432,7 +3434,7 @@ void LayoutObject::setShouldInvalidateSelection()
|
| if (!canUpdateSelectionOnRootLineBoxes())
|
| return;
|
| m_bitfields.setShouldInvalidateSelection(true);
|
| - markContainerChainForPaintInvalidation();
|
| + markAncestorsForPaintInvalidation();
|
| frameView()->scheduleVisualUpdateForPaintInvalidationIfNeeded();
|
| }
|
|
|
| @@ -3448,7 +3450,7 @@ void LayoutObject::setShouldDoFullPaintInvalidation(PaintInvalidationReason reas
|
| reason = documentLifecycleBasedPaintInvalidationReason(document().lifecycle());
|
| m_bitfields.setFullPaintInvalidationReason(reason);
|
| if (!isUpgradingDelayedFullToFull)
|
| - markContainerChainForPaintInvalidation();
|
| + markAncestorsForPaintInvalidation();
|
| }
|
|
|
| frameView()->scheduleVisualUpdateForPaintInvalidationIfNeeded();
|
| @@ -3459,7 +3461,7 @@ void LayoutObject::setMayNeedPaintInvalidation()
|
| if (mayNeedPaintInvalidation())
|
| return;
|
| m_bitfields.setMayNeedPaintInvalidation(true);
|
| - markContainerChainForPaintInvalidation();
|
| + markAncestorsForPaintInvalidation();
|
| frameView()->scheduleVisualUpdateForPaintInvalidationIfNeeded();
|
| }
|
|
|
|
|