blob: b2563b9c6d567e6c4e72825bf7d6e6099058c95d [file] [log] [blame]
<html>
<head>
<script src='media-file.js'></script>
<script src='video-test.js'></script>
<script>
var video1;
var video2;
function start()
{
video1 = document.getElementsByTagName('video')[0];
video2 = document.getElementsByTagName('video')[1];
if (window.internals)
internals.setMockMediaPlaybackTargetPickerEnabled(true);
video1.addEventListener('webkitplaybacktargetavailabilitychanged', noSource, true);
}
function noSource(event)
{
video1.removeEventListener('webkitplaybacktargetavailabilitychanged', noSource, true);
consoleWrite(`EVENT( ${event.type} )`);
testExpected('event.availability', 'not-available');
video1.addEventListener('webkitplaybacktargetavailabilitychanged', haveTarget, true);
consoleWrite('<br>** simulate device becoming available');
if (window.internals)
internals.setMockMediaPlaybackTargetPickerState('Sleepy TV', 'DeviceAvailable');
}
function haveTarget(event)
{
// setMockMediaPlaybackTargetPickerState happens asynchronously in WK2 and a
// 'webkitplaybacktargetavailabilitychanged' is always sent when an event listener
// is added, so we may get a "not available" event first.
if (event.availability == 'not-available')
return;
video1.removeEventListener('webkitplaybacktargetavailabilitychanged', haveTarget, true);
consoleWrite(`EVENT( ${event.type} )`);
consoleWrite('<br>** set src on video that does not have event listener');
video2.src = findMediaFile('video', 'content/test');
video1.addEventListener('webkitplaybacktargetavailabilitychanged', withSource, true);
}
function withSource(event)
{
consoleWrite(`EVENT( ${event.type} )`);
testExpected('event.availability', 'available');
consoleWrite('');
endTest();
}
</script>
</head>
<body onload='start()'>
<video controls></video>
<br>
<video controls></video>
<p>Test that 'webkitplaybacktargetavailabilitychanged' event is sent when at least one
video element has playable media.</p>
</body>
</html>