Title: [275607] trunk
- Revision
- 275607
- Author
- [email protected]
- Date
- 2021-04-07 08:54:58 -0700 (Wed, 07 Apr 2021)
Log Message
REGRESSION (r270849): Button content fails to render on apple.com "Blood Oxygen"/"ECG"
https://bugs.webkit.org/show_bug.cgi?id=224261
Reviewed by Simon Fraser.
Source/WebCore:
1. The changeRequiresRecompositeLayer check in RenderStyle::diff should come after
changeRequiresRepaintIfTextOrBorderOrOutline since RepaintIfTextOrBorderOrOutline is at
a higher priority in StyleDifference.
2. Ensure that we trigger setNeedsCompositingConfigurationUpdate on diff >= StyleDifference::RecompositeLayer.
Test: fast/text/text-repaint-when-pointer-event-property-changes.html
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::layerStyleChanged):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::diff const):
LayoutTests:
* fast/text/text-repaint-when-pointer-event-property-changes-expected.html: Added.
* fast/text/text-repaint-when-pointer-event-property-changes.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (275606 => 275607)
--- trunk/LayoutTests/ChangeLog 2021-04-07 14:47:57 UTC (rev 275606)
+++ trunk/LayoutTests/ChangeLog 2021-04-07 15:54:58 UTC (rev 275607)
@@ -1,3 +1,13 @@
+2021-04-07 Zalan Bujtas <[email protected]>
+
+ REGRESSION (r270849): Button content fails to render on apple.com "Blood Oxygen"/"ECG"
+ https://bugs.webkit.org/show_bug.cgi?id=224261
+
+ Reviewed by Simon Fraser.
+
+ * fast/text/text-repaint-when-pointer-event-property-changes-expected.html: Added.
+ * fast/text/text-repaint-when-pointer-event-property-changes.html: Added.
+
2021-04-07 Rob Buis <[email protected]>
Ignore non-null lastQuote ASSERT when continuation is broken
Added: trunk/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes-expected.html (0 => 275607)
--- trunk/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes-expected.html (rev 0)
+++ trunk/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes-expected.html 2021-04-07 15:54:58 UTC (rev 275607)
@@ -0,0 +1,6 @@
+<style>
+.red {
+ color: red;
+}
+</style>
+<div class=red>PASS if red</div>
Added: trunk/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes.html (0 => 275607)
--- trunk/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes.html (rev 0)
+++ trunk/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes.html 2021-04-07 15:54:58 UTC (rev 275607)
@@ -0,0 +1,11 @@
+<style>
+.red {
+ color: red;
+ pointer-events: none;
+}
+</style>
+<div id=repaintThis>PASS if red</div>
+<script>
+document.body.offsetHeight;
+repaintThis.className = "red";
+</script>
\ No newline at end of file
Modified: trunk/Source/WebCore/ChangeLog (275606 => 275607)
--- trunk/Source/WebCore/ChangeLog 2021-04-07 14:47:57 UTC (rev 275606)
+++ trunk/Source/WebCore/ChangeLog 2021-04-07 15:54:58 UTC (rev 275607)
@@ -1,3 +1,22 @@
+2021-04-07 Zalan Bujtas <[email protected]>
+
+ REGRESSION (r270849): Button content fails to render on apple.com "Blood Oxygen"/"ECG"
+ https://bugs.webkit.org/show_bug.cgi?id=224261
+
+ Reviewed by Simon Fraser.
+
+ 1. The changeRequiresRecompositeLayer check in RenderStyle::diff should come after
+ changeRequiresRepaintIfTextOrBorderOrOutline since RepaintIfTextOrBorderOrOutline is at
+ a higher priority in StyleDifference.
+ 2. Ensure that we trigger setNeedsCompositingConfigurationUpdate on diff >= StyleDifference::RecompositeLayer.
+
+ Test: fast/text/text-repaint-when-pointer-event-property-changes.html
+
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::layerStyleChanged):
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::diff const):
+
2021-04-07 Rob Buis <[email protected]>
Ignore non-null lastQuote ASSERT when continuation is broken
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (275606 => 275607)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2021-04-07 14:47:57 UTC (rev 275606)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2021-04-07 15:54:58 UTC (rev 275607)
@@ -1687,20 +1687,19 @@
}
}
- if (diff == StyleDifference::RecompositeLayer && layer.isComposited()) {
- if (oldStyle && oldStyle->pointerEvents() != newStyle.pointerEvents())
- layer.setNeedsCompositingConfigurationUpdate();
- else if (is<RenderWidget>(layer.renderer())) {
- // This is necessary to get iframe layers hooked up in response to scheduleInvalidateStyleAndLayerComposition().
- layer.setNeedsCompositingConfigurationUpdate();
+ if (diff >= StyleDifference::RecompositeLayer) {
+ if (layer.isComposited()) {
+ if (is<RenderWidget>(layer.renderer()) || (oldStyle && oldStyle->pointerEvents() != newStyle.pointerEvents())) {
+ // For RenderWidgets this is necessary to get iframe layers hooked up in response to scheduleInvalidateStyleAndLayerComposition().
+ layer.setNeedsCompositingConfigurationUpdate();
+ }
}
+ if (oldStyle && recompositeChangeRequiresGeometryUpdate(*oldStyle, newStyle)) {
+ // FIXME: transform changes really need to trigger layout. See RenderElement::adjustStyleDifference().
+ layer.setNeedsPostLayoutCompositingUpdate();
+ layer.setNeedsCompositingGeometryUpdate();
+ }
}
-
- if (diff >= StyleDifference::RecompositeLayer && oldStyle && recompositeChangeRequiresGeometryUpdate(*oldStyle, newStyle)) {
- // FIXME: transform changes really need to trigger layout. See RenderElement::adjustStyleDifference().
- layer.setNeedsPostLayoutCompositingUpdate();
- layer.setNeedsCompositingGeometryUpdate();
- }
}
bool RenderLayerCompositor::needsCompositingUpdateForStyleChangeOnNonCompositedLayer(RenderLayer& layer, const RenderStyle* oldStyle) const
Modified: trunk/Source/WebCore/rendering/style/RenderStyle.cpp (275606 => 275607)
--- trunk/Source/WebCore/rendering/style/RenderStyle.cpp 2021-04-07 14:47:57 UTC (rev 275606)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.cpp 2021-04-07 15:54:58 UTC (rev 275607)
@@ -1215,12 +1215,15 @@
if (changeRequiresRepaint(other, changedContextSensitiveProperties))
return StyleDifference::Repaint;
+ if (changeRequiresRepaintIfTextOrBorderOrOutline(other, changedContextSensitiveProperties))
+ return StyleDifference::RepaintIfTextOrBorderOrOutline;
+
+ // FIXME: RecompositeLayer should also behave as a priority bit (e.g when the style change requires layout, we know that
+ // the content also needs repaint and it will eventually get repainted,
+ // but a repaint type of change (e.g. color change) does not necessarily trigger recomposition).
if (changeRequiresRecompositeLayer(other, changedContextSensitiveProperties))
return StyleDifference::RecompositeLayer;
- if (changeRequiresRepaintIfTextOrBorderOrOutline(other, changedContextSensitiveProperties))
- return StyleDifference::RepaintIfTextOrBorderOrOutline;
-
// Cursors are not checked, since they will be set appropriately in response to mouse events,
// so they don't need to cause any repaint or layout.
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes