| <html> |
| <head> |
| <script src='media-file.js'></script> |
| <script src='video-test.js'></script> |
| <script> |
| var video; |
| var callbackId; |
| |
| var nextStep; |
| |
| function start() |
| { |
| findMediaElement(); |
| |
| if (window.internals) { |
| internals.setMockMediaPlaybackTargetPickerEnabled(true); |
| internals.settings.setAllowsAirPlayForMediaPlayback(true); |
| } |
| |
| consoleWrite('<br>** test initial callback when device is unavailable'); |
| |
| video.remote.watchAvailability(step).then(setCallbackId).catch(failTest); |
| nextStep = initial; |
| } |
| |
| function setCallbackId(id) |
| { |
| callbackId = id; |
| } |
| |
| function step(available) |
| { |
| consoleWrite(`CALLBACK( available=${available} )`); |
| |
| if (nextStep) |
| nextStep(available); |
| } |
| |
| function initial(available) |
| { |
| consoleWrite('<br>** simulate device becoming available'); |
| if (window.internals) |
| internals.setMockMediaPlaybackTargetPickerState('Sleepy TV', 'DeviceAvailable'); |
| nextStep = haveTarget; |
| } |
| |
| function haveTarget(available) |
| { |
| consoleWrite('<br>** test initial callback when device is available'); |
| |
| video.remote.cancelWatchAvailability(callbackId); |
| video.remote.watchAvailability(step).then(setCallbackId).catch(failTest); |
| nextStep = initialWithTarget; |
| } |
| |
| function initialWithTarget(available) |
| { |
| consoleWrite('<br>** simulate device becoming unavailable'); |
| if (window.internals) |
| internals.setMockMediaPlaybackTargetPickerState('Sleepy TV', 'DeviceUnavailable'); |
| nextStep = endTest; |
| |
| } |
| </script> |
| </head> |
| |
| <body onload='start()'> |
| <video controls></video> |
| <p>Test that 'RemotePlaybackAvailabilityCallback' callback is called when playback devices come and go.</p> |
| </body> |
| </html> |