test_peerConnection_addSecondVideoStream.html (1792B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <script type="application/javascript" src="pc.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 createHTML({ 11 bug: "1017888", 12 title: "Renegotiation: add second video stream" 13 }); 14 15 runNetworkTest(async function (options) { 16 // Use fake video here since the native fake device on linux doesn't 17 // change color as needed by checkVideoPlaying() below. 18 await pushPrefs( 19 ['media.video_loopback_dev', ''], 20 ['media.navigator.streams.fake', true]); 21 // [TODO] re-enable HW decoder after bug 1526207 is fixed. 22 if (navigator.userAgent.includes("Android")) { 23 await pushPrefs(["media.navigator.mediadatadecoder_vpx_enabled", false], 24 ["media.webrtc.hw.h264.enabled", false]); 25 } 26 27 const test = new PeerConnectionTest(options); 28 addRenegotiation(test.chain, 29 [ 30 function PC_LOCAL_ADD_SECOND_STREAM(test) { 31 test.setMediaConstraints([{video: true}, {video: true}], 32 [{video: true}]); 33 return test.pcLocal.getAllUserMediaAndAddStreams([{video: true}]); 34 }, 35 ], 36 [ 37 function PC_REMOTE_CHECK_VIDEO_FLOW(test) { 38 const h = new VideoStreamHelper(); 39 is(test.pcRemote.remoteMediaElements.length, 2, 40 "Should have two remote media elements after renegotiation"); 41 return Promise.all(test.pcRemote.remoteMediaElements.map(video => 42 h.checkVideoPlaying(video))); 43 }, 44 ] 45 ); 46 47 test.setMediaConstraints([{video: true, fake: true}], [{video: true}]); 48 return test.run(); 49 }); 50 </script> 51 </pre> 52 </body> 53 </html>