[webkit-changes] [WebKit/WebKit] b78213: [css-animations] css/css-animations/jump-start-ani...

Antoine Quint noreply at github.com
Thu Aug 29 15:21:54 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b782138edb7f3058d4a9b7a38a2439db6cd7c7bf
      https://github.com/WebKit/WebKit/commit/b782138edb7f3058d4a9b7a38a2439db6cd7c7bf
  Author: Antoine Quint <graouts at webkit.org>
  Date:   2024-08-29 (Thu, 29 Aug 2024)

  Changed paths:
    M LayoutTests/TestExpectations
    M Source/WebCore/animation/AnimationEffect.cpp
    M Source/WebCore/animation/AnimationEffectTiming.cpp
    M Source/WebCore/animation/AnimationEffectTiming.h
    M Source/WebCore/animation/ComputedEffectTiming.h
    M Source/WebCore/animation/KeyframeEffect.cpp
    M Source/WebCore/animation/KeyframeEffect.h
    M Source/WebCore/animation/KeyframeInterpolation.cpp
    M Source/WebCore/animation/KeyframeInterpolation.h
    M Source/WebCore/platform/animation/AcceleratedEffect.cpp
    M Source/WebCore/platform/animation/TimingFunction.cpp
    M Source/WebCore/platform/animation/TimingFunction.h

  Log Message:
  -----------
  [css-animations] css/css-animations/jump-start-animation-before-phase.html is a failure
https://bugs.webkit.org/show_bug.cgi?id=278855

Reviewed by Simon Fraser.

The `steps()` easing takes a "before" flag [0] that we only passed when calling
`TimingFunction::transformProgress()` when resolving the overall effect progress in
`AnimationEffectTiming::resolve()`.

But a `steps()` easing may be specified for a given keyframe interval, and as such
the `TimingFunction::transformProgress()` call site in `KeyframeInterpolation::interpolateKeyframes()`
needs to pass that flag in as well. We now expose that flag through `ResolvedEffectTiming`
and `ComputedEffectTiming` such that we may ultimately pass it over to the appropriate
method both in the non-accelerated codepath (`KeyframeEffect::setAnimatedPropertiesInStyle()`)
and the accelerated codepath (`AcceleratedEffect::apply()`).

This makes the recently-added WPT test `css/css-animations/jump-start-animation-before-phase.html`
pass since it used a `steps(1, jump-start)` easing in the before phase of a CSS Animation.

[0] https://www.w3.org/TR/css-easing-1/#before-flag

* LayoutTests/TestExpectations:
* Source/WebCore/animation/AnimationEffect.cpp:
(WebCore::AnimationEffect::getComputedTiming const):
* Source/WebCore/animation/AnimationEffectTiming.cpp:
(WebCore::AnimationEffectTiming::resolve const):
* Source/WebCore/animation/AnimationEffectTiming.h:
* Source/WebCore/animation/ComputedEffectTiming.h:
* Source/WebCore/animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::apply):
(WebCore::KeyframeEffect::getAnimatedStyle):
(WebCore::KeyframeEffect::setAnimatedPropertiesInStyle):
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):
* Source/WebCore/animation/KeyframeEffect.h:
* Source/WebCore/animation/KeyframeInterpolation.cpp:
(WebCore::KeyframeInterpolation::interpolateKeyframes const):
* Source/WebCore/animation/KeyframeInterpolation.h:
* Source/WebCore/platform/animation/AcceleratedEffect.cpp:
(WebCore::AcceleratedEffect::apply):
* Source/WebCore/platform/animation/TimingFunction.cpp:
(WebCore::TimingFunction::transformProgress const):
* Source/WebCore/platform/animation/TimingFunction.h:

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