tor-browser

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

test_setSinkId_default_addTrack.html (1419B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <script type="application/javascript" src="mediaStreamPlayback.js"></script>
      5 </head>
      6 <body>
      7 <pre id="test">
      8 
      9 <script>
     10  createHTML({
     11    title: "HTMLMediaElement.setSinkId with default device and adding a track",
     12    bug: "1661649",
     13  });
     14 
     15  /**
     16   * Run a test to verify set sink id in audio element.
     17   */
     18  runTest(async () => {
     19    await pushPrefs(["media.setsinkid.enabled", true]);
     20 
     21    // Expose an audio output device.
     22    SpecialPowers.wrap(document).notifyUserGestureActivation();
     23    await navigator.mediaDevices.selectAudioOutput();
     24 
     25    const allDevices = await navigator.mediaDevices.enumerateDevices();
     26    const audioDevices = allDevices.filter(({kind}) => kind == 'audiooutput');
     27    info(`Found  ${audioDevices.length} output devices`);
     28    isnot(audioDevices.length, 0, "Found output devices");
     29 
     30    const audio = createMediaElement("audio", "audio");
     31    document.body.appendChild(audio);
     32 
     33    audio.srcObject = await navigator.mediaDevices.getUserMedia({audio: true});
     34    audio.play();
     35 
     36    await audio.setSinkId(audioDevices[0].deviceId);
     37    await audio.setSinkId("");
     38    is(audio.sinkId, "", "sinkId restored to default");
     39 
     40    audio.srcObject.addTrack((await navigator.mediaDevices.getUserMedia({audio: true})).getTracks()[0]);
     41 
     42    await wait(0);
     43 
     44    for (let t of audio.srcObject.getTracks()) {
     45      t.stop();
     46    }
     47  });
     48 
     49 </script>
     50 </pre>
     51 </body>
     52 </html>