83 lines
3.7 KiB
HTML
83 lines
3.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>mock-actionHandlers</title>
|
|
<script src="../video-test.js"></script>
|
|
<script>
|
|
var actionDetails;
|
|
|
|
function isEqualActionDetails(setA, setB) {
|
|
return setA.action === setB.action
|
|
&& setA.seekOffset === setB.seekOffset
|
|
&& setA.seekTime === setB.seekTime
|
|
&& setA.fastSeek === setB.fastSeek
|
|
}
|
|
|
|
function testExpectedActionDetails(testFuncString, expected)
|
|
{
|
|
let observed = eval(testFuncString);
|
|
let success = isEqualActionDetails(observed, expected);
|
|
reportExpected(success, testFuncString, '===', JSON.stringify(expected), JSON.stringify(observed));
|
|
}
|
|
|
|
window.addEventListener('load', async event => {
|
|
if (!window.internals) {
|
|
failTest('This test requires Internals');
|
|
return;
|
|
}
|
|
|
|
let actions = ["play", "pause", "seekbackward", "seekforward", "previoustrack", "nexttrack", "skipad", "stop", "seekto"];
|
|
|
|
for (action of actions) {
|
|
navigator.mediaSession.setActionHandler(action, actionDetails => {
|
|
consoleWrite(`ACTION: ${actionDetails.action}`);
|
|
window.actionDetails = actionDetails;
|
|
});
|
|
}
|
|
|
|
consoleWrite('Test that synthetic Media Session actions trigger page installed actionHandlers.')
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "play"})');
|
|
testExpectedActionDetails('actionDetails', {action: 'play'});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "pause"})');
|
|
testExpectedActionDetails('actionDetails', {action: 'pause'});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "seekbackward", seekOffset: -10})');
|
|
testExpectedActionDetails('actionDetails', {action: 'seekbackward', seekOffset: -10});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "seekbackward", seekOffset: -10, fastSeek: true})');
|
|
testExpectedActionDetails('actionDetails', {action: 'seekbackward', seekOffset: -10, fastSeek: true});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "seekforward", seekOffset: 10})');
|
|
testExpectedActionDetails('actionDetails', {action: 'seekforward', seekOffset: 10});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "seekforward", seekOffset: 10, fastSeek: true})');
|
|
testExpectedActionDetails('actionDetails', {action: 'seekforward', seekOffset: 10, fastSeek: true});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "previoustrack"})');
|
|
testExpectedActionDetails('actionDetails', {action: 'previoustrack'});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "nexttrack"})');
|
|
testExpectedActionDetails('actionDetails', {action: 'nexttrack'});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "skipad"})');
|
|
testExpectedActionDetails('actionDetails', {action: 'skipad'});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "stop"})');
|
|
testExpectedActionDetails('actionDetails', {action: 'stop'});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "seekto", seekTime: 1})');
|
|
testExpectedActionDetails('actionDetails', {action: 'seekto', seekTime: 1});
|
|
|
|
run('internals.sendMediaSessionAction(navigator.mediaSession, {action: "seekto", seekTime: 1, fastSeek: true})');
|
|
testExpectedActionDetails('actionDetails', {action: 'seekto', seekTime: 1, fastSeek: true});
|
|
|
|
endTest();
|
|
}, {once: true});
|
|
</script>
|
|
</head>
|
|
<body>
|
|
|
|
</body>
|
|
</html> |