blob: 4acdc2fa5e020192b7ebf314ccb8fa4d478ead14 [file] [edit]
<!DOCTYPE html>
<body>
<script src="../../resources/js-test.js"></script>
<script>
description("Tests media session action handlers are not prematurely garbage collected. Test passes if it doesn't crash.");
jsTestIsAsync = true;
function runTest() {
internals.sendMediaSessionAction(navigator.mediaSession, {action: "play"});
shouldBeTrue(() => areObjectsEqual(window.actionDetails, {action: "play"}));
internals.sendMediaSessionAction(navigator.mediaSession, {action: "pause"});
shouldBeTrue(() => areObjectsEqual(window.actionDetails, {action: "pause"}));
}
function forceGCAndRunTest() {
gc();
requestAnimationFrame(() => {
runTest();
finishJSTest();
});
}
onload = () => {
if (!window.internals) {
testFailed("Test requires internals.");
finishJSTest();
return;
}
function callback(actionDetails) {
window.actionDetails = actionDetails;
};
let actions = ["play", "pause"];
for (action of actions)
navigator.mediaSession.setActionHandler(action, callback);
runTest();
requestAnimationFrame(() => forceGCAndRunTest());
};
</script>
</body>