tor-browser

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

mediasource-buffered-seek.html (2713B)


      1 <!DOCTYPE html>
      2 <html>
      3    <head>
      4        <title>Test MediaSource behavior when a seek is requested to a buffered position.</title>
      5        <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
      6        <link rel="author" title="Alicia Boya GarcĂ­a" href="mailto:aboya@igalia.com"/>
      7        <script src="/resources/testharness.js"></script>
      8        <script src="/resources/testharnessreport.js"></script>
      9        <script src="mediasource-util.js"></script>
     10    </head>
     11    <body>
     12        <div id="log"></div>
     13        <script>
     14          mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
     15          {
     16              mediaElement.play();
     17 
     18              var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init);
     19              var firstSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.media[0]);
     20 
     21              // Append the initialization segment to trigger a transition to HAVE_METADATA.
     22              test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer');
     23              test.expectEvent(mediaElement, 'loadedmetadata', 'Reached HAVE_METADATA');
     24              sourceBuffer.appendBuffer(initSegment);
     25 
     26              test.waitForExpectedEvents(function()
     27              {
     28                  assert_false(mediaElement.seeking, 'mediaElement is not seeking');
     29                  assert_equals(mediaElement.readyState, mediaElement.HAVE_METADATA, 'Still in HAVE_METADATA');
     30 
     31                  test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer');
     32                  sourceBuffer.appendBuffer(firstSegment);
     33                  test.expectEvent(mediaElement, 'playing', 'mediaElement playing');
     34              });
     35 
     36              test.waitForExpectedEvents(function()
     37              {
     38                  assert_greater_than(mediaElement.readyState, mediaElement.HAVE_METADATA, 'readyState > HAVE_METADATA');
     39 
     40                  // Seek to a position we know it's buffered by now.
     41                  mediaElement.currentTime = Math.max(segmentInfo.media[0].timev, segmentInfo.media[0].timea) / 2;
     42 
     43                  assert_true(mediaElement.seeking, 'mediaElement is seeking');
     44 
     45                  test.expectEvent(mediaElement, 'seeking', 'mediaElement seeking');
     46                  test.expectEvent(mediaElement, 'seeked', 'mediaElement finished seek');
     47              });
     48 
     49              test.waitForExpectedEvents(function()
     50              {
     51                  assert_greater_than(mediaElement.readyState, mediaElement.HAVE_METADATA, 'readyState > HAVE_METADATA');
     52                  test.done();
     53              });
     54 
     55          }, 'Test seeking to a buffered location.');
     56        </script>
     57    </body>
     58 </html>