| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>playlist-inherits-user-gesture</title> |
| <script src=media-file.js></script> |
| <script src=video-test.js></script> |
| <script> |
| async function runTest() { |
| consoleWrite("** Start first video with user gesture.") |
| if (window.internals) |
| run('window.internals.settings.setVideoPlaybackRequiresUserGesture(true);'); |
| run('video1 = document.createElement("video")'); |
| run('video1.src = findMediaFile("video", "content/test")'); |
| video1.controls = 1; |
| run('document.body.appendChild(video1)'); |
| |
| if (window.internals) |
| testExpected("window.internals.pageMediaState().includes('HasUserInteractedWithMediaElement')", false); |
| runWithKeyDown(() => { |
| run('video1.play()'); |
| }); |
| if (window.internals) |
| testExpected("window.internals.pageMediaState().includes('HasUserInteractedWithMediaElement')", true) |
| |
| await waitFor(video1, 'playing'); |
| run('video1.currentTime = video1.duration - 0.2'); |
| await waitFor(video1, 'ended'); |
| |
| consoleWrite("<br>** Start second video without user gesture but within inheritance window, should succeed.") |
| run('video2 = document.createElement("video")'); |
| run('video2.src = findMediaFile("video", "content/test")'); |
| video2.controls = 1; |
| run('document.body.appendChild(video2)'); |
| |
| await shouldResolve(video2.play()); |
| run('video2.currentTime = video2.duration - 0.2'); |
| await waitFor(video2, 'ended'); |
| |
| consoleWrite("<br>** Start third video without user gesture but after inheritance window, should fail.") |
| await sleepFor(1200); |
| run('video3 = document.createElement("video")'); |
| run('video3.src = findMediaFile("video", "content/test")'); |
| video3.controls = 1; |
| run('document.body.appendChild(video3)'); |
| |
| await shouldReject(video3.play()); |
| |
| endTest(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| </body> |
| </html> |