Title: [282911] branches/safari-612-branch
Revision
282911
Author
repst...@apple.com
Date
2021-09-22 21:29:12 -0700 (Wed, 22 Sep 2021)

Log Message

Cherry-pick r282045. rdar://problem/83429674

    REGRESSION(r275515): pointer-events:none may get stuck in LFC runs
    https://bugs.webkit.org/show_bug.cgi?id=229854
    rdar://81165275

    Reviewed by Alan Bujtas.

    Source/WebCore:

    We only update run style with diff >= StyleDifference::Repaint but pointer-events changes don't require repaint.

    Test: fast/events/pointer-events-mutation.html

    * rendering/RenderBlockFlow.cpp:
    (WebCore::RenderBlockFlow::styleDidChange):
    * rendering/RenderBox.cpp:
    (WebCore::RenderBox::styleDidChange):
    * rendering/RenderInline.cpp:
    (WebCore::RenderInline::styleDidChange):

    Fix by pushing the new style to LFC unconditionally. This has no meaningful cost.

    LayoutTests:

    * fast/events/pointer-events-mutation-expected.txt: Added.
    * fast/events/pointer-events-mutation.html: Added.

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282045 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Added Paths

Diff

Modified: branches/safari-612-branch/LayoutTests/ChangeLog (282910 => 282911)


--- branches/safari-612-branch/LayoutTests/ChangeLog	2021-09-23 04:29:08 UTC (rev 282910)
+++ branches/safari-612-branch/LayoutTests/ChangeLog	2021-09-23 04:29:12 UTC (rev 282911)
@@ -1,5 +1,49 @@
 2021-09-22  Alan Coon  <alanc...@apple.com>
 
+        Cherry-pick r282045. rdar://problem/83429674
+
+    REGRESSION(r275515): pointer-events:none may get stuck in LFC runs
+    https://bugs.webkit.org/show_bug.cgi?id=229854
+    rdar://81165275
+    
+    Reviewed by Alan Bujtas.
+    
+    Source/WebCore:
+    
+    We only update run style with diff >= StyleDifference::Repaint but pointer-events changes don't require repaint.
+    
+    Test: fast/events/pointer-events-mutation.html
+    
+    * rendering/RenderBlockFlow.cpp:
+    (WebCore::RenderBlockFlow::styleDidChange):
+    * rendering/RenderBox.cpp:
+    (WebCore::RenderBox::styleDidChange):
+    * rendering/RenderInline.cpp:
+    (WebCore::RenderInline::styleDidChange):
+    
+    Fix by pushing the new style to LFC unconditionally. This has no meaningful cost.
+    
+    LayoutTests:
+    
+    * fast/events/pointer-events-mutation-expected.txt: Added.
+    * fast/events/pointer-events-mutation.html: Added.
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282045 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-09-04  Antti Koivisto  <an...@apple.com>
+
+            REGRESSION(r275515): pointer-events:none may get stuck in LFC runs
+            https://bugs.webkit.org/show_bug.cgi?id=229854
+            rdar://81165275
+
+            Reviewed by Alan Bujtas.
+
+            * fast/events/pointer-events-mutation-expected.txt: Added.
+            * fast/events/pointer-events-mutation.html: Added.
+
+2021-09-22  Alan Coon  <alanc...@apple.com>
+
         Cherry-pick r281920. rdar://problem/83429601
 
     Braille display is blank in contenteditable elements when the field is followed by another element.

Added: branches/safari-612-branch/LayoutTests/fast/events/pointer-events-mutation-expected.txt (0 => 282911)


--- branches/safari-612-branch/LayoutTests/fast/events/pointer-events-mutation-expected.txt	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/fast/events/pointer-events-mutation-expected.txt	2021-09-23 04:29:12 UTC (rev 282911)
@@ -0,0 +1,9 @@
+target1
+target2
+PASS
+PASS
+PASS
+PASS
+PASS
+PASS
+

Added: branches/safari-612-branch/LayoutTests/fast/events/pointer-events-mutation.html (0 => 282911)


--- branches/safari-612-branch/LayoutTests/fast/events/pointer-events-mutation.html	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/fast/events/pointer-events-mutation.html	2021-09-23 04:29:12 UTC (rev 282911)
@@ -0,0 +1,23 @@
+<style>
+.none { pointer-events:none; }
+</style>
+<div class=target>target1</div>
+<div><span class=target>target2</span></div>
+<pre id=log></pre>
+<script>
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+function test(target, expected) {
+    const pass = document.elementFromPoint(target.offsetLeft + 5, target.offsetTop + 5) === expected;
+    log.textContent += pass ? "PASS\n" : "FAIL\n"
+
+}
+for (target of document.querySelectorAll(".target")) {
+    test(target, target);
+    target.classList.add("none");
+    test(target, target.parentElement);
+    target.classList.remove("none");
+    test(target, target);
+}
+</script>

Modified: branches/safari-612-branch/Source/WebCore/ChangeLog (282910 => 282911)


--- branches/safari-612-branch/Source/WebCore/ChangeLog	2021-09-23 04:29:08 UTC (rev 282910)
+++ branches/safari-612-branch/Source/WebCore/ChangeLog	2021-09-23 04:29:12 UTC (rev 282911)
@@ -1,5 +1,59 @@
 2021-09-22  Alan Coon  <alanc...@apple.com>
 
+        Cherry-pick r282045. rdar://problem/83429674
+
+    REGRESSION(r275515): pointer-events:none may get stuck in LFC runs
+    https://bugs.webkit.org/show_bug.cgi?id=229854
+    rdar://81165275
+    
+    Reviewed by Alan Bujtas.
+    
+    Source/WebCore:
+    
+    We only update run style with diff >= StyleDifference::Repaint but pointer-events changes don't require repaint.
+    
+    Test: fast/events/pointer-events-mutation.html
+    
+    * rendering/RenderBlockFlow.cpp:
+    (WebCore::RenderBlockFlow::styleDidChange):
+    * rendering/RenderBox.cpp:
+    (WebCore::RenderBox::styleDidChange):
+    * rendering/RenderInline.cpp:
+    (WebCore::RenderInline::styleDidChange):
+    
+    Fix by pushing the new style to LFC unconditionally. This has no meaningful cost.
+    
+    LayoutTests:
+    
+    * fast/events/pointer-events-mutation-expected.txt: Added.
+    * fast/events/pointer-events-mutation.html: Added.
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@282045 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-09-04  Antti Koivisto  <an...@apple.com>
+
+            REGRESSION(r275515): pointer-events:none may get stuck in LFC runs
+            https://bugs.webkit.org/show_bug.cgi?id=229854
+            rdar://81165275
+
+            Reviewed by Alan Bujtas.
+
+            We only update run style with diff >= StyleDifference::Repaint but pointer-events changes don't require repaint.
+
+            Test: fast/events/pointer-events-mutation.html
+
+            * rendering/RenderBlockFlow.cpp:
+            (WebCore::RenderBlockFlow::styleDidChange):
+            * rendering/RenderBox.cpp:
+            (WebCore::RenderBox::styleDidChange):
+            * rendering/RenderInline.cpp:
+            (WebCore::RenderInline::styleDidChange):
+
+            Fix by pushing the new style to LFC unconditionally. This has no meaningful cost.
+
+2021-09-22  Alan Coon  <alanc...@apple.com>
+
         Cherry-pick r281971. rdar://problem/83429744
 
     Relative -webkit-scrollbar width value may lead to unstable layout

Modified: branches/safari-612-branch/Source/WebCore/rendering/RenderBlockFlow.cpp (282910 => 282911)


--- branches/safari-612-branch/Source/WebCore/rendering/RenderBlockFlow.cpp	2021-09-23 04:29:08 UTC (rev 282910)
+++ branches/safari-612-branch/Source/WebCore/rendering/RenderBlockFlow.cpp	2021-09-23 04:29:12 UTC (rev 282911)
@@ -2141,12 +2141,12 @@
         };
         if (shouldInvalidateLineLayoutPath())
             invalidateLineLayoutPath();
+    }
 
 #if ENABLE(LAYOUT_FORMATTING_CONTEXT)
-        if (auto* lineLayout = modernLineLayout())
-            lineLayout->updateStyle(*this);
+    if (auto* lineLayout = modernLineLayout())
+        lineLayout->updateStyle(*this);
 #endif
-    }
 
     if (multiColumnFlow())
         updateStylesForColumnChildren();

Modified: branches/safari-612-branch/Source/WebCore/rendering/RenderBox.cpp (282910 => 282911)


--- branches/safari-612-branch/Source/WebCore/rendering/RenderBox.cpp	2021-09-23 04:29:08 UTC (rev 282910)
+++ branches/safari-612-branch/Source/WebCore/rendering/RenderBox.cpp	2021-09-23 04:29:12 UTC (rev 282911)
@@ -412,10 +412,8 @@
         clearOverridingContentSize();
 
 #if ENABLE(LAYOUT_FORMATTING_CONTEXT)
-    if (diff >= StyleDifference::Repaint) {
-        if (auto* lineLayout = LayoutIntegration::LineLayout::containing(*this))
-            lineLayout->updateStyle(*this);
-    }
+    if (auto* lineLayout = LayoutIntegration::LineLayout::containing(*this))
+        lineLayout->updateStyle(*this);
 #endif
 }
 

Modified: branches/safari-612-branch/Source/WebCore/rendering/RenderInline.cpp (282910 => 282911)


--- branches/safari-612-branch/Source/WebCore/rendering/RenderInline.cpp	2021-09-23 04:29:08 UTC (rev 282910)
+++ branches/safari-612-branch/Source/WebCore/rendering/RenderInline.cpp	2021-09-23 04:29:12 UTC (rev 282911)
@@ -196,15 +196,13 @@
     }
 
 #if ENABLE(LAYOUT_FORMATTING_CONTEXT)
-    if (diff >= StyleDifference::Repaint) {
-        if (auto* lineLayout = LayoutIntegration::LineLayout::containing(*this)) {
-            if (selfNeedsLayout()) {
-                // FIXME: Add support for partial invalidation.
-                if (auto* container = LayoutIntegration::LineLayout::blockContainer(*this))
-                    container->invalidateLineLayoutPath();
-            } else
-                lineLayout->updateStyle(*this);
-        }
+    if (auto* lineLayout = LayoutIntegration::LineLayout::containing(*this)) {
+        if (diff >= StyleDifference::Repaint && selfNeedsLayout()) {
+            // FIXME: Add support for partial invalidation.
+            if (auto* container = LayoutIntegration::LineLayout::blockContainer(*this))
+                container->invalidateLineLayoutPath();
+        } else
+            lineLayout->updateStyle(*this);
     }
 #endif
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to