blob: 7ccddf2071bc90d615b49325ff7793dfdb0a783e [file] [log] [blame]
<html>
<head>
<script src="../../../media/media-file.js"></script>
<script src="../../../media/video-test.js"></script>
<script>
if (window.internals)
window.internals.settings.setAllowsPictureInPictureMediaPlayback(true);
function start()
{
if (!window.internals) {
failTest('This test requires window.internals.');
return;
}
findMediaElement();
waitForEvent('canplaythrough', canplaythrough);
waitForEvent('playing', playing);
video.src = findMediaFile("video", "content/test");
consoleWrite("Start");
}
function canplaythrough()
{
video.removeEventListener('canplaythrough', canplaythrough);
run("video.play()");
}
function playing()
{
video.removeEventListener('playing', playing);
if (!('webkitSupportsPresentationMode' in video && 'webkitPresentationMode' in video)) {
failTest("Presentation mode is not supported in this video element.")
return;
}
if (!video.webkitSupportsPresentationMode('picture-in-picture')) {
failTest("picture-in-picture is not supported for this video element");
}
video.addEventListener('webkitpresentationmodechanged', onpresentationmodechanged);
runWithKeyDown(function() { run("video.webkitSetPresentationMode('picture-in-picture')"); });
}
function onpresentationmodechanged()
{
video.removeEventListener('webkitpresentationmodechanged', onpresentationmodechanged);
run("internals.beginMediaSessionInterruption('EnteringBackground')");
setTimeout(pipInBackground, 100);
}
function pipInBackground()
{
testExpected("video.paused", false);
run("internals.beginMediaSessionInterruption('SuspendedUnderLock')");
setTimeout(pipUnderLock, 100);
}
function pipUnderLock()
{
testExpected("video.paused", true);
run("internals.endMediaSessionInterruption('MayResumePlaying')");
setTimeout(pipUnlocked, 100);
}
function pipUnlocked()
{
testExpected("video.paused", true);
run("internals.endMediaSessionInterruption('')");
setTimeout(pipForeground, 100);
}
function pipForeground()
{
testExpected("video.paused", true);
endTest();
}
</script>
</head>
<body onload="start()">
<video controls ></video>
<p>Test that playback is paused by an SuspendUnderLock, and that ending the interruption does not automatically resume playback.</p>
</body>
</html>