tor-browser

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

test_LoadedDataFired_mp4.html (2164B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>MSE: Check that playback only starts once we have data at time = 0</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script type="text/javascript" src="mediasource.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      8 </head>
      9 <body>
     10 <pre id="test">
     11 <script class="testbody" type="text/javascript">
     12 
     13 SimpleTest.waitForExplicitFinish();
     14 
     15 runWithMSE(async (ms, el) => {
     16  el.controls = true;
     17  el.addEventListener("loadeddata", () => {
     18    ok(el.buffered.length, "data is buffered");
     19    is(el.buffered.start(0), 0, "must fire loadeddata when data has been loaded");
     20    is(el.currentTime, 0, "must fire loadeddata at start");
     21  });
     22  el.addEventListener("playing", () => {
     23    ok(el.buffered.length, "data is buffered");
     24    is(el.buffered.start(0), 0, "must fire playing when data has been loaded");
     25    ok(el.currentTime >= 0, "must have started playback");
     26  });
     27  await once(ms, "sourceopen");
     28  ok(true, "Receive a sourceopen event");
     29  const videosb = ms.addSourceBuffer("video/mp4");
     30  is(el.readyState, el.HAVE_NOTHING, "readyState is HAVE_NOTHING");
     31  let p = once(el, "loadedmetadata");
     32  await fetchAndLoad(videosb, "bipbop/bipbop_video", ["init"], ".mp4");
     33  await p;
     34  videosb.appendWindowStart = 2;
     35  videosb.appendWindowEnd = 4;
     36  is(el.readyState, el.HAVE_METADATA, "readyState is HAVE_METADATA");
     37  // Load [2.4, 3.968344). 2.4 as it's the first keyframe after 2s and
     38  // 3.968344 as the last frame ends after 4s.
     39  await fetchAndLoad(videosb, "bipbop/bipbop_video", range(1, 8), ".m4s");
     40  is(el.readyState, el.HAVE_METADATA, "readyState is HAVE_METADATA");
     41  // test that appendWindowEnd did its job.
     42  ok(el.buffered.start(0) >= 2, "no data can be found prior appendWindowStart");
     43  ok(el.buffered.end(el.buffered.length - 1) <= 4, "no data can be found beyond appendWindowEnd");
     44  el.play();
     45  await once(el, "play");
     46  videosb.appendWindowStart = 0;
     47  p = once(el, "playing");
     48  await fetchAndLoad(videosb, "bipbop/bipbop_video", range(1, 8), ".m4s");
     49  await p;
     50  ok(true, "playing");
     51  SimpleTest.finish();
     52 });
     53 
     54 </script>
     55 </pre>
     56 </body>
     57 </html>