[webkit-changes] [WebKit/WebKit] d46cee: [scroll-animations] CSS Animations with an `animat...
Antoine Quint
noreply at github.com
Fri Feb 7 23:26:04 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d46cee42c3f48247c3f92be3a13882e25c33e56c
https://github.com/WebKit/WebKit/commit/d46cee42c3f48247c3f92be3a13882e25c33e56c
Author: Antoine Quint <graouts at webkit.org>
Date: 2025-02-07 (Fri, 07 Feb 2025)
Changed paths:
M LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/animation-timeline-deferred-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/animation-timeline-deferred.html
M Source/WebCore/animation/AnimationTimelinesController.cpp
M Source/WebCore/animation/AnimationTimelinesController.h
M Source/WebCore/animation/ScrollTimeline.cpp
M Source/WebCore/animation/ScrollTimeline.h
Log Message:
-----------
[scroll-animations] CSS Animations with an `animation-timeline` matching a `timeline-scope` should default to an inactive scroll timeline
https://bugs.webkit.org/show_bug.cgi?id=287239
Reviewed by Dean Jackson.
When dealing with an `animation-timeline` value that did not match a `scroll-timeline-name`
within a scope defined by `timeline-scope`, our code would assign a null timeline. But the
Scroll-driven Animations specification says [0] that this should result in assigning an inactive
timeline, or in other words a scroll timeline without a source:
Declares the name of a matching named timeline defined by a descendant – whose scope is not
already explicitly declared by a descendant using timeline-scope – to be in scope for this
element and its descendants.
If no such timeline exists, or if more than one such timeline exists, instead declares an
inactive timeline with the specified name.
So we update our code to correctly create an inactive scroll timeline if we fail to determine
an existing timeline or we have multiple options.
Since we may create multiple such timelines as elements are awaiting the definition of a named
timeline, we identify those with a specific flag and purge them after dealing with pending
attachment operations.
To be able to track those inactive timelines, we must have access to the instance's name-to-timeline
map, so we change previously static methods to be instance methods.
This change highlighted that an existing WPT assertion was incorrectly expecting a null timeline
instead of an inactive timeline in the scenario outlined above, so we modify that test to correctly
check for a null timeline source instead of a null timeline.
[0] https://drafts.csswg.org/scroll-animations-1/#valdef-timeline-scope-dashed-ident
* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/animation-timeline-deferred-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/scroll-animations/css/animation-timeline-deferred.html:
* Source/WebCore/animation/AnimationTimelinesController.cpp:
(WebCore::AnimationTimelinesController::inactiveNamedTimeline):
(WebCore::AnimationTimelinesController::determineTreeOrder):
(WebCore::AnimationTimelinesController::determineTimelineForElement):
(WebCore::AnimationTimelinesController::attachPendingOperations):
(WebCore::AnimationTimelinesController::setTimelineForName):
(WebCore::determineTreeOrder): Deleted.
(WebCore::determineTimelineForElement): Deleted.
* Source/WebCore/animation/AnimationTimelinesController.h:
* Source/WebCore/animation/ScrollTimeline.cpp:
(WebCore::ScrollTimeline::createInactiveStyleOriginatedTimeline):
* Source/WebCore/animation/ScrollTimeline.h:
(WebCore::ScrollTimeline::isInactiveStyleOriginatedTimeline const):
Canonical link: https://commits.webkit.org/290082@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