[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;