[Webkit-unassigned] [Bug 199529] New: [Web Animations] setting currentTime during to a time in delay/endDelay does not render properly for accelerated animations

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Jul 5 13:23:14 PDT 2019


            Bug ID: 199529
           Summary: [Web Animations] setting currentTime during to a time
                    in delay/endDelay does not render properly for
                    accelerated animations
           Product: WebKit
           Version: Safari Technology Preview
          Hardware: Macintosh
                OS: macOS 10.14
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Animations
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: dwilson1 at gmail.com
                CC: dino at apple.com

Filled Animations created by the Web Animations API (appears to be limited to accelerated animations like transform) do not render visually in the correct state when updating `currentTime` while paused to a value that is inside a `delay` or `endDelay`. It will resync to the proper state when calling `play()`.


In the example, the input range acts as a scrubber for the timeline. It moves while the animation continues, and if you drag the nib it will seek through the animation. The animation here is 2000ms long, with delays of 4000ms on either side. The animation runs as expected unless you try to seek to a new point that is in the delay areas. Instead of showing the starting state while in the delay period or the ending state for the endDelay, it shows different states of the primary animation. As soon as you let go (and start playing the animation again) it corrects and gets to the proper currentTime.

You can also use the console and pause the animation directly and set the currentTime to something between 0ms and 4000ms (or 6000ms to 10000ms) to see how it does not respect the fill mode state.

I tried recreating with a marginLeft animation, and this issue did not happen, so it feels limited to transform or accelerated animations.

Steps to Reproduce:
1. Set up an animation such as:

let animation = element.animate([ { transform: 'translateX(-100%)' }, { transform: 'translateX(100%)' } ], {
  duration: 9000,
  delay: 10000,
  fill: 'both'

2. Pause the animation and update the currentTime to 9000 (still within the delay section)

animation.currentTime = 9000;

Expected Results:
Animation displays the starting state.

Actual Results:
Animation displays the end state (the state that would appear at 9000 if there was a delay of 0ms)

You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20190705/6941d0d7/attachment-0001.html>

More information about the webkit-unassigned mailing list