tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>