Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c152324493769faa042332fd62826b37258d67bc
https://github.com/WebKit/WebKit/commit/c152324493769faa042332fd62826b37258d67bc
Author: Antoine Quint <[email protected]>
Date: 2025-05-14 (Wed, 14 May 2025)
Changed paths:
A
LayoutTests/animations/no-cancelation-when-entering-page-cache-expected.txt
A LayoutTests/animations/no-cancelation-when-entering-page-cache.html
M Source/WebCore/animation/StyleOriginatedAnimation.cpp
M Source/WebCore/style/Styleable.cpp
Log Message:
-----------
[scroll-animations]
https://scroll-driven-animations.style/demos/3d-shoe-explorer/css/ animations
break after navigating away then back to page
https://bugs.webkit.org/show_bug.cgi?id=284732
rdar://141528296
Reviewed by Antti Koivisto.
The demo at https://scroll-driven-animations.style/demos/3d-shoe-explorer/css/
shows a 3d model of sorts that is rendered via <canvas>.
To perform the rotation of the model, the demo uses a `requestAnimationFrame`
loop to query the current time of scroll-driven CSS
animations in the document. The animation object itself is cached upon page
load. As the page enters the back-forward cache, the
wrapper object itself is preserved, but the `CSSAnimation` is canceled during
page teardown under `BackForwardCache::trySuspendPage()`.
As the page is restored from the page cache, the wrapper object will no longer
provide a valid current time since its associated
animation has been canceled.
To address this we no longer cancel style-originated animations when entering
the page cache.
Running the new test with multiple iterations uncovered an unsafe comparison in
`StyleOriginatedAnimation::phaseWithoutEffect()`
between a `WebAnimationTime` and a `Seconds` value, so we also address this.
* LayoutTests/animations/no-cancelation-when-entering-page-cache-expected.txt:
Added.
* LayoutTests/animations/no-cancelation-when-entering-page-cache.html: Added.
* Source/WebCore/animation/StyleOriginatedAnimation.cpp:
(WebCore::StyleOriginatedAnimation::phaseWithoutEffect const):
* Source/WebCore/style/Styleable.cpp:
(WebCore::Styleable::cancelStyleOriginatedAnimations const):
Canonical link: https://commits.webkit.org/294899@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes