| <!DOCTYPE html> |
| <html> |
| <head> |
| <style> |
| video { |
| position: absolute; |
| left: 10px; |
| top: 50px; |
| } |
| |
| .masker { |
| position: absolute; |
| left: 10px; |
| top: 50px; |
| height: 360px; |
| width: 680px; |
| border-top: 50px solid white; |
| border-right: 300px solid white; |
| border-bottom: 50px solid white; |
| border-left: 300px solid white; |
| box-sizing: border-box; |
| } |
| </style> |
| </head> |
| |
| <body> |
| <p>Tests that the video frames of an HTMLVideoElement are black if no video MediaStreamTrack is enabled.</p> |
| <video controls width="680" height="360"></video> |
| <div class="masker"></div> |
| |
| <script> |
| let mediaStream; |
| let video; |
| |
| function debug(msg) |
| { |
| let span = document.createElement('span'); |
| document.body.appendChild(span); |
| span.innerHTML = `${msg} <br />`; |
| } |
| |
| function canplaythrough() |
| { |
| mediaStream.getVideoTracks()[0].enabled = false; |
| setTimeout(() => { window.testRunner.notifyDone(); }, 200); |
| } |
| |
| function canplay() |
| { |
| video.play(); |
| } |
| |
| function setupStream(stream) |
| { |
| mediaStream = stream; |
| video.srcObject = mediaStream; |
| } |
| |
| function failedToSetupStream() |
| { |
| debug('Failed to setup stream'); |
| } |
| |
| function start() |
| { |
| video = document.querySelector('video'); |
| video.addEventListener('canplay', canplay, false); |
| video.addEventListener('canplaythrough', canplaythrough, false); |
| navigator.mediaDevices.getUserMedia({video:true}) |
| .then(setupStream) |
| .catch(failedToSetupStream); |
| } |
| |
| if (window.testRunner) { |
| window.testRunner.waitUntilDone(); |
| window.testRunner.setUserMediaPermission(true); |
| start(); |
| } |
| </script> |
| </body> |
| </html> |