[CSS Container Queries] Basic support for container units
commitbe1a59a952a2dd36a6fda36ed71604196a187937
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 18 Mar 2022 09:01:12 +0000 (18 09:01 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 18 Mar 2022 09:01:12 +0000 (18 09:01 +0000)
tree00ecb49037ac0a01b403270688db31bebcc24316
parent0589263978a3915789cd1010c76ac022b2b363d6
[CSS Container Queries] Basic support for container units
https://bugs.webkit.org/show_bug.cgi?id=238021

Reviewed by Antoine Quint.

LayoutTests/imported/w3c:

* 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-small-viewport-fallback-expected.txt:
* web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt:

Source/WebCore:

Container Relative Lengths: the cqw, cqh, cqi, cqb, cqmin, cqmax units
https://drafts.csswg.org/css-contain-3/#container-lengths

* css/CSSPrimitiveValue.cpp:
(WebCore::isValidCSSUnitTypeForDoubleConversion):
(WebCore::isStringType):
(WebCore::CSSPrimitiveValue::cleanup):
(WebCore::CSSPrimitiveValue::computeNonCalcLengthDouble):

Resolve container units by resolving the query container and computing the value against it.

(WebCore::CSSPrimitiveValue::unitTypeString):
(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const):
(WebCore::CSSPrimitiveValue::equals const):
* css/CSSPrimitiveValue.h:
(WebCore::CSSPrimitiveValue::isLength):
* css/CSSToLengthConversionData.cpp:
(WebCore::CSSToLengthConversionData::CSSToLengthConversionData):
* css/CSSToLengthConversionData.h:
(WebCore::CSSToLengthConversionData::element const):
* css/CSSUnits.cpp:
(WebCore::unitCategory):
(WebCore::operator<<):
* css/CSSUnits.h:
* css/ContainerQuery.h:
* css/calc/CSSCalcCategoryMapping.cpp:
(WebCore::calcUnitCategory):
(WebCore::calculationCategoryForCombination):
(WebCore::hasDoubleValue):
* css/parser/CSSParserToken.cpp:
(WebCore::cssPrimitiveValueUnitFromTrie):

Parsing support.

* css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::LengthRawKnownTokenTypeDimensionConsumer::consume):
* style/ContainerQueryEvaluator.cpp:
(WebCore::Style::ContainerQueryEvaluator::selectContainer const):
(WebCore::Style::ContainerQueryEvaluator::selectContainer):

Factor container selection into static function that can be used from the unit resolution code.

* style/ContainerQueryEvaluator.h:
* style/SelectorMatchingState.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@291474 268f45cc-cd09-0410-ab3c-d52691b4dbfc
22 files changed:
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-animation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-basic-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-computational-independence-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-invalidation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-selection-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-small-viewport-fallback-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-units-typed-om-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/css/CSSPrimitiveValue.cpp
Source/WebCore/css/CSSPrimitiveValue.h
Source/WebCore/css/CSSToLengthConversionData.cpp
Source/WebCore/css/CSSToLengthConversionData.h
Source/WebCore/css/CSSUnits.cpp
Source/WebCore/css/CSSUnits.h
Source/WebCore/css/ContainerQuery.h
Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp
Source/WebCore/css/parser/CSSParserToken.cpp
Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp
Source/WebCore/style/ContainerQueryEvaluator.cpp
Source/WebCore/style/ContainerQueryEvaluator.h
Source/WebCore/style/SelectorMatchingState.h