Index: Source/core/rendering/RenderLayerModelObject.cpp |
diff --git a/Source/core/rendering/RenderLayerModelObject.cpp b/Source/core/rendering/RenderLayerModelObject.cpp |
index 2799d997671ff74e34325988e01f7ee8f452307a..6edec16bd01f8d54abaee3bd93bf4541cc58f009 100644 |
--- a/Source/core/rendering/RenderLayerModelObject.cpp |
+++ b/Source/core/rendering/RenderLayerModelObject.cpp |
@@ -151,7 +151,12 @@ void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderSt |
setChildNeedsLayout(); |
createLayer(type); |
if (parent() && !needsLayout() && containingBlock()) { |
- layer()->repainter().setRepaintStatus(NeedsFullRepaint); |
+ // FIXME: This invalidation is overly broad. We should update to |
+ // do the correct invalidation at RenderStyle::diff time. crbug.com/349061 |
+ if (RuntimeEnabledFeatures::repaintAfterLayoutEnabled()) |
+ layer()->renderer()->setShouldDoFullRepaintAfterLayout(true); |
+ else |
+ layer()->repainter().setRepaintStatus(NeedsFullRepaint); |
// There is only one layer to update, it is not worth using |cachedOffset| since |
// we are not sure the value will be used. |
layer()->updateLayerPositions(0); |