test_getUserMedia_bug1223696.html (1584B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <script type="application/javascript" src="mediaStreamPlayback.js"></script> 5 <script type="application/javascript" src="/tests/dom/canvas/test/captureStream_common.js"></script> 6 </head> 7 <body> 8 <pre id="test"> 9 <script type="application/javascript"> 10 "use strict"; 11 12 createHTML({ 13 title: "Testing that removeTrack+addTrack of video tracks still render the correct track in a media element", 14 bug: "1223696", 15 visible: true 16 }); 17 18 runTest(async function() { 19 const stream = await getUserMedia({audio:true, video: true}); 20 info("Test addTrack()ing a video track to an audio-only gUM stream"); 21 22 const video = createMediaElement("video", "test_video_track"); 23 video.srcObject = stream; 24 video.play(); 25 26 await haveEvent(video, "loadeddata", wait(5000, new Error("Timeout"))); 27 info("loadeddata"); 28 29 const removedTrack = stream.getVideoTracks()[0]; 30 stream.removeTrack(removedTrack); 31 32 const h = new CaptureStreamTestHelper2D(); 33 const emitter = new VideoFrameEmitter(h.grey, h.grey); 34 emitter.start(); 35 36 stream.addTrack(emitter.stream().getVideoTracks()[0]); 37 38 checkMediaStreamContains(stream, [stream.getAudioTracks()[0], 39 emitter.stream().getVideoTracks()[0]]); 40 41 await h.pixelMustBecome(video, h.grey, { 42 threshold: 5, 43 infoString: "The canvas track should be rendered by the media element", 44 }); 45 46 emitter.stop(); 47 for (const t of [removedTrack, ...stream.getAudioTracks()]) { 48 t.stop(); 49 } 50 }); 51 </script> 52 </pre> 53 </body> 54 </html>