tor-browser

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

test_streams_srcObject.html (1892B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test interactions of src and srcObject</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      7  <script type="text/javascript" src="manifest.js"></script>
      8 </head>
      9 <body onload="doTests()">
     10 <audio id="a1"></audio>
     11 <audio id="a2"></audio>
     12 <pre id="test">
     13 <script class="testbody" type="text/javascript">
     14 SimpleTest.waitForExplicitFinish();
     15 
     16 var doTest = srcObject => new Promise(resolve => {
     17  var a = document.getElementById('a1');
     18  a.src = getPlayableAudio(gSmallTests).name;
     19  var b = new Audio();
     20 
     21  var newSrc = a.src + "?2";
     22  b.src = newSrc;
     23  is(b[srcObject], null, "Initial srcObject is null");
     24  var stream = a.mozCaptureStream();
     25  b[srcObject] = stream;
     26  is(b[srcObject], stream, "Stream set correctly");
     27  try {
     28    b[srcObject] = "invalid";
     29    ok(false, "Setting srcObject to an invalid value should throw.");
     30  } catch (e) {
     31    ok(e instanceof TypeError, "Exception should be a TypeError");
     32  }
     33  is(b[srcObject], stream, "Stream not set to invalid value");
     34  is(b.src, newSrc, "src attribute not affected by setting srcObject");
     35  var step = 0;
     36  b.addEventListener("loadedmetadata", function() {
     37    if (step == 0) {
     38      is(b.currentSrc, "", "currentSrc set to empty string while playing srcObject");
     39      b[srcObject] = null;
     40      is(b[srcObject], null, "Stream set to null");
     41      // The resource selection algorithm will run again and choose b.src
     42    } else if (step == 1) {
     43      is(b.currentSrc, b.src, "currentSrc set to src now that srcObject is null");
     44      resolve();
     45    }
     46    ++step;
     47  });
     48  a.play();
     49  b.play();
     50 });
     51 
     52 var doTests = () => doTest("srcObject")
     53  .catch(e => ok(false, "Unexpected error: " + e))
     54  .then(() => SimpleTest.finish())
     55  .catch(e => ok(false, "Coding error: " + e));
     56 
     57 </script>
     58 </pre>
     59 </body>
     60 </html>