RESOLVED CONFIGURATION CHANGED 199529
[Web Animations] setting currentTime during to a time in delay/endDelay does not render properly for accelerated animations
https://bugs.webkit.org/show_bug.cgi?id=199529
Summary [Web Animations] setting currentTime during to a time in delay/endDelay does ...
dwilson1
Reported 2019-07-05 13:23:14 PDT
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()`. Example: https://codepen.io/danwilson/pen/xoaRGV?editors=0011 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.pause(); 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)
Attachments
Radar WebKit Bug Importer
Comment 1 2019-07-06 01:22:25 PDT
Antoine Quint
Comment 2 2019-07-16 16:18:23 PDT
Thanks for the detailed report, I will definitely take a look at this soon but won't have time in the coming weeks.
Antoine Quint
Comment 3 2023-05-11 07:55:49 PDT
I've tried this again with Safari 16 and it is working as expected.
Note You need to log in before you can comment on or make changes to this bug.