[webkit-changes] [WebKit/WebKit] fdb9f3: [css-anchor-position-1] Evaluate @position-try fal...

Antti Koivisto noreply at github.com
Mon Feb 24 21:08:14 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fdb9f3f2775afdd25e52cc96f8fdd2a62261093c
      https://github.com/WebKit/WebKit/commit/fdb9f3f2775afdd25e52cc96f8fdd2a62261093c
  Author: Antti Koivisto <antti at apple.com>
  Date:   2025-02-24 (Mon, 24 Feb 2025)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-getComputedStyle-003-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-invalid-fallback-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/at-position-try-cssom-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/at-position-try-invalidation-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/at-position-try-invalidation-shadow-dom-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-area-in-position-try-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-001-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-003-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-004-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-cascade-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-cascade-layer-reorder-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-container-query-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-custom-property-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-dynamic-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-fallbacks-limit-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-grid-001-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-initial-transition-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-position-anchor-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-transition-basic-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-tree-scoped-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-typed-om-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-alignment-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-anchor-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-basic-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-margin-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-percentage-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-position-area-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-sizing-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-wm-expected.txt
    M LayoutTests/platform/ios/TestExpectations
    M Source/WebCore/style/AnchorPositionEvaluator.cpp
    M Source/WebCore/style/AnchorPositionEvaluator.h
    M Source/WebCore/style/PropertyCascade.cpp
    M Source/WebCore/style/PropertyCascade.h
    M Source/WebCore/style/RuleSet.cpp
    M Source/WebCore/style/RuleSet.h
    M Source/WebCore/style/RuleSetBuilder.cpp
    M Source/WebCore/style/StyleBuilder.cpp
    M Source/WebCore/style/StyleBuilderState.h
    M Source/WebCore/style/StyleTreeResolver.cpp
    M Source/WebCore/style/StyleTreeResolver.h

  Log Message:
  -----------
  [css-anchor-position-1] Evaluate @position-try fallbacks
https://bugs.webkit.org/show_bug.cgi?id=288365
rdar://145466429

Reviewed by Alan Baradlay.

Make @position-try fallbacks work.

https://drafts.csswg.org/css-anchor-position-1/#fallback-rule

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-getComputedStyle-003-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-invalid-fallback-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/at-position-try-cssom-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/at-position-try-invalidation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/at-position-try-invalidation-shadow-dom-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-area-in-position-try-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-003-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-004-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-cascade-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-cascade-layer-reorder-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-container-query-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-custom-property-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-dynamic-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-fallbacks-limit-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-grid-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-initial-transition-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-position-anchor-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-transition-basic-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-tree-scoped-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-typed-om-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-alignment-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-anchor-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-basic-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-margin-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-percentage-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-position-area-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-sizing-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/try-tactic-wm-expected.txt:

Most try-tactic tests also use @position-try so that test coverage gets activated too.
PASS->FAIL cases were passing spuriously due to unimplemented feature.

* Source/WebCore/style/AnchorPositionEvaluator.cpp:
(WebCore::Style::computeInsetValue):
(WebCore::Style::AnchorPositionEvaluator::resolvePositionTryFallbackProperty):
* Source/WebCore/style/AnchorPositionEvaluator.h:
* Source/WebCore/style/PropertyCascade.cpp:
(WebCore::Style::PropertyCascade::PropertyCascade):

Pass the fallback properties to the cascade.

(WebCore::Style::PropertyCascade::buildCascade):
(WebCore::Style::PropertyCascade::addPositionTryFallbackProperties):

Include the fallback properties to the cascade.

* Source/WebCore/style/PropertyCascade.h:
* Source/WebCore/style/RuleSet.cpp:
(WebCore::Style::RuleSet::positionTryRuleForName const):

Keep @position-try rules in ruleset.

* Source/WebCore/style/RuleSet.h:
* Source/WebCore/style/RuleSetBuilder.cpp:
(WebCore::Style::RuleSetBuilder::addMutatingRulesToResolver):

Collect @position-try rules.

* Source/WebCore/style/StyleBuilder.cpp:
(WebCore::Style::positionTryFallbackProperties):
(WebCore::Style::Builder::Builder):
* Source/WebCore/style/StyleBuilderState.h:

Pass BuilderPositionTryFallback that has properties resolved instead of the plain PositionTryFallback from style.

(WebCore::Style::BuilderState::positionTryFallback const):
* Source/WebCore/style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveAgainInDifferentContext const):
(WebCore::Style::TreeResolver::generatePositionOptionsIfNeeded):

Fallbacks may contain new anchor references. We need to ensure anchors are resolved before generating the options.

(WebCore::Style::TreeResolver::generatePositionOption):

Find the @posistion-try rule based on the scoped name and pass the properties to the style builder.

* Source/WebCore/style/StyleTreeResolver.h:

Canonical link: https://commits.webkit.org/291009@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