tor-browser

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

mediasource-timestamp-offset.html (5933B)


      1 <!DOCTYPE html>
      2 <!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
      3 <html>
      4    <head>
      5        <title>SourceBuffer.timestampOffset test cases.</title>
      6        <script src="/resources/testharness.js"></script>
      7        <script src="/resources/testharnessreport.js"></script>
      8        <script src="mediasource-util.js"></script>
      9    </head>
     10    <body>
     11        <div id="log"></div>
     12        <script>
     13          function simpleTimestampOffsetTest(value, expected, description)
     14          {
     15              mediasource_test(function(test, mediaElement, mediaSource)
     16              {
     17                  var segmentInfo = MediaSourceUtil.SEGMENT_INFO;
     18                  var sourceBuffer = mediaSource.addSourceBuffer(segmentInfo.type);
     19 
     20                  assert_equals(sourceBuffer.timestampOffset, 0,
     21                      "Initial timestampOffset of a SourceBuffer is 0");
     22 
     23                  if (expected == "TypeError")  {
     24                      assert_throws_js(TypeError,
     25                          function() { sourceBuffer.timestampOffset = value; },
     26                          "setting timestampOffset to " + description + " throws an exception.");
     27                  } else {
     28                      sourceBuffer.timestampOffset = value;
     29                      assert_equals(sourceBuffer.timestampOffset, expected);
     30                  }
     31 
     32                  test.done();
     33              }, "Test setting SourceBuffer.timestampOffset to " + description + ".");
     34          }
     35 
     36          simpleTimestampOffsetTest(10.5, 10.5, "a positive number");
     37          simpleTimestampOffsetTest(-10.4, -10.4, "a negative number");
     38          simpleTimestampOffsetTest(0, 0, "zero");
     39          simpleTimestampOffsetTest(Number.POSITIVE_INFINITY, "TypeError", "positive infinity");
     40          simpleTimestampOffsetTest(Number.NEGATIVE_INFINITY, "TypeError", "negative infinity");
     41          simpleTimestampOffsetTest(Number.NaN, "TypeError", "NaN");
     42          simpleTimestampOffsetTest(undefined, "TypeError", "undefined");
     43          simpleTimestampOffsetTest(null, 0, "null");
     44          simpleTimestampOffsetTest(false, 0, "false");
     45          simpleTimestampOffsetTest(true, 1, "true");
     46          simpleTimestampOffsetTest("10.5", 10.5, "a number string");
     47          simpleTimestampOffsetTest("", 0, "an empty string");
     48 
     49          mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
     50          {
     51              var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init);
     52              var mediaSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.media[0]);
     53 
     54              test.expectEvent(sourceBuffer, "updateend", "initSegment append ended.");
     55              sourceBuffer.appendBuffer(initSegment);
     56 
     57              test.waitForExpectedEvents(function()
     58              {
     59                  test.expectEvent(sourceBuffer, "updateend", "mediaSegment append ended.");
     60                  sourceBuffer.appendBuffer(mediaSegment);
     61              });
     62 
     63              test.waitForExpectedEvents(function()
     64              {
     65                  mediaSource.endOfStream();
     66 
     67                  assert_equals(mediaSource.readyState, "ended");
     68 
     69                  mediaSource.sourceBuffers[0].timestampOffset = 2;
     70 
     71                  assert_equals(mediaSource.readyState, "open");
     72 
     73                  test.expectEvent(mediaSource, "sourceopen", "mediaSource fired 'sourceopen' event.");
     74              });
     75 
     76              test.waitForExpectedEvents(function()
     77              {
     78                  test.done();
     79              });
     80          }, "Test setting timestampOffset in 'ended' state causes a transition to 'open'.");
     81 
     82          mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
     83          {
     84              var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init);
     85              var mediaSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.media[0]);
     86 
     87              test.expectEvent(sourceBuffer, "updateend", "initSegment append ended.");
     88              sourceBuffer.appendBuffer(initSegment);
     89              assert_equals(mediaSource.sourceBuffers[0].timestampOffset, 0, "read initial value");
     90 
     91              test.waitForExpectedEvents(function()
     92              {
     93                  test.expectEvent(sourceBuffer, "updateend", "mediaSegment append ended.");
     94                  sourceBuffer.appendBuffer(mediaSegment);
     95                  assert_equals(mediaSource.sourceBuffers[0].timestampOffset, 0,
     96                      "No change to timestampoffset after segments mode init segment append");
     97              });
     98 
     99              test.waitForExpectedEvents(function()
    100              {
    101                  assert_equals(mediaSource.sourceBuffers[0].timestampOffset, 0,
    102                      "No change to timestampoffset after segments mode media segment append");
    103                  test.done();
    104              });
    105          }, "Test getting the initial value of timestampOffset.");
    106 
    107          mediasource_test(function(test, mediaElement, mediaSource)
    108          {
    109              var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE);
    110              assert_true(sourceBuffer != null, "New SourceBuffer returned");
    111 
    112              mediaSource.removeSourceBuffer(sourceBuffer);
    113              assert_equals(mediaSource.sourceBuffers.length, 0, "MediaSource.sourceBuffers is empty");
    114              assert_equals(mediaSource.activeSourceBuffers.length, 0, "MediaSource.activesourceBuffers is empty");
    115 
    116              assert_throws_dom("InvalidStateError", function()
    117              {
    118                  sourceBuffer.timestampOffset = 10;
    119              });
    120 
    121              test.done();
    122          }, "Test setting timestampoffset after removing the sourcebuffer.");
    123        </script>
    124    </body>
    125 </html>