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

Reply via email to