33 lines
1.1 KiB
HTML
33 lines
1.1 KiB
HTML
<!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> |