| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>default-actionHandlers</title> |
| <script src="../video-test.js"></script> |
| <script src="../media-file.js"></script> |
| <script> |
| |
| async function runTest() { |
| findMediaElement(); |
| run('video.src = findMediaFile("video", "../content/test")'); |
| await waitFor(video, 'loadeddata'); |
| |
| consoleWrite('Test that default media element action will be run when no media session handlers exist for that action.'); |
| |
| testExpected("video.paused", true); |
| |
| await navigator.mediaSession.callActionHandler({action: "play"}); |
| testExpected("video.paused", false); |
| |
| await navigator.mediaSession.callActionHandler({action: "pause"}); |
| testExpected("video.paused", true); |
| |
| run('video.currentTime = 0'); |
| testExpected("video.currentTime", 0); |
| |
| await navigator.mediaSession.callActionHandler( {action: "seekto", seekTime: 1}); |
| testExpected("video.currentTime", 1); |
| |
| await navigator.mediaSession.callActionHandler({action: "seekforward", seekOffset: 5}); |
| testExpected("video.currentTime", 6); |
| |
| await navigator.mediaSession.callActionHandler({action: "seekbackward", seekOffset: 5}); |
| testExpected("video.currentTime", 1); |
| |
| consoleWrite('Test that if an action handler is defined, the default action won\'t be called'); |
| |
| navigator.mediaSession.setActionHandler("play", actionDetails => { |
| consoleWrite(`ACTION: ${actionDetails.action}`); |
| }); |
| await navigator.mediaSession.callActionHandler({action: "play"}); |
| // Playback shouldn't have started if a handler for the play action was defined and it did nothing. |
| testExpected("video.paused", true); |
| |
| navigator.mediaSession.setActionHandler("play", null); |
| await navigator.mediaSession.callActionHandler({action: "play"}); |
| testExpected("video.paused", false); |
| |
| navigator.mediaSession.setActionHandler("pause", actionDetails => { |
| consoleWrite(`ACTION: ${actionDetails.action}`); |
| }); |
| await navigator.mediaSession.callActionHandler({action: "pause"}); |
| // Playback shouldn't have been interrupted if a handler for the pause action was defined and it did nothing. |
| testExpected("video.paused", false); |
| |
| navigator.mediaSession.setActionHandler("pause", null); |
| await navigator.mediaSession.callActionHandler({action: "pause"}); |
| testExpected("video.paused", true); |
| |
| navigator.mediaSession.setActionHandler("seekto", actionDetails => { |
| consoleWrite(`ACTION: ${actionDetails.action}`); |
| }); |
| await navigator.mediaSession.callActionHandler({action: "seekto", seekTime: 5}); |
| testExpected("video.currentTime", 1); |
| |
| navigator.mediaSession.setActionHandler("seekto", null); |
| await navigator.mediaSession.callActionHandler({action: "seekto", seekTime: 5}); |
| testExpected("video.currentTime", 5); |
| |
| endTest(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <video controls preload='auto'></video> |
| </body> |
| </html> |