tor-browser

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

getdisplaymedia-restrictOwnAudio.https.html (1915B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>getDisplayMedia</title>
      4 <meta name="timeout" content="long">
      5 <button id="button">User gesture</button>
      6 <script src="/resources/testharness.js"></script>
      7 <script src="/resources/testharnessreport.js"></script>
      8 <script src="/resources/testdriver.js"></script>
      9 <script src="/resources/testdriver-vendor.js"></script>
     10 <script>
     11  'use strict';
     12 
     13 const stopTracks = stream => stream.getTracks().forEach(track => track.stop());
     14 
     15 async function getDisplayMedia(constraints) {
     16  const p = new Promise(r => button.onclick = r);
     17  await test_driver.click(button);
     18  await p;
     19  return navigator.mediaDevices.getDisplayMedia(constraints);
     20 }
     21 
     22 test(() => {
     23  const supportedConstraints =
     24    navigator.mediaDevices.getSupportedConstraints();
     25  assert_true(supportedConstraints.restrictOwnAudio);
     26 }, "restrictOwnAudio is supported");
     27 
     28 {
     29  const restrictOwnAudio = [true, false];
     30  restrictOwnAudio.forEach((restrictOwnAudio) => {
     31    promise_test(async (t) => {
     32      const stream = await getDisplayMedia({
     33        audio: { restrictOwnAudio },
     34      });
     35      t.add_cleanup(() => stopTracks(stream));
     36      const [videoTrack] = stream.getVideoTracks();
     37      assert_false("restrictOwnAudio" in videoTrack.getSettings());
     38      const [audioTrack] = stream.getAudioTracks();
     39      const audioTrackSettings = audioTrack.getSettings();
     40      assert_true("restrictOwnAudio" in audioTrackSettings);
     41      assert_equals(
     42        audioTrackSettings.restrictOwnAudio,
     43        restrictOwnAudio
     44      );
     45      await audioTrack.applyConstraints();
     46      // Removing constraints does not change the restrictOwnAudio setting.
     47      assert_true("restrictOwnAudio" in audioTrackSettings);
     48      assert_equals(
     49        audioTrackSettings.restrictOwnAudio,
     50        restrictOwnAudio
     51      );
     52    }, `getDisplayMedia({"audio":{"restrictOwnAudio":${restrictOwnAudio}}}) with getSettings`);
     53  });
     54 }
     55 
     56 </script>