test_peerConnection_replaceTrack_microphone.html (1499B)
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 10 <script type="application/javascript"> 11 createHTML({ 12 bug: "1709481", 13 title: "replaceTrack (null -> microphone) test", 14 visible: true 15 }); 16 17 runNetworkTest(async () => { 18 // Make sure we use the fake audio device, and not loopback 19 await pushPrefs( 20 ['media.audio_loopback_dev', ''], 21 ['media.navigator.streams.fake', true]); 22 const pc1 = new RTCPeerConnection(), pc2 = new RTCPeerConnection(); 23 pc1.onicecandidate = e => pc2.addIceCandidate(e.candidate); 24 pc2.onicecandidate = e => pc1.addIceCandidate(e.candidate); 25 let remoteStream; 26 pc2.ontrack = ({track}) => remoteStream = new MediaStream([track]); 27 const tc1 = pc1.addTransceiver("audio"); 28 const stream = await navigator.mediaDevices.getUserMedia({audio: true}); 29 const [track] = stream.getAudioTracks(); 30 await pc1.setLocalDescription(); 31 await pc2.setRemoteDescription(pc1.localDescription); 32 await pc2.setLocalDescription(); 33 await pc1.setRemoteDescription(pc2.localDescription); 34 await wait(100); 35 await tc1.sender.replaceTrack(track); 36 const h = new AudioStreamFlowingHelper(); 37 await h.checkAudioFlowing(remoteStream); 38 pc1.close(); 39 pc2.close(); 40 await SpecialPowers.popPrefEnv(); 41 }); 42 43 </script> 44 </pre> 45 </body> 46 </html>