Title: [287878] trunk
Revision
287878
Author
[email protected]
Date
2022-01-11 07:18:25 -0800 (Tue, 11 Jan 2022)

Log Message

::backdrop pseudo element should react to associated element event listeners
https://bugs.webkit.org/show_bug.cgi?id=233072

Reviewed by Alan Bujtas.

LayoutTests/imported/w3c:

Update test expectations.

* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt:

Source/WebCore:

Test: imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events.html

We now append the ::backdrop renderer as a child of the top layer element, rather than a sibling of the
top layer element. This gets hit testing working properly for free.

We used to append the ::backdrop renderer as a sibling to get the proper layout, but this is no longer
necessary after r287683 and r287845.

* rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::RenderTreeUpdater::GeneratedContent::updateBackdropRenderer):

LayoutTests:

iOS failure is due to WPT test_driver actions being unsupported.

* platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (287877 => 287878)


--- trunk/LayoutTests/ChangeLog	2022-01-11 14:43:30 UTC (rev 287877)
+++ trunk/LayoutTests/ChangeLog	2022-01-11 15:18:25 UTC (rev 287878)
@@ -1,3 +1,14 @@
+2022-01-11  Tim Nguyen  <[email protected]>
+
+        ::backdrop pseudo element should react to associated element event listeners
+        https://bugs.webkit.org/show_bug.cgi?id=233072
+
+        Reviewed by Alan Bujtas.
+
+        iOS failure is due to WPT test_driver actions being unsupported.
+
+        * platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt: Added.
+
 2022-01-11  Martin Robinson  <[email protected]>
 
         Some css-transforms tests assert in debug

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (287877 => 287878)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2022-01-11 14:43:30 UTC (rev 287877)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2022-01-11 15:18:25 UTC (rev 287878)
@@ -1,3 +1,14 @@
+2022-01-11  Tim Nguyen  <[email protected]>
+
+        ::backdrop pseudo element should react to associated element event listeners
+        https://bugs.webkit.org/show_bug.cgi?id=233072
+
+        Reviewed by Alan Bujtas.
+
+        Update test expectations.
+
+        * web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt:
+
 2022-01-10  Chris Dumez  <[email protected]>
 
         Resync web-platform-tests/html from upstream

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt (287877 => 287878)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt	2022-01-11 14:43:30 UTC (rev 287877)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt	2022-01-11 15:18:25 UTC (rev 287878)
@@ -1,5 +1,3 @@
 
-Harness Error (TIMEOUT), message = null
+PASS Test that ::backdrop receives events for the associated element
 
-NOTRUN Test that ::backdrop receives events for the associated element
-

Copied: trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt (from rev 287877, trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt) (0 => 287878)


--- trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events-expected.txt	2022-01-11 15:18:25 UTC (rev 287878)
@@ -0,0 +1,4 @@
+
+Harness Error (TIMEOUT), message = null
+
+NOTRUN Test that ::backdrop receives events for the associated element

Modified: trunk/Source/WebCore/ChangeLog (287877 => 287878)


--- trunk/Source/WebCore/ChangeLog	2022-01-11 14:43:30 UTC (rev 287877)
+++ trunk/Source/WebCore/ChangeLog	2022-01-11 15:18:25 UTC (rev 287878)
@@ -1,3 +1,21 @@
+2022-01-11  Tim Nguyen  <[email protected]>
+
+        ::backdrop pseudo element should react to associated element event listeners
+        https://bugs.webkit.org/show_bug.cgi?id=233072
+
+        Reviewed by Alan Bujtas.
+
+        Test: imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-receives-element-events.html
+
+        We now append the ::backdrop renderer as a child of the top layer element, rather than a sibling of the
+        top layer element. This gets hit testing working properly for free.
+
+        We used to append the ::backdrop renderer as a sibling to get the proper layout, but this is no longer
+        necessary after r287683 and r287845.
+
+        * rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:
+        (WebCore::RenderTreeUpdater::GeneratedContent::updateBackdropRenderer):
+
 2022-01-11  Adrian Perez de Castro  <[email protected]>
 
         Non-unified build fixes, early January 2022 edition

Modified: trunk/Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp (287877 => 287878)


--- trunk/Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp	2022-01-11 14:43:30 UTC (rev 287877)
+++ trunk/Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp	2022-01-11 15:18:25 UTC (rev 287878)
@@ -185,30 +185,14 @@
     }
 
     auto newStyle = RenderStyle::clone(*style);
-    RenderPtr<RenderBlockFlow> newBackdropRenderer;
-    auto backdropRenderer = renderer.backdropRenderer();
-    if (backdropRenderer)
+    if (auto backdropRenderer = renderer.backdropRenderer())
         backdropRenderer->setStyle(WTFMove(newStyle));
     else {
-        newBackdropRenderer = WebCore::createRenderer<RenderBlockFlow>(renderer.document(), WTFMove(newStyle));
+        auto newBackdropRenderer = WebCore::createRenderer<RenderBlockFlow>(renderer.document(), WTFMove(newStyle));
         newBackdropRenderer->initializeStyle();
-        backdropRenderer = newBackdropRenderer.get();
-        renderer.setBackdropRenderer(*backdropRenderer);
+        renderer.setBackdropRenderer(*newBackdropRenderer.get());
+        m_updater.m_builder.attach(renderer, WTFMove(newBackdropRenderer), renderer.firstChild());
     }
-
-    // Update or attach to renderer parent
-    WeakPtr currentParent = backdropRenderer->parent();
-    WeakPtr newParent = renderer.parent();
-
-    ASSERT(newParent, "Should have new parent");
-
-    if (newParent == currentParent)
-        return;
-
-    if (currentParent)
-        m_updater.m_builder.attach(*newParent, m_updater.m_builder.detach(*currentParent, *backdropRenderer, RenderTreeBuilder::CanCollapseAnonymousBlock::No), &renderer);
-    else
-        m_updater.m_builder.attach(*newParent, WTFMove(newBackdropRenderer), &renderer);
 }
 
 bool RenderTreeUpdater::GeneratedContent::needsPseudoElement(const Style::ElementUpdate* update)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to