[webkit-changes] [WebKit/WebKit] 2a76b5: [CSS Container Queries][Style queries] Basic evalu...

Antti Koivisto noreply at github.com
Fri Feb 9 08:26:42 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2a76b5d5da5c7bdd0458253953c8e88e7f4a42f5
      https://github.com/WebKit/WebKit/commit/2a76b5d5da5c7bdd0458253953c8e88e7f4a42f5
  Author: Antti Koivisto <antti at apple.com>
  Date:   2024-02-09 (Fri, 09 Feb 2024)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-style-parsing-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-style-serialization-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/custom-property-style-query-change-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/display-contents-dynamic-style-queries-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/nested-size-style-container-invalidation-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-005-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/query-evaluation-style-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/style-container-for-shadow-dom-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/style-container-invalidation-inheritance-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/style-query-with-unknown-width-expected.txt
    M Source/WebCore/css/parser/CSSParserTokenRange.cpp
    M Source/WebCore/css/parser/CSSParserTokenRange.h
    M Source/WebCore/css/query/ContainerQuery.h
    M Source/WebCore/css/query/ContainerQueryFeatures.cpp
    M Source/WebCore/css/query/GenericMediaQueryParser.cpp
    M Source/WebCore/style/ContainerQueryEvaluator.cpp
    M Source/WebCore/style/ContainerQueryEvaluator.h
    M Source/WebCore/style/ElementRuleCollector.cpp
    M Source/WebCore/style/SelectorMatchingState.h
    M Source/WebCore/style/StyleTreeResolver.cpp
    M Source/WebCore/style/StyleTreeResolver.h
    M Source/WebCore/style/StyleUpdate.cpp
    M Source/WebCore/style/StyleUpdate.h

  Log Message:
  -----------
  [CSS Container Queries][Style queries] Basic evaluation support
https://bugs.webkit.org/show_bug.cgi?id=269061
rdar://122623247

Reviewed by Alan Baradlay.

Evaluate @container style(--property:foo) queries.

* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-style-parsing-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-style-serialization-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/custom-property-style-query-change-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/display-contents-dynamic-style-queries-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/nested-size-style-container-invalidation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/pseudo-elements-005-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/query-evaluation-style-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/style-container-for-shadow-dom-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/style-container-invalidation-inheritance-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/style-query-with-unknown-width-expected.txt:
* Source/WebCore/css/parser/CSSParserTokenRange.cpp:
(WebCore::CSSParserTokenRange::consumeAllExcludingTrailingWhitespace):

Add a helper.

* Source/WebCore/css/parser/CSSParserTokenRange.h:
* Source/WebCore/css/query/ContainerQuery.h:
* Source/WebCore/css/query/ContainerQueryFeatures.cpp:

Evaluate the query by looking up and comparing the property value.

* Source/WebCore/css/query/GenericMediaQueryParser.cpp:
(WebCore::MQ::consumeCustomPropertyValue):

Don't include trailing whitespace to custom property value.

(WebCore::MQ::FeatureParser::consumeBooleanOrPlainFeature):
* Source/WebCore/style/ContainerQueryEvaluator.h:

Pass the currently resolved style via ContainerQueryEvaluationState.

* Source/WebCore/style/ContainerQueryEvaluator.cpp:
(WebCore::Style::ContainerQueryEvaluator::ContainerQueryEvaluator):
(WebCore::Style::styleForContainer):
(WebCore::Style::ContainerQueryEvaluator::featureEvaluationContextForQuery const):

Look up the currently resolved style for the container. It may not have yet been committed to the render tree.
Allow containers that don't generate boxes.

(WebCore::Style::ContainerQueryEvaluator::selectContainer):

Similarly use the current style for container selection.
Allow any element to be a container for style queries.

* Source/WebCore/style/ContainerQueryEvaluator.h:
* Source/WebCore/style/ElementRuleCollector.cpp:
(WebCore::Style::ElementRuleCollector::containerQueriesMatch):
* Source/WebCore/style/SelectorMatchingState.h:
* Source/WebCore/style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::Scope::Scope):

Pass a reference to the current style update to container query evaluation.

(WebCore::Style::TreeResolver::pushParent):
(WebCore::Style::TreeResolver::popParent):
(WebCore::Style::TreeResolver::resolve):
* Source/WebCore/style/StyleTreeResolver.h:
* Source/WebCore/style/StyleUpdate.cpp:
(WebCore::Style::Update::addInitialContainingBlockUpdate):
* Source/WebCore/style/StyleUpdate.h:
(WebCore::Style::Update::addInitialContainingBlockUpdate): Deleted.

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




More information about the webkit-changes mailing list