mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-23 09:22:30 +00:00
Some checks are pending
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Error about not-initialized `x` variable access should be thrown for: ```js function foo() { x = 69; let x; } foo(); ``` Progress on test262: ``` Diff Tests: test/staging/sm/expressions/optional-chain-tdz.js ❌ -> ✅ test/staging/sm/expressions/short-circuit-compound-assignment-tdz.js ❌ -> ✅ ``` Fixes https://github.com/LadybirdBrowser/ladybird/issues/4587
38 lines
1.8 KiB
HTML
38 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<div id="foo"></div>
|
|
<script src="../../include.js"></script>
|
|
<script>
|
|
promiseTest(async () => {
|
|
const foo = document.getElementById("foo");
|
|
|
|
let anim = foo.animate({}, {});
|
|
const prevReplaceState = anim.replaceState;
|
|
anim.persist();
|
|
if (prevReplaceState === "active" && anim.replaceState === "persisted")
|
|
println("persist() sets animation's replaceState to persist");
|
|
anim.cancel();
|
|
|
|
// "Undo" the removal of an animation by the Document
|
|
let anim1 = foo.animate({ opacity: 0 }, { duration: 1, fill: 'forwards' });
|
|
let anim2 = foo.animate({ opacity: 0 }, { duration: 1, fill: 'forwards' });
|
|
await anim1.finished;
|
|
anim1.persist();
|
|
println(`persist() undoes the Document removal effects: ${foo.getAnimations().length === 2}`);
|
|
|
|
const timeline = internals.createInternalAnimationTimeline();
|
|
anim1 = foo.animate({ opacity: 0 }, { duration: 1000, fill: "forwards", timeline });
|
|
anim2 = foo.animate({ opacity: 0 }, { duration: 500, fill: "forwards", timeline });
|
|
timeline.setTime(1500);
|
|
await animationFrame();
|
|
if (anim1.replaceState === "removed" && anim2.replaceState === "active")
|
|
println("Animations are properly replaced when covered by another animation");
|
|
|
|
anim1 = foo.animate({ opacity: 0 }, { duration: 1000, fill: "forwards", timeline });
|
|
anim2 = foo.animate({ opacity: 0 }, { duration: 500, fill: "forwards", timeline });
|
|
anim1.persist();
|
|
timeline.setTime(1500);
|
|
await animationFrame();
|
|
if (anim1.replaceState === "persisted" && anim2.replaceState === "active")
|
|
println("persist() keeps an animation from being replaced");
|
|
});
|
|
</script>
|