Title: [289617] trunk
Revision
289617
Author
[email protected]
Date
2022-02-11 04:47:17 -0800 (Fri, 11 Feb 2022)

Log Message

[CSS Container Queries] Implement container name matching
https://bugs.webkit.org/show_bug.cgi?id=236495

Reviewed by Tim Nguyen.

LayoutTests/imported/w3c:

* web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt:

Source/WebCore:

Find the right container to evaluate against.

* style/ContainerQueryEvaluator.cpp:
(WebCore::Style::ContainerQueryEvaluator::evaluate const):

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (289616 => 289617)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2022-02-11 12:05:38 UTC (rev 289616)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2022-02-11 12:47:17 UTC (rev 289617)
@@ -1,3 +1,13 @@
+2022-02-11  Antti Koivisto  <[email protected]>
+
+        [CSS Container Queries] Implement container name matching
+        https://bugs.webkit.org/show_bug.cgi?id=236495
+
+        Reviewed by Tim Nguyen.
+
+        * web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt:
+        * web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt:
+
 2022-02-11  Andreu Botella  <[email protected]>
 
         Clicking on an <input type="image"> will submit the form with null submitter

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt (289616 => 289617)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt	2022-02-11 12:05:38 UTC (rev 289616)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt	2022-02-11 12:47:17 UTC (rev 289617)
@@ -1,5 +1,5 @@
 Test
 
-FAIL Changing a named container invalidates relevant descendants assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
-FAIL Changing container-name invalidates relevant descendants assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+PASS Changing a named container invalidates relevant descendants
+FAIL Changing container-name invalidates relevant descendants assert_equals: expected "rgb(0, 0, 0)" but got "rgb(0, 128, 0)"
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt (289616 => 289617)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt	2022-02-11 12:05:38 UTC (rev 289616)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt	2022-02-11 12:47:17 UTC (rev 289617)
@@ -12,9 +12,9 @@
 FAIL name(b) size(width: 16px) for .a-size > .b-size > span assert_equals: expected "true" but got ""
 PASS name(c) size(width) for .a-size > .b-size > span
 FAIL name(a) size(width: 16px) for .a-size > .a-size > span assert_equals: expected "true" but got ""
-FAIL a size(width: 32px) for .a-size > .b-size > span assert_equals: expected "true" but got ""
+PASS a size(width: 32px) for .a-size > .b-size > span
 PASS b size(width: 16px) for .a-size > .b-size > span
-FAIL c size(width) for .a-size > .b-size > span assert_equals: expected "" but got "true"
+PASS c size(width) for .a-size > .b-size > span
 PASS a size(width: 16px) for .a-size > .a-size > span
 PASS a size(width: 32px) for .a-size > .a > span
 FAIL name(a) type(inline-size) size(width: 8px) for .a-size > .b-size > .a-inline > span assert_equals: expected "true" but got ""

Modified: trunk/Source/WebCore/ChangeLog (289616 => 289617)


--- trunk/Source/WebCore/ChangeLog	2022-02-11 12:05:38 UTC (rev 289616)
+++ trunk/Source/WebCore/ChangeLog	2022-02-11 12:47:17 UTC (rev 289617)
@@ -1,3 +1,15 @@
+2022-02-11  Antti Koivisto  <[email protected]>
+
+        [CSS Container Queries] Implement container name matching
+        https://bugs.webkit.org/show_bug.cgi?id=236495
+
+        Reviewed by Tim Nguyen.
+
+        Find the right container to evaluate against.
+
+        * style/ContainerQueryEvaluator.cpp:
+        (WebCore::Style::ContainerQueryEvaluator::evaluate const):
+
 2022-02-11  Tim Nguyen  <[email protected]>
 
         Add build phase to copy PDF.js resources to WebCore.framework resources

Modified: trunk/Source/WebCore/style/ContainerQueryEvaluator.cpp (289616 => 289617)


--- trunk/Source/WebCore/style/ContainerQueryEvaluator.cpp	2022-02-11 12:05:38 UTC (rev 289616)
+++ trunk/Source/WebCore/style/ContainerQueryEvaluator.cpp	2022-02-11 12:47:17 UTC (rev 289617)
@@ -64,8 +64,20 @@
     if (m_containers.isEmpty())
         return false;
 
-    // FIXME: Match the container selector.
-    auto* renderer = m_containers.last()->renderer();
+    auto rendererForContainerSelector = [&]() -> RenderBox* {
+        for (auto& container : makeReversedRange(m_containers)) {
+            auto* renderer = dynamicDowncast<RenderBox>(container->renderer());
+            if (!renderer)
+                return nullptr;
+            if (containerQuery.containerName.isEmpty())
+                return renderer;
+            if (renderer->style().containerNames().contains(containerQuery.containerName))
+                return renderer;
+        }
+        return nullptr;
+    };
+
+    auto* renderer = rendererForContainerSelector();
     if (!renderer)
         return false;
 
@@ -74,9 +86,6 @@
 
     auto evaluateSize = [&](const MediaQueryExpression& _expression_, Comparator comparator, auto&& sizeGetter)
     {
-        if (!is<RenderBox>(renderer))
-            return false;
-
         std::optional<LayoutUnit> expressionSize;
 
         if (comparator != Comparator::True) {
@@ -85,7 +94,7 @@
                 return false;
         }
 
-        auto size = sizeGetter(downcast<RenderBox>(*renderer));
+        auto size = sizeGetter(*renderer);
 
         switch (comparator) {
         case Comparator::Lesser:
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to