[webkit-changes] [WebKit/WebKit] cb4831: [css-anchor-position-1] Initial implementation of ...
David Choi
noreply at github.com
Thu Aug 8 21:17:15 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: cb48316ec3ab556dc63d5ca2852fbcf6bbbd7517
https://github.com/WebKit/WebKit/commit/cb48316ec3ab556dc63d5ca2852fbcf6bbbd7517
Author: David Choi <davidchoi1027 at gmail.com>
Date: 2024-08-08 (Thu, 08 Aug 2024)
Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-getComputedStyle-001-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-getComputedStyle-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-inside-outside-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/anchor-name-cross-shadow-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-name-in-shadow-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-name-in-shadow-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-001-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-003-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-004-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-borders-001-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-borders-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-001-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-004-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-inline-001-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-inline-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-inline-003-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-inline-004-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-multicol-001-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-multicol-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-multicol-004-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-principal-box-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-writing-modes-001-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-writing-modes-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scope-basic-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scope-dynamic-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scope-shadow.tentative-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-003-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-004-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-005-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-006-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-007-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-js-expose-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-001-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-003-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-004-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-005-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-006-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-007-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-008-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-009-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-010-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-011-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-transition-001-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-transition-002-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-transition-003-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-transition-eval-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-typed-om-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/popover-anchor-backdrop-transition-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-004-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-position-anchor-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-transition-flip-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-anchor-positioning-007-expected.txt
M Source/WebCore/css/CSSAnchorValue.cpp
M Source/WebCore/css/CSSAnchorValue.h
M Source/WebCore/style/AnchorPositionEvaluator.cpp
M Source/WebCore/style/AnchorPositionEvaluator.h
M Source/WebCore/style/StyleBuilderConverter.h
M Source/WebCore/style/StyleBuilderState.cpp
M Source/WebCore/style/StyleBuilderState.h
M Source/WebCore/style/StyleTreeResolver.cpp
Log Message:
-----------
[css-anchor-position-1] Initial implementation of `anchor()`
https://bugs.webkit.org/show_bug.cgi?id=275364
rdar://129596653
Reviewed by Alan Baradlay.
This patch introduces some initial logic to resolve `anchor()` calls to
a <length> in their respective inset property declarations. Because this
is an initial implementation, many things are not supported, including:
- `anchor()` fallbacks values
- animations using `anchor()`
- invalid `anchor()` not being `unset`
- pseudo-element anchors
- anchor-positioned pseudo-elements
- position: sticky anchors during scrolling
- dynamically updated anchors (including on window resize)
The anchor-positioning logic resides in `AnchorPositionEvaluator.cpp`.
* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-getComputedStyle-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-getComputedStyle-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-inside-outside-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/anchor-name-cross-shadow-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-name-in-shadow-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-name-in-shadow-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-003-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-004-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-borders-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-borders-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-dynamic-004-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-inline-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-inline-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-inline-003-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-inline-004-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-multicol-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-multicol-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-multicol-004-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-principal-box-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-writing-modes-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-position-writing-modes-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scope-basic-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scope-dynamic-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scope-shadow.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-003-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-004-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-005-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-006-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-007-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-js-expose-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-003-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-004-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-005-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-006-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-007-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-008-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-009-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-010-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-scroll-position-try-011-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-transition-001-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-transition-002-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-transition-003-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-transition-eval-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/anchor-typed-om-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/popover-anchor-backdrop-transition-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-004-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-position-anchor-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-anchor-position/position-try-transition-flip-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-anchor-positioning-007-expected.txt:
* Source/WebCore/css/CSSAnchorValue.cpp:
(WebCore::CSSAnchorValue::anchorElementString const):
(WebCore::CSSAnchorValue::anchorSide const):
* Source/WebCore/css/CSSAnchorValue.h:
* Source/WebCore/style/AnchorPositionEvaluator.cpp:
(WebCore::Style::mapInsetPropertyToPhysicalAxis):
(WebCore::Style::mapInsetPropertyToPhysicalSide):
(WebCore::Style::flipBoxSide):
(WebCore::Style::anchorSideMatchesInsetProperty):
(WebCore::Style::computeStartEndBoxSide):
(WebCore::Style::removeBorderForInsetValue):
(WebCore::Style::computeAnchorRectRelativeToContainingBlock):
(WebCore::Style::computeInsetValue):
(WebCore::Style::AnchorPositionEvaluator::resolveAnchorValue):
* Source/WebCore/style/AnchorPositionEvaluator.h:
* Source/WebCore/style/StyleBuilderConverter.h:
(WebCore::Style::BuilderConverter::convertLength):
* Source/WebCore/style/StyleBuilderState.cpp:
(WebCore::Style::BuilderState::cssPropertyID const):
* Source/WebCore/style/StyleBuilderState.h:
* Source/WebCore/style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::updateAnchorPositioningState):
Canonical link: https://commits.webkit.org/282030@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