tor-browser

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

test_LiveSeekable.html (3202B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>MSE: live seekable range</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, v) => {
     16  await once(ms, "sourceopen");
     17  const sb = ms.addSourceBuffer("video/webm");
     18 
     19  // Load data with a +2 offset so that we can distinguish buffered range start
     20  // and seekable range start.
     21  sb.timestampOffset = 2;
     22  const p = once(v, "loadedmetadata");
     23  await fetchAndLoad(sb, "seek", [""], ".webm");
     24  await p;
     25  ms.duration = Infinity;
     26  sb.abort();
     27  is(sb.buffered.length, 1, "continuous buffered range");
     28  is(sb.buffered.start(0), 2, "buffered range start at timestamp offset");
     29  is(sb.buffered.end(0), 6.001, "buffered range end at original duration + timestamp offset");
     30  is(v.seekable.length, 1, "continuous seekable range");
     31  is(v.seekable.start(0), 0, "seekable range start at 0");
     32  is(v.seekable.end(0), sb.buffered.end(0), "seekable range end at buffered end");
     33 
     34  // LiveSeekableRange.start < buffered.start
     35  ms.setLiveSeekableRange(1, 5);
     36  is(v.seekable.length, 1, "continuous seekable range");
     37  is(v.seekable.start(0), 1, "seekable range start at live range start");
     38  is(v.seekable.end(0), sb.buffered.end(0), "seekable range end at buffered end");
     39 
     40  ms.clearLiveSeekableRange();
     41  is(v.seekable.length, 1, "continuous seekable range");
     42  is(v.seekable.start(0), 0, "seekable range start at 0");
     43  is(v.seekable.end(0), sb.buffered.end(0), "seekable range end at buffered end");
     44 
     45  // LiveSeekableRange.end > buffered.end
     46  ms.setLiveSeekableRange(1, 8);
     47  is(v.seekable.start(0), 1, "seekable range start at live range start");
     48  is(v.seekable.end(0), 8, "seekable range end at live range end");
     49 
     50  // LiveSeekableRange.start > buffered.start
     51  // LiveSeekableRange.end < buffered.end
     52  ms.setLiveSeekableRange(3, 5);
     53  is(v.seekable.start(0), sb.buffered.start(0), "seekable range start at buffered start");
     54  is(v.seekable.end(0), sb.buffered.end(0), "seekable range end at live range end");
     55 
     56  // LiveSeekableRange.start > buffered.end
     57  ms.setLiveSeekableRange(8, 10);
     58  is(v.seekable.start(0), sb.buffered.start(0), "seekable range start at buffered start");
     59  is(v.seekable.end(0), 10, "seekable range end at live range end");
     60 
     61  // LiveSeekableRange.end < buffered.start
     62  ms.setLiveSeekableRange(0, 2);
     63  is(v.seekable.start(0), 0, "seekable range start at live range start");
     64  is(v.seekable.end(0), sb.buffered.end(0), "seekable range end at buffered end");
     65 
     66  must_throw(() => ms.setLiveSeekableRange(2, 0),
     67             "must thow if start > end",
     68             "TypeError");
     69 
     70  must_throw(() => ms.setLiveSeekableRange(2, 0),
     71             "must thow if start > end",
     72             "TypeError");
     73 
     74  ms.setLiveSeekableRange(0, 1e300);
     75  is(v.seekable.start(0), 0, "seekable range start at live range start");
     76  is(v.seekable.end(0), 1e300, "seekable range end at specified time");
     77 
     78  SimpleTest.finish();
     79 });
     80 
     81 </script>
     82 </pre>
     83 </body>
     84 </html>