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 80565df0ef762904c649c481e51d244adfde82f2..6837719b49239e9c671e9745dbda93040da38011 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp |
@@ -1356,6 +1356,11 @@ PaintInvalidationReason LayoutObject::invalidatePaintIfNeeded(PaintInvalidationS |
if (!RuntimeEnabledFeatures::slimmingPaintOffsetCachingEnabled()) |
setPreviousPositionFromPaintInvalidationBacking(newLocation); |
+ if (!shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState() && !paintInvalidationState.forcedSubtreeInvalidationWithinContainer()) { |
+ ASSERT(paintInvalidationState.forcedSubtreeInvalidationRectUpdateWithinContainer()); |
+ return PaintInvalidationNone; |
+ } |
+ |
PaintInvalidationReason invalidationReason = paintInvalidationReason(paintInvalidationContainer, oldBounds, oldLocation, newBounds, newLocation); |
// We need to invalidate the selection before checking for whether we are doing a full invalidation. |
@@ -3192,7 +3197,7 @@ void LayoutObject::clearPaintInvalidationState(const PaintInvalidationState& pai |
{ |
// paintInvalidationStateIsDirty should be kept in sync with the |
// booleans that are cleared below. |
- ASSERT(paintInvalidationState.forcedSubtreeInvalidationWithinContainer() || paintInvalidationStateIsDirty()); |
+ ASSERT(paintInvalidationState.forcedSubtreeInvalidationWithinContainer() || paintInvalidationState.forcedSubtreeInvalidationRectUpdateWithinContainer() || paintInvalidationStateIsDirty()); |
clearShouldDoFullPaintInvalidation(); |
m_bitfields.setChildShouldCheckForPaintInvalidation(false); |
m_bitfields.setNeededLayoutBecauseOfChildren(false); |