[CSS Container Queries] Basic parsing support for container-type property
https://bugs.webkit.org/show_bug.cgi?id=235514
Reviewed by Sam Weinig.
LayoutTests/imported/w3c:
* web-platform-tests/css/css-contain/container-queries/animation-container-size-expected.txt:
* web-platform-tests/css/css-contain/container-queries/animation-container-type-dynamic-expected.txt:
* web-platform-tests/css/css-contain/container-queries/animation-nested-animation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/animation-nested-transition-expected.txt:
* web-platform-tests/css/css-contain/container-queries/aspect-ratio-feature-evaluation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt:
* web-platform-tests/css/css-contain/container-queries/auto-scrollbars-expected.txt:
* web-platform-tests/css/css-contain/container-queries/backdrop-invalidation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/conditional-container-status-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-for-shadow-dom.tentative-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-inheritance-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-name-computed-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-size-invalidation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-type-computed-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-type-containment-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-type-invalidation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-type-layout-invalidation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-type-parsing-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-units-animation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-units-basic-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-units-computational-independence-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-units-invalidation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-units-selection-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt:
* web-platform-tests/css/css-contain/container-queries/counters-flex-circular-expected.txt:
* web-platform-tests/css/css-contain/container-queries/display-contents-expected.txt:
* web-platform-tests/css/css-contain/container-queries/display-none-expected.txt:
* web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic-expected.txt:
* web-platform-tests/css/css-contain/container-queries/font-relative-units-expected.txt:
* web-platform-tests/css/css-contain/container-queries/get-animations-expected.txt:
* web-platform-tests/css/css-contain/container-queries/iframe-invalidation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/ineligible-containment-expected.txt:
* web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width-expected.txt:
* web-platform-tests/css/css-contain/container-queries/inline-size-containment-expected.txt:
* web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl-expected.txt:
* web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query-expected.txt:
* web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal-expected.txt:
* web-platform-tests/css/css-contain/container-queries/pseudo-elements-001-expected.txt:
* web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative-expected.txt:
* web-platform-tests/css/css-contain/container-queries/query-content-box-expected.txt:
* web-platform-tests/css/css-contain/container-queries/query-evaluation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child-expected.txt:
* web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box-expected.txt:
* web-platform-tests/css/css-contain/container-queries/size-feature-evaluation-expected.txt:
* web-platform-tests/css/css-contain/container-queries/style-change-in-container-expected.txt:
* web-platform-tests/css/css-contain/container-queries/top-layer-dialog-container-expected.txt:
* web-platform-tests/css/css-contain/container-queries/top-layer-dialog-expected.txt:
* web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog-expected.txt:
* web-platform-tests/css/css-contain/container-queries/transition-scrollbars-expected.txt:
* web-platform-tests/css/css-contain/container-queries/transition-style-change-event-expected.txt:
* web-platform-tests/css/css-contain/container-queries/unsupported-axis-expected.txt:
* web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic-expected.txt:
* web-platform-tests/css/css-contain/container-queries/viewport-units-expected.txt:
Source/WebCore:
Parse 'container-type' with values 'none', 'size' and 'inline-size.
https://drafts.csswg.org/css-contain-3/#container-type
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ContainerType const):
* css/CSSProperties.json:
* css/CSSValueKeywords.in:
* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::containerType const):
(WebCore::RenderStyle::setContainerType):
(WebCore::RenderStyle::initialContainerType):
* rendering/style/RenderStyleConstants.h:
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator== const):
* rendering/style/StyleRareNonInheritedData.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@288465 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog
index 4749f84..3921be8 100644
--- a/LayoutTests/imported/w3c/ChangeLog
+++ b/LayoutTests/imported/w3c/ChangeLog
@@ -1,5 +1,71 @@
2022-01-24 Antti Koivisto <antti@apple.com>
+ [CSS Container Queries] Basic parsing support for container-type property
+ https://bugs.webkit.org/show_bug.cgi?id=235514
+
+ Reviewed by Sam Weinig.
+
+ * web-platform-tests/css/css-contain/container-queries/animation-container-size-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/animation-container-type-dynamic-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/animation-nested-animation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/animation-nested-transition-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/aspect-ratio-feature-evaluation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/auto-scrollbars-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/backdrop-invalidation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/conditional-container-status-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-for-shadow-dom.tentative-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-inheritance-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-name-computed-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-size-invalidation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-type-computed-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-type-containment-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-type-invalidation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-type-layout-invalidation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-type-parsing-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-units-animation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-units-basic-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-units-computational-independence-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-units-invalidation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-units-selection-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/counters-flex-circular-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/display-contents-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/display-none-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/font-relative-units-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/get-animations-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/iframe-invalidation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/ineligible-containment-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/inline-size-containment-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/pseudo-elements-001-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/query-content-box-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/query-evaluation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/size-feature-evaluation-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/style-change-in-container-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/top-layer-dialog-container-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/top-layer-dialog-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/transition-scrollbars-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/transition-style-change-event-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/unsupported-axis-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic-expected.txt:
+ * web-platform-tests/css/css-contain/container-queries/viewport-units-expected.txt:
+
+2022-01-24 Antti Koivisto <antti@apple.com>
+
[CSS Container Queries] Import WPT tests
https://bugs.webkit.org/show_bug.cgi?id=235508
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt
index 46ebb68..0748e77 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt
@@ -97,6 +97,7 @@
PASS column-span
PASS column-width
PASS contain
+PASS container-type
PASS content
PASS counter-increment
PASS counter-reset
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-container-size-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-container-size-expected.txt
index 7f3e18e..53d7cc9 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-container-size-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-container-size-expected.txt
@@ -1,5 +1,4 @@
Test
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Animation affects container query evaluation assert_equals: expected "rgb(0, 0, 255)" but got "rgb(0, 128, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-container-type-dynamic-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-container-type-dynamic-expected.txt
index 7f3e18e..955d475 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-container-type-dynamic-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-container-type-dynamic-expected.txt
@@ -1,5 +1,4 @@
Test
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Animated container creating new container assert_equals: expected "rgb(0, 0, 255)" but got "rgb(255, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-nested-animation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-nested-animation-expected.txt
index 7f3e18e..38864dd 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-nested-animation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-nested-animation-expected.txt
@@ -1,5 +1,4 @@
Test
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Animated container can create inner animation assert_equals: expected "rgb(0, 0, 255)" but got "rgb(0, 128, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-nested-transition-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-nested-transition-expected.txt
index 7f3e18e..c7326ea 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-nested-transition-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/animation-nested-transition-expected.txt
@@ -1,5 +1,4 @@
Test
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Animated container size triggers transition assert_equals: expected "rgb(150, 150, 150)" but got "rgb(100, 100, 100)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/aspect-ratio-feature-evaluation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/aspect-ratio-feature-evaluation-expected.txt
index 71ac6c4..b8dbfd5 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/aspect-ratio-feature-evaluation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/aspect-ratio-feature-evaluation-expected.txt
@@ -1,4 +1,4 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL @container queries with aspect-ratio and size containment assert_equals: Should match for block-size containment expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
+FAIL @container query with aspect-ratio change after resize assert_equals: Should match 2/1 min-ratio expected "rgb(0, 255, 0)" but got "rgba(0, 0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt
index 71ac6c4..e0178c2 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt
@@ -1,4 +1,68 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL size(width) assert_equals: expected "true" but got ""
+FAIL size(min-width: 0px) assert_equals: expected "true" but got ""
+FAIL size(max-width: 0px) assert_equals: expected "true" but got ""
+FAIL size(height) assert_equals: expected "true" but got ""
+FAIL size(min-height: 0px) assert_equals: expected "true" but got ""
+FAIL size(max-height: 0px) assert_equals: expected "true" but got ""
+FAIL size(aspect-ratio) assert_equals: expected "true" but got ""
+FAIL size(min-aspect-ratio: 1/2) assert_equals: expected "true" but got ""
+FAIL size(max-aspect-ratio: 1/2) assert_equals: expected "true" but got ""
+FAIL size(orientation: portrait) assert_equals: expected "true" but got ""
+FAIL size(inline-size) assert_equals: expected "true" but got ""
+FAIL size(min-inline-size: 0px) assert_equals: expected "true" but got ""
+FAIL size(max-inline-size: 0px) assert_equals: expected "true" but got ""
+FAIL size(block-size) assert_equals: expected "true" but got ""
+FAIL size(min-block-size: 0px) assert_equals: expected "true" but got ""
+FAIL size(max-block-size: 0px) assert_equals: expected "true" but got ""
+FAIL size(width: 100px) assert_equals: expected "true" but got ""
+FAIL size((width: 100px)) assert_equals: expected "true" but got ""
+FAIL size(not (width: 100px)) assert_equals: expected "true" but got ""
+FAIL size((width: 100px) and (height: 100px)) assert_equals: expected "true" but got ""
+FAIL size((width: 50px) or (height: 100px)) assert_equals: expected "true" but got ""
+FAIL size(width < 100px) assert_equals: expected "true" but got ""
+FAIL size(100px < width) assert_equals: expected "true" but got ""
+FAIL size(100px < width < 200px) assert_equals: expected "true" but got ""
+PASS foo(width)
+PASS size(asdf)
+PASS size(resolution > 100dpi)
+PASS size(resolution: 150dpi)
+PASS size(color)
+PASS size(min-color: 1)
+PASS size(color-index >= 1)
+PASS (color-index >= 1)
+PASS size(grid)
+PASS (grid)
+FAIL screen assert_equals: expected 0 but got 1
+FAIL print assert_equals: expected 0 but got 1
+FAIL not print assert_equals: expected 0 but got 1
+FAIL only print assert_equals: expected 0 but got 1
+FAIL screen and (width: 100px) assert_equals: expected 0 but got 1
+FAIL screen or (width: 100px) assert_equals: expected 0 but got 1
+FAIL not screen and (width: 100px) assert_equals: expected 0 but got 1
+FAIL not screen or (width: 100px) assert_equals: expected 0 but got 1
+FAIL (width: 100px), (height: 100px) assert_equals: expected 0 but got 1
+PASS Container selector: foo
+PASS Container selector: foo
+PASS Container selector: name(foo)
+PASS Container selector: name( foo )
+PASS Container selector: type(size)
+PASS Container selector: type( size )
+PASS Container selector: type(inline-size)
+PASS Container selector: type(block-size)
+PASS Container selector: name(bar) type(block-size)
+PASS Container selector: type(block-size) name(bar)
+FAIL Container selector: foo foo assert_equals: expected 0 but got 1
+FAIL Container selector: 1px assert_equals: expected 0 but got 1
+FAIL Container selector: 50gil assert_equals: expected 0 but got 1
+FAIL Container selector: name(1px) assert_equals: expected 0 but got 1
+FAIL Container selector: type(1px) assert_equals: expected 0 but got 1
+FAIL Container selector: type(red) assert_equals: expected 0 but got 1
+FAIL Container selector: type(size) type(size) assert_equals: expected 0 but got 1
+FAIL Container selector: type(inline-size) type(block-size) assert_equals: expected 0 but got 1
+FAIL Container selector: name(foo) name(bar) assert_equals: expected 0 but got 1
+FAIL Container selector: type(inline-size) name(foo) type(block-size) assert_equals: expected 0 but got 1
+FAIL Container selector: name(foo) type(size) name(bar) assert_equals: expected 0 but got 1
+FAIL Container selector: name(type(size)) assert_equals: expected 0 but got 1
+FAIL Container selector: type(name(bar)) assert_equals: expected 0 but got 1
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/auto-scrollbars-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/auto-scrollbars-expected.txt
index 71ac6c4..478c8bf 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/auto-scrollbars-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/auto-scrollbars-expected.txt
@@ -1,4 +1,4 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Initial layout - expecting a scrollbar without overflowing content instead of overflowing content without a scrollbar assert_equals: Layout with a scrollbar means the container query applies expected "50px" but got "100px"
+FAIL Same result after a reflow assert_equals: Layout with a scrollbar means the container query applies expected "50px" but got "100px"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/backdrop-invalidation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/backdrop-invalidation-expected.txt
index 71ac6c4..f20352e 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/backdrop-invalidation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/backdrop-invalidation-expected.txt
@@ -1,4 +1,3 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Pseudo-element ::backdrop responds to container size changes assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/conditional-container-status-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/conditional-container-status-expected.txt
index 72e7513..68bc688 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/conditional-container-status-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/conditional-container-status-expected.txt
@@ -1,5 +1,4 @@
You should see a green border around this text
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Conditionally applying container-type:initial assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt
index 71ac6c4..6ec109f 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt
@@ -1,4 +1,16 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Property container value 'initial' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'inherit' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'unset' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'inline-size' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'size' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'inline-size / inline-size' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'size / block-size' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'size style / name' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'inline-size state style/ name' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'inline-size / foo' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'inline-size /foo' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'inline-size/ foo' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'inline-size/foo' assert_true: container doesn't seem to be supported in the computed style expected true got false
+FAIL Property container value 'size / FoO' assert_true: container doesn't seem to be supported in the computed style expected true got false
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-for-shadow-dom.tentative-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-for-shadow-dom.tentative-expected.txt
index 71ac6c4..d81ef24 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-for-shadow-dom.tentative-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-for-shadow-dom.tentative-expected.txt
@@ -1,4 +1,12 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Match container in outer tree null is not an object (evaluating 'document.querySelector("#inclusive-ancestor-across-root > div").shadowRoot.querySelector')
+FAIL Match container in same tree, not walking flat tree ancestors assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Match container in ::slotted selector's originating element tree assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Match container in outer tree for :host assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Match container in ::part selector's originating element tree null is not an object (evaluating 'document.querySelector("#inclusive-ancestor-part > div").shadowRoot.querySelector')
+FAIL Match container for ::before in ::slotted selector's originating element tree assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Match container in outer tree for :host::before assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Match container for ::before in ::part selector's originating element tree null is not an object (evaluating 'document.querySelector("#inclusive-ancestor-part-before > div").shadowRoot.querySelector')
+FAIL Match container for ::part selector's originating element tree for exportparts null is not an object (evaluating 'outerhost.shadowRoot.querySelector')
+FAIL Match container for slot light tree child fallback null is not an object (evaluating 'document.querySelector("#inclusive-ancestor-slot-fallback > div").shadowRoot.querySelector')
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-inheritance-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-inheritance-expected.txt
index 71ac6c4..3f72cf6 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-inheritance-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-inheritance-expected.txt
@@ -1,4 +1,6 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Property container-name has initial value none assert_true: container-name doesn't seem to be supported in the computed style expected true got false
+FAIL Property container-name does not inherit assert_true: expected true got false
+PASS Property container-type has initial value none
+PASS Property container-type does not inherit
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-computed-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-computed-expected.txt
index 71ac6c4..0601e10 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-computed-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-computed-expected.txt
@@ -1,4 +1,6 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Property container-name value 'initial' assert_true: container-name doesn't seem to be supported in the computed style expected true got false
+FAIL Property container-name value 'unset' assert_true: container-name doesn't seem to be supported in the computed style expected true got false
+FAIL Property container-name value 'foo' assert_true: container-name doesn't seem to be supported in the computed style expected true got false
+FAIL Property container-name value 'FoO' assert_true: container-name doesn't seem to be supported in the computed style expected true got false
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt
index 7f3e18e..2d00a4d 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-invalidation-expected.txt
@@ -1,5 +1,5 @@
Test
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+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)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt
index 71ac6c4..11c83a1 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt
@@ -1,4 +1,15 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL e.style['container-name'] = "initial" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-name'] = "inherit" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-name'] = "unset" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-name'] = "revert" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-name'] = "none" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-name'] = "foo" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-name'] = "BAR" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-name'] = "foo bar" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['container-name'] = "none none" should not set the property value
+PASS e.style['container-name'] = "foo, bar" should not set the property value
+PASS e.style['container-name'] = "#fff" should not set the property value
+PASS e.style['container-name'] = "1px" should not set the property value
+PASS e.style['container-name'] = "default" should not set the property value
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt
index 71ac6c4..de24056 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt
@@ -1,4 +1,37 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL e.style['container'] = "initial" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "inherit" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "unset" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "revert" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "none" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "none / none" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "inline-size" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "inline-size / none" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "size" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "size / block-size" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "inline-size / inline-size" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "size / size" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container'] = "size state / none" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['container'] = "none none" should not set the property value
+PASS e.style['container'] = "none inline-size" should not set the property value
+PASS e.style['container'] = "inline-size none" should not set the property value
+PASS e.style['container'] = "inline-size inline-size" should not set the property value
+PASS e.style['container'] = "inline-size block-size unknown" should not set the property value
+PASS e.style['container'] = "inline-size block-size" should not set the property value
+PASS e.style['container'] = "size block-size" should not set the property value
+PASS e.style['container'] = "none, none" should not set the property value
+PASS e.style['container'] = "foo" should not set the property value
+PASS e.style['container'] = "foo, bar" should not set the property value
+PASS e.style['container'] = "#fff" should not set the property value
+PASS e.style['container'] = "1px" should not set the property value
+PASS e.style['container'] = "default" should not set the property value
+PASS e.style['container'] = "inline-size / 10px" should not set the property value
+PASS e.style['container'] = "inline-size / #fefefe" should not set the property value
+PASS e.style['container'] = "inline-size / calc(3px)" should not set the property value
+PASS e.style['container'] = "size 1 / name" should not set the property value
+PASS e.style['container'] = "block-size" should not set the property value
+PASS e.style['container'] = "block-size / name" should not set the property value
+PASS e.style['container'] = "block-size / NAME" should not set the property value
+PASS e.style['container'] = "block-size/NAME" should not set the property value
+PASS e.style['container'] = "block-size / block-size" should not set the property value
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt
index 71ac6c4..062bcce 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-selection-expected.txt
@@ -1,4 +1,27 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL size(width: 16px) for .size > .inline > span assert_equals: expected "true" but got ""
+FAIL size(height: 16px) for .inline > .size > span assert_equals: expected "true" but got ""
+FAIL size(width: 16px) for .inline > .size > span assert_equals: expected "true" but got ""
+PASS size(height) for .size > .inline > span
+FAIL type(inline-size) size(width: 16px) for .inline > .size > span assert_equals: expected "true" but got ""
+FAIL type(inline-size) size(width: 16px) for .size > .inline > span assert_equals: expected "true" but got ""
+FAIL type(size) size(height: 16px) for .inline > .size > span assert_equals: expected "true" but got ""
+FAIL type(size) size(height: 32px) for .size > .inline > span assert_equals: expected "true" but got ""
+PASS type(size) size(height) for .inline > .inline > span
+FAIL name(a) size(width: 32px) for .a-size > .b-size > span assert_equals: expected "true" but got ""
+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 ""
+FAIL b size(width: 16px) for .a-size > .b-size > span assert_equals: expected "true" but got ""
+PASS c size(width) for .a-size > .b-size > span
+FAIL a size(width: 16px) for .a-size > .a-size > span assert_equals: expected "true" but got ""
+FAIL a size(width: 32px) for .a-size > .a > span assert_equals: expected "true" but got ""
+FAIL name(a) type(inline-size) size(width: 8px) for .a-size > .b-size > .a-inline > span assert_equals: expected "true" but got ""
+FAIL name(b) type(inline-size) size(width: 16px) for .a-size > .b-size > .a-inline > span assert_equals: expected "true" but got ""
+FAIL name(a) type(size) size(width: 32px) for .a-size > .b-size > .a-inline > span assert_equals: expected "true" but got ""
+FAIL name(b) type(size) size(width: 16px) for .a-size > .b-size > .a-inline > span assert_equals: expected "true" but got ""
+PASS name(a) type(size) size(width) for .a-inline > .b-size
+FAIL type(inline-size) name(a) size(width: 8px) for .a-size > .b-size > .a-inline > span assert_equals: expected "true" but got ""
+FAIL type(size) name(a) size(height: 32px) for .a-size > .b-size > .a-inline > span assert_equals: expected "true" but got ""
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-size-invalidation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-size-invalidation-expected.txt
index 3305cd2..012a858 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-size-invalidation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-size-invalidation-expected.txt
@@ -2,6 +2,6 @@
Deep
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Children respond to changes in container size assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
+FAIL Descendants respond to changes in container size assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-computed-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-computed-expected.txt
index 71ac6c4..db6b612 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-computed-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-computed-expected.txt
@@ -1,4 +1,6 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS Property container-type value 'initial'
+PASS Property container-type value 'unset'
+PASS Property container-type value 'inline-size'
+PASS Property container-type value 'size'
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-containment-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-containment-expected.txt
index b862687..4869ea5 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-containment-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-containment-expected.txt
@@ -1,6 +1,8 @@
-
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
AA
A
+FAIL container-type:inline-size turns on layout containment assert_equals: expected 33 but got 8
+FAIL container-type:inline-size turns on inline-size containment assert_equals: expected 0 but got 12
+FAIL container-type:size turns on full size containment assert_equals: expected 0 but got 18
+PASS container-type:inline/size turns on style containment
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-invalidation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-invalidation-expected.txt
index 7f3e18e..c351c23 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-invalidation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-invalidation-expected.txt
@@ -1,5 +1,4 @@
Test
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Changing the container type invalidates relevant descendants assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-layout-invalidation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-layout-invalidation-expected.txt
index 7cfb9d6..3b774e7 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-layout-invalidation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-layout-invalidation-expected.txt
@@ -1,5 +1,4 @@
content
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Changing container-type invalidates layout assert_equals: expected 0 but got 47
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-parsing-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-parsing-expected.txt
index 71ac6c4..bde1f7d 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-parsing-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-parsing-expected.txt
@@ -1,4 +1,32 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS e.style['container-type'] = "initial" should set the property value
+PASS e.style['container-type'] = "inherit" should set the property value
+PASS e.style['container-type'] = "unset" should set the property value
+PASS e.style['container-type'] = "revert" should set the property value
+PASS e.style['container-type'] = "none" should set the property value
+FAIL e.style['container-type'] = "style" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-type'] = "state" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['container-type'] = "size" should set the property value
+PASS e.style['container-type'] = "inline-size" should set the property value
+FAIL e.style['container-type'] = "inline-size state" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-type'] = "style state" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-type'] = "style inline-size" should set the property value assert_not_equals: property should be set got disallowed value ""
+FAIL e.style['container-type'] = "state size" should set the property value assert_not_equals: property should be set got disallowed value ""
+PASS e.style['container-type'] = "block-size" should not set the property value
+PASS e.style['container-type'] = "none none" should not set the property value
+PASS e.style['container-type'] = "none inline-size" should not set the property value
+PASS e.style['container-type'] = "inline-size none" should not set the property value
+PASS e.style['container-type'] = "inline-size inline-size" should not set the property value
+PASS e.style['container-type'] = "inline-size block-size" should not set the property value
+PASS e.style['container-type'] = "block-size inline-size" should not set the property value
+PASS e.style['container-type'] = "size inline-size" should not set the property value
+PASS e.style['container-type'] = "inline-size size" should not set the property value
+PASS e.style['container-type'] = "none, none" should not set the property value
+PASS e.style['container-type'] = "foo" should not set the property value
+PASS e.style['container-type'] = "\"foo\"" should not set the property value
+PASS e.style['container-type'] = "foo, bar" should not set the property value
+PASS e.style['container-type'] = "#fff" should not set the property value
+PASS e.style['container-type'] = "1px" should not set the property value
+PASS e.style['container-type'] = "default" should not set the property value
+PASS e.style['container-type'] = "size nonsense" should not set the property value
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-animation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-animation-expected.txt
index 71ac6c4..070c4c8 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-animation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-animation-expected.txt
@@ -1,4 +1,14 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Animation using qw unit assert_equals: expected "60px" but got "auto"
+FAIL Animation using qw unit responds to changing container size assert_equals: expected "60px" but got "auto"
+FAIL Animation using qh unit assert_equals: expected "60px" but got "auto"
+FAIL Animation using qh unit responds to changing container size assert_equals: expected "60px" but got "auto"
+FAIL Animation using qi unit assert_equals: expected "60px" but got "auto"
+FAIL Animation using qi unit responds to changing container size assert_equals: expected "60px" but got "auto"
+FAIL Animation using qb unit assert_equals: expected "60px" but got "auto"
+FAIL Animation using qb unit responds to changing container size assert_equals: expected "60px" but got "auto"
+FAIL Animation using qmin unit assert_equals: expected "60px" but got "auto"
+FAIL Animation using qmin unit responds to changing container size assert_equals: expected "60px" but got "auto"
+FAIL Animation using qmax unit assert_equals: expected "60px" but got "auto"
+FAIL Animation using qmax unit responds to changing container size assert_equals: expected "60px" but got "auto"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-basic-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-basic-expected.txt
index 7f3e18e..d44bc68 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-basic-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-basic-expected.txt
@@ -1,5 +1,5 @@
Test
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Container relative units assert_equals: expected "3px" but got "0px"
+FAIL Container relative units in math functions assert_equals: expected "30px" but got "0px"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-computational-independence-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-computational-independence-expected.txt
index 71ac6c4..058839d 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-computational-independence-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-computational-independence-expected.txt
@@ -1,4 +1,8 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS Container relative unit qw is not computationally independent
+PASS Container relative unit qh is not computationally independent
+PASS Container relative unit qi is not computationally independent
+PASS Container relative unit qb is not computationally independent
+PASS Container relative unit qmin is not computationally independent
+PASS Container relative unit qmax is not computationally independent
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-invalidation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-invalidation-expected.txt
index 7f3e18e..3c9ccb8 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-invalidation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-invalidation-expected.txt
@@ -1,5 +1,8 @@
Test
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL qi respond when selected container changes type (inline-size -> none) assert_equals: expected "30px" but got "0px"
+FAIL qb respond when selected container changes type (size -> none) assert_equals: expected "40px" but got "0px"
+FAIL qb respond when intermediate container changes type (inline-size -> size) assert_equals: expected "40px" but got "0px"
+FAIL qi respond when selected container changes inline-size assert_equals: expected "30px" but got "0px"
+FAIL qb respond when selected container changes block-size assert_equals: expected "40px" but got "0px"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-selection-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-selection-expected.txt
index 7f3e18e..e9466b9 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-selection-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-selection-expected.txt
@@ -1,5 +1,5 @@
Test
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Container units select the proper container assert_equals: expected "10px" but got "0px"
+FAIL Units respond to the writing-mode of the element assert_equals: expected "30px" but got "0px"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt
index 71ac6c4..ada0217 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt
@@ -1,4 +1,26 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL CSS.qw function func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL Reify value with qw unit null is not an object (evaluating 'value.value')
+FAIL Set value with qw unit (string) element.attributeStyleMap.set is not a function. (In 'element.attributeStyleMap.set('top', `10${unit}`)', 'element.attributeStyleMap.set' is undefined)
+FAIL Set value with qw unit (CSS.qw) func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL CSS.qh function func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL Reify value with qh unit null is not an object (evaluating 'value.value')
+FAIL Set value with qh unit (string) element.attributeStyleMap.set is not a function. (In 'element.attributeStyleMap.set('top', `10${unit}`)', 'element.attributeStyleMap.set' is undefined)
+FAIL Set value with qh unit (CSS.qh) func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL CSS.qi function func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL Reify value with qi unit null is not an object (evaluating 'value.value')
+FAIL Set value with qi unit (string) element.attributeStyleMap.set is not a function. (In 'element.attributeStyleMap.set('top', `10${unit}`)', 'element.attributeStyleMap.set' is undefined)
+FAIL Set value with qi unit (CSS.qi) func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL CSS.qb function func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL Reify value with qb unit null is not an object (evaluating 'value.value')
+FAIL Set value with qb unit (string) element.attributeStyleMap.set is not a function. (In 'element.attributeStyleMap.set('top', `10${unit}`)', 'element.attributeStyleMap.set' is undefined)
+FAIL Set value with qb unit (CSS.qb) func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL CSS.qmin function func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL Reify value with qmin unit null is not an object (evaluating 'value.value')
+FAIL Set value with qmin unit (string) element.attributeStyleMap.set is not a function. (In 'element.attributeStyleMap.set('top', `10${unit}`)', 'element.attributeStyleMap.set' is undefined)
+FAIL Set value with qmin unit (CSS.qmin) func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL CSS.qmax function func is not a function. (In 'func(10)', 'func' is undefined)
+FAIL Reify value with qmax unit null is not an object (evaluating 'value.value')
+FAIL Set value with qmax unit (string) element.attributeStyleMap.set is not a function. (In 'element.attributeStyleMap.set('top', `10${unit}`)', 'element.attributeStyleMap.set' is undefined)
+FAIL Set value with qmax unit (CSS.qmax) func is not a function. (In 'func(10)', 'func' is undefined)
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/counters-flex-circular-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/counters-flex-circular-expected.txt
index 71ac6c4..92741d9 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/counters-flex-circular-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/counters-flex-circular-expected.txt
@@ -1,4 +1,6 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS #item1, #container, and #inner should all have the same width: 150
+FAIL The container query should match the layed out width assert_equals: expected "rgb(0, 128, 0)" but got "rgba(0, 0, 0, 0)"
+PASS The sum of the item widths should match the flexbox width
+PASS The size of the flex item #2 should be given by its contents
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/display-contents-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/display-contents-expected.txt
index 71ac6c4..d09b15b 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/display-contents-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/display-contents-expected.txt
@@ -1,4 +1,5 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS getComputedStyle when container is display:contents
+FAIL getComputedStyle when container becomes display:contents assert_equals: expected "30" but got ""
+FAIL getComputedStyle when intermediate container becomes display:contents assert_equals: expected "30" but got ""
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/display-none-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/display-none-expected.txt
index 71ac6c4..8c3a806 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/display-none-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/display-none-expected.txt
@@ -1,4 +1,19 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL getComputedStyle when element is display:none assert_equals: expected "30" but got ""
+FAIL getComputedStyle when parent is display:none assert_equals: expected "30" but got ""
+FAIL getComputedStyle when ancestor is display:none assert_equals: expected "30" but got ""
+PASS getComputedStyle when container is display:none
+FAIL getComputedStyle when element in nested container is display:none assert_equals: expected "30" but got ""
+PASS getComputedStyle when inner container is display:none
+PASS getComputedStyle when intermediate ancestor is display:none
+PASS getComputedStyle when outer container is display:none
+FAIL getComputedStyle when element becomes display:none assert_equals: expected "30" but got ""
+FAIL getComputedStyle when parent becomes display:none assert_equals: expected "30" but got ""
+FAIL getComputedStyle when ancestor becomes display:none assert_equals: expected "30" but got ""
+FAIL getComputedStyle when container becomes display:none assert_equals: expected "30" but got ""
+FAIL getComputedStyle when intermediate container becomes display:none assert_equals: expected "30" but got ""
+FAIL getComputedStyle when ::before is display:none assert_equals: expected "30" but got ""
+FAIL getComputedStyle when originating element is display:none assert_equals: expected "30" but got ""
+FAIL getComputedStyle on ::before when ancestor element is display:none assert_equals: expected "30" but got ""
+PASS getComputedStyle on ::before when container is display:none
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic-expected.txt
index 71ac6c4..227a4cb 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-units-dynamic-expected.txt
@@ -1,4 +1,10 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS em relative before change
+PASS rem relative before change
+PASS ex relative before change
+PASS ch relative before change
+FAIL em relative after change assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
+FAIL rem relative after change assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
+FAIL ex relative after change assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
+FAIL ch relative after change assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-units-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-units-expected.txt
index 71ac6c4..d2fde6b 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-units-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/font-relative-units-expected.txt
@@ -1,4 +1,6 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL em relative inline-size assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL rem relative inline-size assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL ex relative inline-size assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL ch relative inline-size assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/get-animations-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/get-animations-expected.txt
index 3aa7dff..3ef4f66 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/get-animations-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/get-animations-expected.txt
@@ -1,5 +1,4 @@
Green
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Calling getAnimations updates layout of parent frame if needed assert_equals: expected 1 but got 0
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/iframe-invalidation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/iframe-invalidation-expected.txt
index bca7566..4fb193e 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/iframe-invalidation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/iframe-invalidation-expected.txt
@@ -1,5 +1,4 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL @container-dependent elements respond to iframe size changes assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/ineligible-containment-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/ineligible-containment-expected.txt
index 2d7e2ed..2a355e1 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/ineligible-containment-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/ineligible-containment-expected.txt
@@ -3,6 +3,6 @@
Test1
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS Container ineligible for containment
+FAIL Changing containment eligibility invalidates style assert_equals: expected "rgb(255, 0, 0)" but got "rgb(0, 128, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width-expected.txt
index 3aa7dff..014b439 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-and-min-width-expected.txt
@@ -1,5 +1,4 @@
Green
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL min-width of inline-size container affects container size assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-containment-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-containment-expected.txt
index 71ac6c4..7489c5b 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-containment-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-containment-expected.txt
@@ -1,4 +1,3 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL inline-size containment only assert_equals: expected 400 but got 50
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl-expected.txt
index 71ac6c4..7489c5b 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/inline-size-containment-vertical-rl-expected.txt
@@ -1,4 +1,3 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL inline-size containment only assert_equals: expected 400 but got 50
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query-expected.txt
index 7d2fc1fc..b1749e0 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/orthogonal-wm-container-query-expected.txt
@@ -1,5 +1,5 @@
XX
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS Initial non-orthogonal width
+FAIL Orthogonal width assert_equals: expected 50 but got 100
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal-expected.txt
index 71ac6c4..8d7cbb8 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/percentage-padding-orthogonal-expected.txt
@@ -1,4 +1,8 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL #container height measured with 500px width. Both container children visible assert_equals: expected 100 but got 0
+FAIL #container width 400px after padding is applied. assert_equals: expected 400 but got 500
+FAIL #container width 400px after padding is applied. #second is removed from the rendering assert_equals: expected 50 but got 100
+FAIL #container height measured with 499px width. Both container children visible assert_equals: expected 100 but got 0
+FAIL #container width 399px after padding is applied. #second is removed from the rendering assert_equals: expected 399 but got 500
+FAIL #container width 399x after padding is applied. #second is removed from the rendering assert_equals: expected 50 but got 100
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-001-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-001-expected.txt
index 15a18f3..02aec3d 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-001-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-001-expected.txt
@@ -1,6 +1,6 @@
test
One
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Pseudo-elements ::before and ::after respond to container size changes assert_equals: expected "\"before\"" but got "none"
+FAIL Pseudo-element ::marker responds to container size changes assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative-expected.txt
index c7b0568..09d7895 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-003.tentative-expected.txt
@@ -1,6 +1,12 @@
First-line
First-line
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Originating element container for ::before assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Originating element container for ::after assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Originating element container for ::marker assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Originating element container for ::first-line assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Originating element container for ::first-letter assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Originating element container for outer ::first-line assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Originating element container for outer ::first-letter assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Originating element container for ::backdrop assert_equals: ::backdrop rendered expected "rgb(0, 128, 0)" but got "rgb(0, 255, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/query-content-box-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/query-content-box-expected.txt
index 71ac6c4..64030a5 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/query-content-box-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/query-content-box-expected.txt
@@ -1,4 +1,6 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Size queries with content-box sizing assert_equals: expected "rgb(0, 128, 0)" but got "rgba(0, 0, 0, 0)"
+FAIL Size queries with border-box sizing assert_equals: expected "rgb(0, 128, 0)" but got "rgba(0, 0, 0, 0)"
+FAIL Size queries with content-box sizing and overflow:scroll assert_equals: expected "rgb(0, 128, 0)" but got "rgba(0, 0, 0, 0)"
+FAIL Size queries with border-box sizing and overflow:scroll assert_equals: expected "rgb(0, 128, 0)" but got "rgba(0, 0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/query-evaluation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/query-evaluation-expected.txt
index 71ac6c4..fcdda1b 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/query-evaluation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/query-evaluation-expected.txt
@@ -1,4 +1,71 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL size(width) assert_equals: expected "true" but got "false"
+PASS size(height)
+PASS size(unknown)
+PASS unknown(width)
+FAIL (size(width)) assert_equals: expected "true" but got "false"
+PASS (size(height))
+PASS (size(unknown))
+FAIL (((size(width)))) assert_equals: expected "true" but got "false"
+PASS (((size(height))))
+PASS (((size(unknown))))
+PASS (not size(width))
+FAIL (not size(height)) assert_equals: expected "true" but got "false"
+PASS (not size(unknown))
+PASS (not unknown(width))
+FAIL (size(width) and size(width)) assert_equals: expected "true" but got "false"
+FAIL (size(width) and size(width) and size(width)) assert_equals: expected "true" but got "false"
+PASS (size(height) and size(height))
+PASS (size(height) and size(width) and size(width))
+PASS (size(width) and size(height) and size(width))
+PASS (size(width) and size(width) and size(height))
+PASS (size(unknown) and size(width) and size(width))
+PASS (size(width) and size(unknown) and size(width))
+PASS (size(width) and size(width) and size(unknown))
+FAIL (size(width) or size(width)) assert_equals: expected "true" but got "false"
+FAIL (size(width) or size(width) or size(width)) assert_equals: expected "true" but got "false"
+PASS (size(height) or size(height))
+FAIL (size(height) or size(width) or size(width)) assert_equals: expected "true" but got "false"
+FAIL (size(width) or size(height) or size(width)) assert_equals: expected "true" but got "false"
+FAIL (size(width) or size(width) or size(height)) assert_equals: expected "true" but got "false"
+FAIL (size(unknown) or size(width) or size(width)) assert_equals: expected "true" but got "false"
+FAIL (size(width) or size(unknown) or size(width)) assert_equals: expected "true" but got "false"
+FAIL (size(width) or size(width) or size(unknown)) assert_equals: expected "true" but got "false"
+FAIL (size(unknown) or size(height) or size(width)) assert_equals: expected "true" but got "false"
+PASS (not (size(width) and size(width)))
+FAIL (not (size(width) and size(height))) assert_equals: expected "true" but got "false"
+PASS (size(width) and (not (size(height) or size(width))))
+FAIL (size(height) or (not (size(height) and size(width)))) assert_equals: expected "true" but got "false"
+PASS (size(height) or (size(height) and size(width)))
+FAIL size((width)) assert_equals: expected "true" but got "false"
+PASS size((height))
+PASS size((unknown))
+PASS unknown((width))
+PASS size(not (width))
+FAIL size(not (height)) assert_equals: expected "true" but got "false"
+PASS size(not (unknown))
+FAIL size((width) and (width)) assert_equals: expected "true" but got "false"
+FAIL size((width) and (width) and (width)) assert_equals: expected "true" but got "false"
+PASS size((height) and (height))
+PASS size((height) and (width) and (width))
+PASS size((width) and (height) and (width))
+PASS size((width) and (width) and (height))
+PASS size((unknown) and (width) and (width))
+PASS size((width) and (unknown) and (width))
+PASS size((width) and (width) and (unknown))
+FAIL size((width) or (width)) assert_equals: expected "true" but got "false"
+FAIL size((width) or (width) or (width)) assert_equals: expected "true" but got "false"
+PASS size((height) or (height))
+FAIL size((height) or (width) or (width)) assert_equals: expected "true" but got "false"
+FAIL size((width) or (height) or (width)) assert_equals: expected "true" but got "false"
+FAIL size((width) or (width) or (height)) assert_equals: expected "true" but got "false"
+FAIL size((unknown) or (width) or (width)) assert_equals: expected "true" but got "false"
+FAIL size((width) or (unknown) or (width)) assert_equals: expected "true" but got "false"
+FAIL size((width) or (width) or (unknown)) assert_equals: expected "true" but got "false"
+FAIL size((unknown) or (height) or (width)) assert_equals: expected "true" but got "false"
+PASS size(not ((width) and (width)))
+FAIL size(not ((width) and (height))) assert_equals: expected "true" but got "false"
+PASS size((width) and (not ((height) or (width))))
+FAIL size((height) or (not ((height) and (width)))) assert_equals: expected "true" but got "false"
+PASS size((height) or ((height) and (width)))
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child-expected.txt
index 8ac59b7..2e8570b 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/reattach-container-with-dirty-child-expected.txt
@@ -1,5 +1,5 @@
XXX
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Initially wider than 200px assert_equals: expected "rgb(255, 0, 0)" but got "rgb(0, 0, 0)"
+FAIL Container query changed and inner.style applied assert_equals: expected "rgb(0, 255, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box-expected.txt
index 71ac6c4..35f7ed56 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/size-container-no-principal-box-expected.txt
@@ -1,4 +1,5 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Check that container queries is supported assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+PASS (min-width: 0) does not match a container without a principal box (display:none)
+PASS (min-width: 0) does not match a container without a principal box (display:contents)
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/size-feature-evaluation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/size-feature-evaluation-expected.txt
index 7f3e18e..06f4743 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/size-feature-evaluation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/size-feature-evaluation-expected.txt
@@ -1,5 +1,59 @@
Test
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS size(width < 100px) (.horizontal)
+FAIL size(width >= 100px) (.horizontal) assert_equals: expected "true" but got ""
+FAIL size(min-width: 100px) (.horizontal) assert_equals: expected "true" but got ""
+PASS size(min-width: 101px) (.horizontal)
+FAIL size(max-width: 100px) (.horizontal) assert_equals: expected "true" but got ""
+PASS size(max-width: 99px) (.horizontal)
+PASS size(height < 200px) (.horizontal)
+FAIL size(height >= 200px) (.horizontal) assert_equals: expected "true" but got ""
+FAIL size(min-height: 200px) (.horizontal) assert_equals: expected "true" but got ""
+PASS size(min-height: 201px) (.horizontal)
+FAIL size(max-height: 200px) (.horizontal) assert_equals: expected "true" but got ""
+PASS size(max-height: 199px) (.horizontal)
+PASS size(inline-size < 100px) (.horizontal)
+FAIL size(inline-size >= 100px) (.horizontal) assert_equals: expected "true" but got ""
+FAIL size(min-inline-size: 100px) (.horizontal) assert_equals: expected "true" but got ""
+PASS size(min-inline-size: 101px) (.horizontal)
+FAIL size(max-inline-size: 100px) (.horizontal) assert_equals: expected "true" but got ""
+PASS size(max-inline-size: 99px) (.horizontal)
+PASS size(block-size < 200px) (.horizontal)
+FAIL size(block-size >= 200px) (.horizontal) assert_equals: expected "true" but got ""
+FAIL size(min-block-size: 200px) (.horizontal) assert_equals: expected "true" but got ""
+PASS size(min-block-size: 201px) (.horizontal)
+FAIL size(max-block-size: 200px) (.horizontal) assert_equals: expected "true" but got ""
+PASS size(max-block-size: 199px) (.horizontal)
+PASS size(orientation: landscape) (.horizontal)
+FAIL size(orientation: portrait) (.horizontal) assert_equals: expected "true" but got ""
+FAIL size(aspect-ratio: 1/2) (.horizontal) assert_equals: expected "true" but got ""
+PASS size(aspect-ratio: 2/1) (.horizontal)
+PASS size(width < 100px) (.vertical)
+FAIL size(width >= 100px) (.vertical) assert_equals: expected "true" but got ""
+FAIL size(min-width: 100px) (.vertical) assert_equals: expected "true" but got ""
+PASS size(min-width: 101px) (.vertical)
+FAIL size(max-width: 100px) (.vertical) assert_equals: expected "true" but got ""
+PASS size(max-width: 99px) (.vertical)
+PASS size(height < 200px) (.vertical)
+FAIL size(height >= 200px) (.vertical) assert_equals: expected "true" but got ""
+FAIL size(min-height: 200px) (.vertical) assert_equals: expected "true" but got ""
+PASS size(min-height: 201px) (.vertical)
+FAIL size(max-height: 200px) (.vertical) assert_equals: expected "true" but got ""
+PASS size(max-height: 199px) (.vertical)
+PASS size(block-size < 100px) (.vertical)
+FAIL size(block-size >= 100px) (.vertical) assert_equals: expected "true" but got ""
+FAIL size(min-block-size: 100px) (.vertical) assert_equals: expected "true" but got ""
+PASS size(min-block-size: 101px) (.vertical)
+FAIL size(max-block-size: 100px) (.vertical) assert_equals: expected "true" but got ""
+PASS size(max-block-size: 99px) (.vertical)
+PASS size(inline-size < 200px) (.vertical)
+FAIL size(inline-size >= 200px) (.vertical) assert_equals: expected "true" but got ""
+FAIL size(min-inline-size: 200px) (.vertical) assert_equals: expected "true" but got ""
+PASS size(min-inline-size: 201px) (.vertical)
+FAIL size(max-inline-size: 200px) (.vertical) assert_equals: expected "true" but got ""
+PASS size(max-inline-size: 199px) (.vertical)
+PASS size(orientation: landscape) (.vertical)
+FAIL size(orientation: portrait) (.vertical) assert_equals: expected "true" but got ""
+FAIL size(aspect-ratio: 1/2) (.vertical) assert_equals: expected "true" but got ""
+PASS size(aspect-ratio: 2/1) (.vertical)
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/style-change-in-container-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/style-change-in-container-expected.txt
index 71ac6c4..5d424e9 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/style-change-in-container-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/style-change-in-container-expected.txt
@@ -1,4 +1,3 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Basic test for container query evaluation stability assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-container-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-container-expected.txt
index 71ac6c4..855fd70 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-container-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-container-expected.txt
@@ -1,4 +1,4 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS #dialog initially sized by #containing-block
+FAIL #dialog sized by viewport assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-expected.txt
index 71ac6c4..2c9e7d6 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-dialog-expected.txt
@@ -1,4 +1,6 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS #container initially wider than 200px
+FAIL #container changed to 200px assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
+FAIL Modal dialog still has parent as query container while in top layer assert_equals: expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
+FAIL Container changes width while dialog is in top layer assert_equals: expected "rgb(0, 255, 0)" but got "rgb(255, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog-expected.txt
index 71ac6c4..0e27aff 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/top-layer-nested-dialog-expected.txt
@@ -1,4 +1,5 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+PASS Dialogs initially not matching for container queries
+PASS Dialogs still not matching after showModal
+FAIL @container queries start matching assert_equals: expected "rgb(0, 255, 0)" but got "rgb(255, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/transition-scrollbars-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/transition-scrollbars-expected.txt
index f4d94f1..ae4d9fe 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/transition-scrollbars-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/transition-scrollbars-expected.txt
@@ -1,5 +1,4 @@
Foo bar foo bar foo Foo bar foo bar foo Foo bar foo bar foo Foo bar foo bar foo Foo bar foo bar foo
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Scrollbars do not cause a transition of background-color assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/transition-style-change-event-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/transition-style-change-event-expected.txt
index 3aa7dff..6d57fe3 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/transition-style-change-event-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/transition-style-change-event-expected.txt
@@ -1,5 +1,4 @@
Green
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Container Queries - Style Change Event for transitions assert_equals: @container queries supported expected "rgb(255, 0, 0)" but got "rgb(0, 128, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/unsupported-axis-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/unsupported-axis-expected.txt
index 46f6407..428d43f 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/unsupported-axis-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/unsupported-axis-expected.txt
@@ -1,4 +1,14 @@
-
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
Test
+
+FAIL size(width > 0px) assert_equals: expected "true" but got ""
+PASS size(height > 0px)
+FAIL size((height > 0px) or (width > 0px)) assert_equals: expected "true" but got ""
+FAIL size((width > 0px) or (height > 0px)) assert_equals: expected "true" but got ""
+FAIL size((orientation: landscape) or (width > 0px)) assert_equals: expected "true" but got ""
+FAIL size((width > 0px) or (orientation: landscape)) assert_equals: expected "true" but got ""
+PASS size((height > 0px) or (orientation: landscape))
+PASS size((height > 0px) or (orientation: landscape)), with contain:size
+FAIL size(inline-size > 0px) assert_equals: expected "true" but got ""
+PASS size(block-size > 0px)
+PASS size(block-size > 0px), with writing-mode:vertical-rl
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic-expected.txt
index bca7566..b63eab0 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/viewport-units-dynamic-expected.txt
@@ -1,5 +1,4 @@
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL CSS Container Queries Test: @container-dependent elements respond to viewport unit changes assert_equals: vw before resize expected "rgb(255, 0, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/viewport-units-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/viewport-units-expected.txt
index c4cceb4..5053706 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/viewport-units-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/viewport-units-expected.txt
@@ -1,6 +1,6 @@
Green
Green
-Harness Error (FAIL), message = Error: assert_implements: Basic support for container queries required undefined
-
+FAIL Match width with vw assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL Match width with vh assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt
index afe3ddc..9c6c2d6 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt
@@ -1,8 +1,8 @@
PASS getComputedStyle returns no style for detached element
-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 396
-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 396
-FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 396
-FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 396
+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 397
+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 397
+FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 397
+FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 397
PASS getComputedStyle returns no style for shadow tree outside of flattened tree
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index d7fd122..91072f8 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,34 @@
+2022-01-24 Antti Koivisto <antti@apple.com>
+
+ [CSS Container Queries] Basic parsing support for container-type property
+ https://bugs.webkit.org/show_bug.cgi?id=235514
+
+ Reviewed by Sam Weinig.
+
+ Parse 'container-type' with values 'none', 'size' and 'inline-size.
+
+ https://drafts.csswg.org/css-contain-3/#container-type
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
+ * css/CSSPrimitiveValueMappings.h:
+ (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
+ (WebCore::CSSPrimitiveValue::operator ContainerType const):
+ * css/CSSProperties.json:
+ * css/CSSValueKeywords.in:
+ * css/parser/CSSParserFastPaths.cpp:
+ (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
+ (WebCore::CSSParserFastPaths::isKeywordPropertyID):
+ * rendering/style/RenderStyle.h:
+ (WebCore::RenderStyle::containerType const):
+ (WebCore::RenderStyle::setContainerType):
+ (WebCore::RenderStyle::initialContainerType):
+ * rendering/style/RenderStyleConstants.h:
+ * rendering/style/StyleRareNonInheritedData.cpp:
+ (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
+ (WebCore::StyleRareNonInheritedData::operator== const):
+ * rendering/style/StyleRareNonInheritedData.h:
+
2022-01-24 Youenn Fablet <youenn@apple.com>
file.stream() is slow and CPU-bound
diff --git a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
index 165bedd..6784778 100644
--- a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
+++ b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
@@ -3625,6 +3625,8 @@
list->append(cssValuePool.createIdentifierValue(CSSValuePaint));
return list;
}
+ case CSSPropertyContainerType:
+ return CSSPrimitiveValue::create(style.containerType());
case CSSPropertyBackfaceVisibility:
return cssValuePool.createIdentifierValue((style.backfaceVisibility() == BackfaceVisibility::Hidden) ? CSSValueHidden : CSSValueVisible);
case CSSPropertyWebkitBorderImage:
diff --git a/Source/WebCore/css/CSSPrimitiveValueMappings.h b/Source/WebCore/css/CSSPrimitiveValueMappings.h
index de67c77..0ed9cc8 100644
--- a/Source/WebCore/css/CSSPrimitiveValueMappings.h
+++ b/Source/WebCore/css/CSSPrimitiveValueMappings.h
@@ -5682,4 +5682,38 @@
return MathStyle::Normal;
}
+template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ContainerType containerType)
+ : CSSValue(PrimitiveClass)
+{
+ setPrimitiveUnitType(CSSUnitType::CSS_VALUE_ID);
+ switch (containerType) {
+ case ContainerType::None:
+ m_value.valueID = CSSValueNone;
+ break;
+ case ContainerType::Size:
+ m_value.valueID = CSSValueSize;
+ break;
+ case ContainerType::InlineSize:
+ m_value.valueID = CSSValueInlineSize;
+ break;
+ }
+}
+
+template<> inline CSSPrimitiveValue::operator ContainerType() const
+{
+ ASSERT(isValueID());
+ switch (m_value.valueID) {
+ case CSSValueNone:
+ return ContainerType::None;
+ case CSSValueSize:
+ return ContainerType::Size;
+ case CSSValueInlineSize:
+ return ContainerType::InlineSize;
+ default:
+ break;
+ }
+ ASSERT_NOT_REACHED();
+ return ContainerType::None;
+}
+
}
diff --git a/Source/WebCore/css/CSSProperties.json b/Source/WebCore/css/CSSProperties.json
index ceee8f4b..a3fae27 100644
--- a/Source/WebCore/css/CSSProperties.json
+++ b/Source/WebCore/css/CSSProperties.json
@@ -5221,6 +5221,23 @@
"url": "https://drafts.csswg.org/css-contain-1/"
}
},
+ "container-type": {
+ "codegen-properties": {
+ "settings-flag": "cssContainerQueriesEnabled"
+ },
+ "values": [
+ "none",
+ "size",
+ "inline-size"
+ ],
+ "status": {
+ "status": "experimental"
+ },
+ "specification": {
+ "category": "css-contain",
+ "url": "https://drafts.csswg.org/css-contain-3/#container-queries"
+ }
+ },
"backface-visibility": {
"codegen-properties": {
"aliases": [
diff --git a/Source/WebCore/css/CSSValueKeywords.in b/Source/WebCore/css/CSSValueKeywords.in
index 2a8581e..34d4f6a 100644
--- a/Source/WebCore/css/CSSValueKeywords.in
+++ b/Source/WebCore/css/CSSValueKeywords.in
@@ -1632,6 +1632,11 @@
paint
#endif
+// container-type
+// none
+// size
+inline-size
+
// offset-path
// https://drafts.fxtf.org/motion-1/#offset-path-property
ray
diff --git a/Source/WebCore/css/parser/CSSParserFastPaths.cpp b/Source/WebCore/css/parser/CSSParserFastPaths.cpp
index 765dc5b..fb6fe1a 100644
--- a/Source/WebCore/css/parser/CSSParserFastPaths.cpp
+++ b/Source/WebCore/css/parser/CSSParserFastPaths.cpp
@@ -898,6 +898,9 @@
#endif
case CSSPropertyTextDecorationSkipInk:
return valueID == CSSValueAuto || valueID == CSSValueNone || valueID == CSSValueAll;
+ case CSSPropertyContainerType:
+ // FIXME: Support 'style', 'state'. Those will require parsing the value as a list.
+ return valueID == CSSValueNone || valueID == CSSValueSize || valueID == CSSValueInlineSize;
default:
ASSERT_NOT_REACHED();
return false;
@@ -1053,6 +1056,7 @@
#endif
case CSSPropertyMathStyle:
case CSSPropertyTextDecorationSkipInk:
+ case CSSPropertyContainerType:
return true;
default:
return false;
diff --git a/Source/WebCore/rendering/style/RenderStyle.h b/Source/WebCore/rendering/style/RenderStyle.h
index 74de927..4f2135e 100644
--- a/Source/WebCore/rendering/style/RenderStyle.h
+++ b/Source/WebCore/rendering/style/RenderStyle.h
@@ -532,6 +532,7 @@
bool containsSize() const { return m_rareNonInheritedData->contain.contains(Containment::Size); }
bool containsStyle() const { return m_rareNonInheritedData->contain.contains(Containment::Style); }
bool containsPaint() const { return m_rareNonInheritedData->contain.contains(Containment::Paint); }
+ ContainerType containerType() const { return static_cast<ContainerType>(m_rareNonInheritedData->containerType); }
BoxAlignment boxAlign() const { return static_cast<BoxAlignment>(m_rareNonInheritedData->deprecatedFlexibleBox->align); }
BoxDirection boxDirection() const { return static_cast<BoxDirection>(m_inheritedFlags.boxDirection); }
float boxFlex() const { return m_rareNonInheritedData->deprecatedFlexibleBox->flex; }
@@ -1057,6 +1058,7 @@
void setAspectRatio(double width, double height) { SET_VAR(m_rareNonInheritedData, aspectRatioWidth, width); SET_VAR(m_rareNonInheritedData, aspectRatioHeight, height); }
void setContain(OptionSet<Containment> containment) { SET_VAR(m_rareNonInheritedData, contain, containment); }
+ void setContainerType(ContainerType containerType) { SET_VAR(m_rareNonInheritedData, containerType, static_cast<unsigned>(containerType)); }
void setListStyleStringValue(const AtomString& value) { SET_VAR(m_rareInheritedData, listStyleStringValue, value); }
void setListStyleType(ListStyleType v) { m_inheritedFlags.listStyleType = static_cast<unsigned>(v); }
@@ -1671,6 +1673,7 @@
static OptionSet<Containment> initialContainment() { return OptionSet<Containment> { }; }
static OptionSet<Containment> strictContainment() { return OptionSet<Containment> { Containment::Size, Containment::Layout, Containment::Paint, Containment::Style }; }
static OptionSet<Containment> contentContainment() { return OptionSet<Containment> { Containment::Layout, Containment::Paint, Containment::Style }; }
+ static ContainerType initialContainerType() { return ContainerType::None; }
static double initialAspectRatioWidth() { return 1.0; }
static double initialAspectRatioHeight() { return 1.0; }
static Order initialRTLOrdering() { return Order::Logical; }
diff --git a/Source/WebCore/rendering/style/RenderStyleConstants.h b/Source/WebCore/rendering/style/RenderStyleConstants.h
index fde21bf..eb06cff 100644
--- a/Source/WebCore/rendering/style/RenderStyleConstants.h
+++ b/Source/WebCore/rendering/style/RenderStyleConstants.h
@@ -1231,6 +1231,12 @@
Style = 1 << 3,
};
+enum class ContainerType : uint8_t {
+ None,
+ Size,
+ InlineSize,
+};
+
CSSBoxType transformBoxToCSSBoxType(TransformBox);
extern const float defaultMiterLimit;
diff --git a/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp b/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp
index d089dc0..aaae2e9 100644
--- a/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp
+++ b/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp
@@ -111,6 +111,7 @@
, inputSecurity(static_cast<unsigned>(RenderStyle::initialInputSecurity()))
, hasAttrContent(false)
, isNotFinal(false)
+ , containerType(static_cast<unsigned>(RenderStyle::initialContainerType()))
, columnGap(RenderStyle::initialColumnGap())
, rowGap(RenderStyle::initialRowGap())
, offsetDistance(RenderStyle::initialOffsetDistance())
@@ -214,6 +215,7 @@
, inputSecurity(o.inputSecurity)
, hasAttrContent(o.hasAttrContent)
, isNotFinal(o.isNotFinal)
+ , containerType(o.containerType)
, columnGap(o.columnGap)
, rowGap(o.rowGap)
, offsetDistance(o.offsetDistance)
@@ -325,6 +327,7 @@
&& inputSecurity == o.inputSecurity
&& hasAttrContent == o.hasAttrContent
&& isNotFinal == o.isNotFinal
+ && containerType == o.containerType
&& columnGap == o.columnGap
&& rowGap == o.rowGap
&& offsetDistance == o.offsetDistance
diff --git a/Source/WebCore/rendering/style/StyleRareNonInheritedData.h b/Source/WebCore/rendering/style/StyleRareNonInheritedData.h
index db3ed7a..2e62c09 100644
--- a/Source/WebCore/rendering/style/StyleRareNonInheritedData.h
+++ b/Source/WebCore/rendering/style/StyleRareNonInheritedData.h
@@ -233,6 +233,8 @@
unsigned isNotFinal : 1;
+ unsigned containerType : 2; // ContainerType
+
GapLength columnGap;
GapLength rowGap;