[webkit-changes] [WebKit/WebKit] 79434c: Support media-progress() and container-progress() ...

Sam Weinig noreply at github.com
Sun Dec 15 18:06:11 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 79434c0efe51e2fc68ac9980f6f9a948dba0e58d
      https://github.com/WebKit/WebKit/commit/79434c0efe51e2fc68ac9980f6f9a948dba0e58d
  Author: Sam Weinig <sam at webkit.org>
  Date:   2024-12-15 (Sun, 15 Dec 2024)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-interpolation-math-functions-tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-interpolation-math-functions-tentative.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/scale-animation-math-functions-tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/scale-animation-math-functions-tentative.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-computed.tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-computed.tentative.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-invalid.tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-invalid.tentative.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-serialize.tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-serialize.tentative.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-computed.tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-computed.tentative.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-invalid.tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-invalid.tentative.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-serialize.tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-serialize.tentative.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-computed.tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-computed.tentative.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-invalid.tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-invalid.tentative.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-serialize.tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-serialize.tentative.html
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/css/CSSValueKeywords.in
    M Source/WebCore/css/calc/CSSCalcTree+CalculationValue.cpp
    M Source/WebCore/css/calc/CSSCalcTree+ComputedStyleDependencies.cpp
    A Source/WebCore/css/calc/CSSCalcTree+ContainerProgressEvaluator.cpp
    A Source/WebCore/css/calc/CSSCalcTree+ContainerProgressEvaluator.h
    M Source/WebCore/css/calc/CSSCalcTree+Copy.cpp
    M Source/WebCore/css/calc/CSSCalcTree+Evaluation.cpp
    A Source/WebCore/css/calc/CSSCalcTree+MediaProgressEvaluator.cpp
    A Source/WebCore/css/calc/CSSCalcTree+MediaProgressEvaluator.h
    M Source/WebCore/css/calc/CSSCalcTree+Parser.cpp
    M Source/WebCore/css/calc/CSSCalcTree+Serialization.cpp
    M Source/WebCore/css/calc/CSSCalcTree+Simplification.cpp
    M Source/WebCore/css/calc/CSSCalcTree+Simplification.h
    M Source/WebCore/css/calc/CSSCalcTree+Traversal.h
    M Source/WebCore/css/calc/CSSCalcTree.cpp
    M Source/WebCore/css/calc/CSSCalcTree.h
    M Source/WebCore/css/parser/CSSParserContext.cpp
    M Source/WebCore/css/parser/CSSParserContext.h
    M Source/WebCore/css/parser/CSSPropertyParserConsumer+Conditional.cpp
    M Source/WebCore/css/parser/CSSPropertyParserConsumer+Conditional.h
    M Source/WebCore/css/query/ContainerQueryFeatures.cpp
    M Source/WebCore/css/query/ContainerQueryFeatures.h
    M Source/WebCore/css/query/ContainerQueryParser.cpp
    M Source/WebCore/css/query/ContainerQueryParser.h
    M Source/WebCore/css/query/GenericMediaQueryEvaluator.cpp
    M Source/WebCore/css/query/GenericMediaQueryEvaluator.h
    M Source/WebCore/css/query/GenericMediaQueryParser.h
    M Source/WebCore/css/query/GenericMediaQueryTypes.h
    M Source/WebCore/css/query/MediaQuery.h
    M Source/WebCore/css/query/MediaQueryEvaluator.cpp
    M Source/WebCore/css/query/MediaQueryFeatures.cpp
    M Source/WebCore/css/query/MediaQueryFeatures.h
    M Source/WebCore/css/query/MediaQueryParser.cpp
    M Source/WebCore/css/query/MediaQueryParser.h

  Log Message:
  -----------
  Support media-progress() and container-progress() CSS functions
https://bugs.webkit.org/show_bug.cgi?id=284669

Reviewed by Darin Adler.

Adds support for the `media-progress()` and `container-progress()` CSS
functions from CSS Values and Units 5:

    https://drafts.csswg.org/css-values-5/#media-progress-func
    https://drafts.csswg.org/css-values-5/#container-progress-func

Also updates the progress() CSS function from the same spec to its
updated syntax, removing keyword separators in favor of commas.

`media-progress()` and `container-progress()` are  implemented behind
their own feature flags `CSSMediaProgressFunctionEnabled` and
`CSSContainerProgressFunctionEnabled` respectively, both of which
are set to the status level "preview".

The bulk of the change is factoring the existing media query and
container query feature schemas to support alternative "value
providing" interfaces which rather than reporting a boolean match
result, return a double value in canonical units. The remainder
is adding the parsing/serialization/evaluation for the new calc
nodes for each function.

* LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-interpolation-math-functions-tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/rotate-interpolation-math-functions-tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/scale-animation-math-functions-tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/scale-animation-math-functions-tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-computed.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-computed.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-invalid.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-invalid.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-serialize.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/container-progress-serialize.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-computed.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-computed.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-invalid.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-invalid.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-serialize.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/media-progress-serialize.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-computed.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-computed.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-invalid.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-invalid.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-serialize.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-values/progress-serialize.tentative.html:
    - Updates tests to the latest syntax in the spec and update now passing results.

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
    - Add new features for the new functions.

* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
    - Add new files.

* Source/WebCore/css/CSSValueKeywords.in:
    - Add new keywords for `media-progress` and `container-progress`.

* Source/WebCore/css/calc/CSSCalcTree+ContainerProgressEvaluator.cpp: Added.
* Source/WebCore/css/calc/CSSCalcTree+ContainerProgressEvaluator.h: Added.
* Source/WebCore/css/calc/CSSCalcTree+MediaProgressEvaluator.cpp: Added.
* Source/WebCore/css/calc/CSSCalcTree+MediaProgressEvaluator.h: Added.
    - Rather than duplicate evaluation in both the simplification and evaluation
      phases, put the core evaluation of the new nodes into their own files.

* Source/WebCore/css/calc/CSSCalcTree+CalculationValue.cpp:
* Source/WebCore/css/calc/CSSCalcTree+ComputedStyleDependencies.cpp:
* Source/WebCore/css/calc/CSSCalcTree+Copy.cpp:
* Source/WebCore/css/calc/CSSCalcTree+Evaluation.cpp:
* Source/WebCore/css/calc/CSSCalcTree+Parser.cpp:
* Source/WebCore/css/calc/CSSCalcTree+Serialization.cpp:
* Source/WebCore/css/calc/CSSCalcTree+Simplification.cpp:
* Source/WebCore/css/calc/CSSCalcTree+Simplification.h:
* Source/WebCore/css/calc/CSSCalcTree+Traversal.h:
* Source/WebCore/css/calc/CSSCalcTree.cpp:
* Source/WebCore/css/calc/CSSCalcTree.h:
    - Add support for the MediaProgress and ContainerProgress calc nodes.

* Source/WebCore/css/parser/CSSParserContext.cpp:
* Source/WebCore/css/parser/CSSParserContext.h:
    - Add new settings for media-progress and container-progress for access
      in the calc parser.

* Source/WebCore/css/parser/CSSPropertyParserConsumer+Conditional.cpp:
* Source/WebCore/css/parser/CSSPropertyParserConsumer+Conditional.h:
    - Expose a helper to reject invalid container names; used by the
      calc parser for container-progress().

* Source/WebCore/css/query/ContainerQueryFeatures.cpp:
* Source/WebCore/css/query/ContainerQueryFeatures.h:
* Source/WebCore/css/query/ContainerQueryParser.cpp:
* Source/WebCore/css/query/ContainerQueryParser.h:
* Source/WebCore/css/query/GenericMediaQueryEvaluator.cpp:
* Source/WebCore/css/query/GenericMediaQueryEvaluator.h:
* Source/WebCore/css/query/GenericMediaQueryTypes.h:
* Source/WebCore/css/query/MediaQuery.h:
* Source/WebCore/css/query/MediaQueryEvaluator.cpp:
* Source/WebCore/css/query/MediaQueryFeatures.cpp:
* Source/WebCore/css/query/MediaQueryFeatures.h:
* Source/WebCore/css/query/MediaQueryParser.cpp:
* Source/WebCore/css/query/MediaQueryParser.h:
    - Refactor media query/container query schema code to allow
      schemas to conform to new MediaProgressProviding and its
      analog ContainerProgressProviding. Like the schemas, these
      are provided as type erased singleton instances accessed
      by name lookup.

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



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


More information about the webkit-changes mailing list