blob: dfc7583fc4b1380c919f54d30319e2be2f96896e [file] [log] [blame]
<html>
<head>
<script src="../../media/video-test.js"></script>
<script>
if (window.internals)
internals.settings.setInvisibleAutoplayNotPermitted(true);
async function start()
{
findMediaElement();
consoleWrite('** setting video.srcObject');
video.srcObject = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
video.muted = true;
waitForEventOnce('play', play1);
consoleWrite('');
}
function play1()
{
run('video.style.display = "none"');
waitForEventOnce('pause', pause1);
}
function pause1()
{
run('video.style.removeProperty("display")')
waitForEventOnce('play', play2);
}
async function play2()
{
run('video.style.visibility = "hidden"');
waitForEventOnce('pause', pause2);
}
async function pause2()
{
// At this point, we are interrupted, calling play should be a no-op and should not confuse our interruption state tracking.
video.play();
run('video.style.removeProperty("visibility")');
waitForEventOnce('play', play3);
}
function play3()
{
run('document.documentElement.style.height = window.innerHeight + 20 + video.offsetHeight');
run('window.scrollBy(0, 20 + video.offsetHeight)');
waitForEventOnce('pause', pause3);
}
function pause3()
{
run('window.scrollTo(0, 0)');
waitForEventOnce('play', finish);
}
function finish()
{
video.srcObject.getVideoTracks()[0].stop();
video.srcObject = null;
endTest();
}
</script>
</head>
<body onload="start()">
<video controls autoplay></video>
<p>Test that "invisible autoplay not allowed restriction" pauses realtime media when scrolled out of view and restarts as expected.</p>
</body>
</html>