blob: 9351423fa5d4fedc1676f81a8fa03d394bf266ea [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<div id="target"></div>
<script src="../resources/js-test-pre.js"></script>
<script>
description("This test checks that registering an event listener on an animation whose JS wrapper would otherwise be garbage-collected still fires registered event listeners.");
if (window.internals)
jsTestIsAsync = true;
// A longer animation that could not be garbage-collected under any circumstance allows us to finish the test
// with a reasonable delay without hard-coding a timeout.
const timeoutAnimation = document.getElementById("target").animate({ marginRight: ["0px", "100px"] }, 1000);
timeoutAnimation.addEventListener("finish", finishJSTest);
function runTest() {
const animation = document.getElementById("target").animate({ marginLeft: ["0px", "100px"] }, 100);
animation._isMyAnimation = true;
animation.addEventListener("finish", event => {
shouldBeTrue("event.target._isMyAnimation");
finishJSTest();
});
}
gc();
runTest();
gc();
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>