Title: [277185] branches/safari-611-branch
- Revision
- 277185
- Author
- repst...@apple.com
- Date
- 2021-05-07 11:48:04 -0700 (Fri, 07 May 2021)
Log Message
Cherry-pick r275607. rdar://problem/77581135
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.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@275607 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Modified Paths
Added Paths
Diff
Modified: branches/safari-611-branch/LayoutTests/ChangeLog (277184 => 277185)
--- branches/safari-611-branch/LayoutTests/ChangeLog 2021-05-07 18:47:59 UTC (rev 277184)
+++ branches/safari-611-branch/LayoutTests/ChangeLog 2021-05-07 18:48:04 UTC (rev 277185)
@@ -1,5 +1,46 @@
2021-05-06 Russell Epstein <repst...@apple.com>
+ Cherry-pick r275607. rdar://problem/77581135
+
+ 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.
+
+
+ git-svn-id: https://svn.webkit.org/repository/webkit/trunk@275607 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+ 2021-04-07 Zalan Bujtas <za...@apple.com>
+
+ 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-05-06 Russell Epstein <repst...@apple.com>
+
Cherry-pick r271669. rdar://problem/77580999
Fix nullptr dereference introduced in r268228
Added: branches/safari-611-branch/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes-expected.html (0 => 277185)
--- branches/safari-611-branch/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes-expected.html (rev 0)
+++ branches/safari-611-branch/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes-expected.html 2021-05-07 18:48:04 UTC (rev 277185)
@@ -0,0 +1,6 @@
+<style>
+.red {
+ color: red;
+}
+</style>
+<div class=red>PASS if red</div>
Added: branches/safari-611-branch/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes.html (0 => 277185)
--- branches/safari-611-branch/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes.html (rev 0)
+++ branches/safari-611-branch/LayoutTests/fast/text/text-repaint-when-pointer-event-property-changes.html 2021-05-07 18:48:04 UTC (rev 277185)
@@ -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: branches/safari-611-branch/Source/WebCore/ChangeLog (277184 => 277185)
--- branches/safari-611-branch/Source/WebCore/ChangeLog 2021-05-07 18:47:59 UTC (rev 277184)
+++ branches/safari-611-branch/Source/WebCore/ChangeLog 2021-05-07 18:48:04 UTC (rev 277185)
@@ -1,5 +1,55 @@
2021-05-06 Russell Epstein <repst...@apple.com>
+ Cherry-pick r275607. rdar://problem/77581135
+
+ 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.
+
+
+ git-svn-id: https://svn.webkit.org/repository/webkit/trunk@275607 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+ 2021-04-07 Zalan Bujtas <za...@apple.com>
+
+ 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-05-06 Russell Epstein <repst...@apple.com>
+
Cherry-pick r271669. rdar://problem/77580999
Fix nullptr dereference introduced in r268228
Modified: branches/safari-611-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp (277184 => 277185)
--- branches/safari-611-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp 2021-05-07 18:47:59 UTC (rev 277184)
+++ branches/safari-611-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp 2021-05-07 18:48:04 UTC (rev 277185)
@@ -1681,20 +1681,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: branches/safari-611-branch/Source/WebCore/rendering/style/RenderStyle.cpp (277184 => 277185)
--- branches/safari-611-branch/Source/WebCore/rendering/style/RenderStyle.cpp 2021-05-07 18:47:59 UTC (rev 277184)
+++ branches/safari-611-branch/Source/WebCore/rendering/style/RenderStyle.cpp 2021-05-07 18:48:04 UTC (rev 277185)
@@ -1212,12 +1212,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
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes