mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-20 16:28:54 +00:00
LibWeb: Add a test for Animation.finish()
This commit is contained in:
parent
d1b30a1bb5
commit
7472536ecb
Notes:
sideshowbarker
2024-07-17 06:24:08 +09:00
Author: https://github.com/mattco98
Commit: 7472536ecb
Pull-request: https://github.com/SerenityOS/serenity/pull/23756
2 changed files with 71 additions and 0 deletions
|
@ -0,0 +1,8 @@
|
||||||
|
Cannot finish an animation with no effective playback rate
|
||||||
|
Cannot finish an animation with an infinite effect end
|
||||||
|
finish() updates animation's pending playback rate
|
||||||
|
finish() updates currentTime of animation with positive playback rate
|
||||||
|
finish() updates currentTime of animation with negative playback rate
|
||||||
|
finish() updates animation's startTime
|
||||||
|
finish() sends an onfinish event
|
||||||
|
finish() recreated the animation's finished promise
|
|
@ -0,0 +1,63 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<div id="foo"></div>
|
||||||
|
<script src="../../include.js"></script>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
const foo = document.getElementById("foo");
|
||||||
|
|
||||||
|
let anim = foo.animate({}, {});
|
||||||
|
anim.playbackRate = 0;
|
||||||
|
try {
|
||||||
|
anim.finish();
|
||||||
|
} catch {
|
||||||
|
println("Cannot finish an animation with no effective playback rate");
|
||||||
|
}
|
||||||
|
|
||||||
|
anim = foo.animate({}, { duration: Infinity });
|
||||||
|
try {
|
||||||
|
anim.finish();
|
||||||
|
} catch {
|
||||||
|
println("Cannot finish an animation with an infinite effect end");
|
||||||
|
}
|
||||||
|
|
||||||
|
anim = foo.animate({}, {});
|
||||||
|
anim.updatePlaybackRate(2.0);
|
||||||
|
let previousPlaybackRate = anim.playbackRate;
|
||||||
|
anim.finish();
|
||||||
|
if (previousPlaybackRate === 1.0 && anim.playbackRate === 2.0)
|
||||||
|
println("finish() updates animation's pending playback rate")
|
||||||
|
|
||||||
|
const timeline = internals.createInternalAnimationTimeline();
|
||||||
|
anim = foo.animate({}, { duration: 1000, timeline });
|
||||||
|
anim.finish();
|
||||||
|
if (anim.currentTime === 1000)
|
||||||
|
println("finish() updates currentTime of animation with positive playback rate");
|
||||||
|
|
||||||
|
anim = foo.animate({}, { duration: 1000 });
|
||||||
|
anim.playbackRate = -1;
|
||||||
|
anim.finish();
|
||||||
|
if (anim.currentTime === 0)
|
||||||
|
println("finish() updates currentTime of animation with negative playback rate");
|
||||||
|
if (anim.startTime !== null)
|
||||||
|
println("finish() updates animation's startTime");
|
||||||
|
|
||||||
|
anim = foo.animate({}, { duration: 1000 });
|
||||||
|
let finishCount = 0;
|
||||||
|
anim.onfinish = () => { finishCount++; }
|
||||||
|
anim.finish();
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
if (finishCount === 1)
|
||||||
|
println("finish() sends an onfinish event");
|
||||||
|
})
|
||||||
|
|
||||||
|
anim = foo.animate({}, { duration: 1000 });
|
||||||
|
let finished = false;
|
||||||
|
anim.finished.then(() => finished = true);
|
||||||
|
anim.finish();
|
||||||
|
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
if (finished)
|
||||||
|
println("finish() recreated the animation's finished promise");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
Loading…
Add table
Add a link
Reference in a new issue