[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