Index: third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp |
index fd76c7b52d0c516de43f840a80d25c4a60cfcec9..0c3af3981485bb9900415ac8955d9ffe08246593 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp |
@@ -252,7 +252,7 @@ |
bool newStyleIsFixedPosition = style()->position() == FixedPosition; |
bool oldStyleIsFixedPosition = oldStyle->position() == FixedPosition; |
if (newStyleIsFixedPosition != oldStyleIsFixedPosition) |
- invalidateDisplayItemClientsIncludingNonCompositingDescendants(PaintInvalidationStyleChange); |
+ invalidateDisplayItemClientsIncludingNonCompositingDescendants(nullptr, PaintInvalidationStyleChange); |
} |
// The used style for body background may change due to computed style change |
@@ -436,6 +436,28 @@ |
} else { |
// Otherwise invalidate everything. |
layer()->compositedLayerMapping()->setContentsNeedDisplayInRect(r, invalidationReason, object); |
+ } |
+} |
+ |
+void LayoutBoxModelObject::invalidateDisplayItemClientOnBacking(const DisplayItemClient& displayItemClient, PaintInvalidationReason invalidationReason, const LayoutObject* layoutObject) const |
+{ |
+ displayItemClient.setDisplayItemsUncached(); |
+ |
+ // We need to inform the GraphicsLayer about this paint invalidation only when we are tracking |
+ // paint invalidation or ENABLE(ASSERT). |
+#if !ENABLE(ASSERT) |
+ if (!frameView()->isTrackingPaintInvalidations()) |
+ return; |
+#endif |
+ |
+ if (layer()->groupedMapping()) { |
+ if (GraphicsLayer* squashingLayer = layer()->groupedMapping()->squashingLayer()) |
+ squashingLayer->displayItemClientWasInvalidated(displayItemClient, invalidationReason); |
+ } else if (CompositedLayerMapping* compositedLayerMapping = layer()->compositedLayerMapping()) { |
+ if (layoutObject && layoutObject->compositedScrollsWithRespectTo(*this)) |
+ compositedLayerMapping->scrollingDisplayItemClientWasInvalidated(displayItemClient, invalidationReason); |
+ else |
+ compositedLayerMapping->displayItemClientWasInvalidated(displayItemClient, invalidationReason); |
} |
} |