Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: edc74c3eeb037f604eee3be75ceb20f88ab62629
      
https://github.com/WebKit/WebKit/commit/edc74c3eeb037f604eee3be75ceb20f88ab62629
  Author: Antti Koivisto <[email protected]>
  Date:   2026-09-07 (Mon, 07 Sep 2026)

  Changed paths:
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-tables/fixed-layout-2-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/calc-size-height-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/calc-size-width-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-logical-properties-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-max-height-composition-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-max-height-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-max-width-composition-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-max-width-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-min-height-composition-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-min-height-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-min-width-composition-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/animation/interpolate-size-min-width-interpolation-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/calc-size-flex-basis-on-column-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/calc-size-flex-basis-on-row-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/calc-size-height-box-sizing-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/calc-size-height-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/calc-size-parsing-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/calc-size-typed-om-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/calc-size-width-box-sizing-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/calc-size-width-expected.txt
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    A Source/WebCore/css/CSSCalcSizeValue.cpp
    A Source/WebCore/css/CSSCalcSizeValue.h
    M Source/WebCore/css/CSSProperties.json
    M Source/WebCore/css/CSSValue.cpp
    M Source/WebCore/css/CSSValue.h
    M Source/WebCore/css/CSSValueKeywords.in
    M Source/WebCore/css/calc/CSSCalcTree+Parser.cpp
    M Source/WebCore/css/calc/CSSCalcTree+Parser.h
    M Source/WebCore/css/calc/CSSCalcTree+Serialization.cpp
    M Source/WebCore/css/calc/CSSCalcTree+Serialization.h
    M Source/WebCore/css/parser/CSSParserContext.cpp
    M Source/WebCore/css/parser/CSSParserContext.h
    A Source/WebCore/css/parser/CSSPropertyParserConsumer+CalcSize.cpp
    A Source/WebCore/css/parser/CSSPropertyParserConsumer+CalcSize.h
    M Source/WebCore/css/parser/CSSPropertyParserCustom.h
    A Source/WebCore/css/values/sizing/CSSCalcSizeFunction.cpp
    A Source/WebCore/css/values/sizing/CSSCalcSizeFunction.h
    M 
Source/WebCore/style/values/primitives/StylePrimitiveNumericOrKeyword+CSSValueConversion.h

  Log Message:
  -----------
  [css-values-5 calc-size()] Parsing and serialization
https://bugs.webkit.org/show_bug.cgi?id=323433
rdar://186659563

Reviewed by Sam Weinig and Alan Baradlay.

https://drafts.csswg.org/css-values-5/#funcdef-calc-size

This patch implements parsing and serialization behind a feature flag.

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/css/CSSValueKeywords.in:

Add `calc-size` and `any`.

* Source/WebCore/css/CSSProperties.json:

Add a <calc-size> shared grammar rule using grammar-function, referenced from
<width-or-height>, <max-width-or-height> and <'flex-basis'>.

* Source/WebCore/css/values/sizing/CSSCalcSizeFunction.h: Added.
* Source/WebCore/css/values/sizing/CSSCalcSizeFunction.cpp: Added.

CSS::CalcSizeParameters plus FunctionNotation. The basis keywords are 
CSS::Keyword types,
each <calc-sum> is a CSSCalc::Tree and a nested calc-size() basis is a 
UniqueRef to the type
wrapper so it can be forward declared.

(WebCore::CSS::CalcSize::collectComputedStyleDependencies):
* Source/WebCore/css/CSSCalcSizeValue.h: Added.
* Source/WebCore/css/CSSCalcSizeValue.cpp: Added.

CSSValue wrapper for CSS::CalcSize.

* Source/WebCore/css/parser/CSSPropertyParserConsumer+CalcSize.h: Added.
* Source/WebCore/css/parser/CSSPropertyParserConsumer+CalcSize.cpp: Added.
(WebCore::CSSPropertyParserHelpers::isValidBasisKeyword):

The basis accepts the sizing keywords the property itself accepts.

(WebCore::CSSPropertyParserHelpers::consumeCalcSum):
(WebCore::CSSPropertyParserHelpers::consumeCalcSizeBasis):
(WebCore::CSSPropertyParserHelpers::consumeCalcSizeFunction):
(WebCore::CSSPropertyParserHelpers::consumeCalcSize):

* Source/WebCore/css/calc/CSSCalcTree+Parser.h:
* Source/WebCore/css/calc/CSSCalcTree+Parser.cpp:
(WebCore::CSSCalc::parseAndSimplifyCalcSum):

The arguments are <calc-sum> productions, not <length-percentage> values, so
they need an entry point that does not expect an enclosing math function.

* Source/WebCore/css/calc/CSSCalcTree+Serialization.h:
* Source/WebCore/css/calc/CSSCalcTree+Serialization.cpp:
(WebCore::CSSCalc::serializationForCSSAsFunctionArgument):

A <calc-sum> in argument position drops the grouping parentheses, per
serialize-a-math-function step 4. Takes the Tree so the stage is carried 
through.

* 
Source/WebCore/style/values/primitives/StylePrimitiveNumericOrKeyword+CSSValueConversion.h:
(WebCore::Style::convertKeywordIDForCSSValueConversion):
(WebCore::Style::convertCalcSizeForCSSValueConversion):
* Source/WebCore/css/CSSValue.h:
* Source/WebCore/css/CSSValue.cpp:
(WebCore::CSSValue::collectComputedStyleDependencies):
* Source/WebCore/CMakeLists.txt:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/css/parser/CSSParserContext.h:
* Source/WebCore/css/parser/CSSParserContext.cpp:
* Source/WebCore/css/parser/CSSPropertyParserCustom.h:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-size/*-expected.txt:
 Rebaselined.
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-tables/fixed-layout-2-expected.txt:
 Rebaselined.

Canonical link: https://commits.webkit.org/320631@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to