[webkit-changes] [WebKit/WebKit] cf5ac8: [scroll-animations] update `ComputedEffectTiming` ...
Antoine Quint
noreply at github.com
Sun Sep 15 23:10:43 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: cf5ac861157f59865809da65be40f10b33014cbe
https://github.com/WebKit/WebKit/commit/cf5ac861157f59865809da65be40f10b33014cbe
Author: Antoine Quint <graouts at webkit.org>
Date: 2024-09-15 (Sun, 15 Sep 2024)
Changed paths:
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
A Source/WebCore/animation/CSSNumberishTime.cpp
A Source/WebCore/animation/CSSNumberishTime.h
M Source/WebCore/animation/ComputedEffectTiming.h
M Source/WebCore/animation/ComputedEffectTiming.idl
M Source/WebCore/animation/ScrollTimeline.cpp
M Source/WebCore/animation/StyleOriginatedAnimation.cpp
M Source/WebCore/animation/ViewTimeline.cpp
M Source/WebCore/animation/WebAnimation.cpp
M Source/WebCore/animation/WebAnimationTypes.h
Log Message:
-----------
[scroll-animations] update `ComputedEffectTiming` to use `CSSNumberish`
https://bugs.webkit.org/show_bug.cgi?id=279727
rdar://136031059
Reviewed by Chris Dumez and Tim Nguyen.
To accommodate progress-based timelines (such as `ScrollTimeline` and `ViewTimeline`),
the following properties of `ComputedEffectTiming` have been updated to be `CSSNumberish`
(aka `double or CSSNumericValue`) to return `%` values: `localTime`, `endTime` and
`activeDuration`.
Before we do the work to actually compute such values, we update the IDL files for these
properties and back them with a new type called `CSSNumberishTime` which can automatically
convert from and to `CSSNumberish`. The benefit of `CSSNumberishTime` are twofold.
First, it removes the need to deal with `std::variant` switches and then the various units
which `CSSNumericValue` can represent with either "time" or "percentage" semantics and methods
to access such values.
Second, it supports various math operators to directly add, subtract and compare the time
or percentage values held by `CSSNumberishTime`. This will be critical when we adopt `CSSNumberish`
through more of the Web Animations API, especially with the `Animation` APIs which are used
throughout the Web Animations codebase currently as `Seconds`. This should make the move to
`CSSNumberishTime` mostly transparent for most of our code.
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/animation/CSSNumberishTime.cpp: Added.
(WebCore::CSSNumberishTime::CSSNumberishTime):
(WebCore::CSSNumberishTime::time const):
(WebCore::CSSNumberishTime::percentage const):
(WebCore::CSSNumberishTime::isValid const):
(WebCore::CSSNumberishTime::operator+ const):
(WebCore::CSSNumberishTime::operator- const):
(WebCore::CSSNumberishTime::operator< const):
(WebCore::CSSNumberishTime::operator<= const):
(WebCore::CSSNumberishTime::operator> const):
(WebCore::CSSNumberishTime::operator>= const):
(WebCore::CSSNumberishTime::operator CSSNumberish const):
* Source/WebCore/animation/CSSNumberishTime.h: Added.
* Source/WebCore/animation/ComputedEffectTiming.h:
* Source/WebCore/animation/ComputedEffectTiming.idl:
* Source/WebCore/animation/ScrollTimeline.cpp: Fix missing header revealed by the addition of `CSSNumberishTime`.
* Source/WebCore/animation/StyleOriginatedAnimation.cpp:
(WebCore::StyleOriginatedAnimation::invalidateDOMEvents):
* Source/WebCore/animation/ViewTimeline.cpp: Fix missing header revealed by the addition of `CSSNumberishTime`.
* Source/WebCore/animation/WebAnimation.cpp:
(WebCore::WebAnimation::validateCSSNumberishValue const): Remove code dealing with `CSSNumericValue` since all of
it is performed by the `CSSNumberishTime` constructor.
* Source/WebCore/animation/WebAnimationTypes.h: Add `CSSNumberishTime.h` so that the Web Animations code automatically
gets access to `CSSNumberishTime.h` via this oft-included file.
Canonical link: https://commits.webkit.org/283689@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