tor-browser

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

mediasource-sourcebufferlist.html (4600B)


      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>SourceBufferList 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 verifySourceBufferLists(mediaSource, expected)
     14          {
     15              assert_equals(mediaSource.sourceBuffers.length, expected.length, "sourceBuffers length");
     16              assert_equals(mediaSource.activeSourceBuffers.length, 0, "activeSourceBuffers length");
     17              for (var i = 0; i < expected.length; ++i) {
     18                assert_equals(mediaSource.sourceBuffers[i], expected[i], "Verifying mediaSource.sourceBuffers[" + i + "]");
     19              }
     20              assert_equals(mediaSource.sourceBuffers[expected.length], undefined,
     21                "If index is greater than or equal to the length attribute then return undefined.");
     22          }
     23 
     24          mediasource_test(function(test, mediaElement, mediaSource)
     25          {
     26              var sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VIDEO_ONLY_TYPE);
     27              verifySourceBufferLists(mediaSource, [sourceBufferA]);
     28 
     29              var sourceBufferB = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
     30              verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBufferB]);
     31              test.done();
     32          }, "Test SourceBufferList getter method");
     33 
     34          mediasource_test(function(test, mediaElement, mediaSource)
     35          {
     36              test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer", "sourceBuffers");
     37              var sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VIDEO_ONLY_TYPE);
     38              var sourceBufferB = null;
     39 
     40              test.waitForExpectedEvents(function()
     41              {
     42                  test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer", "sourceBuffers");
     43                  sourceBufferB = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
     44 
     45                  verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBufferB]);
     46              });
     47 
     48              test.waitForExpectedEvents(function()
     49              {
     50                  test.expectEvent(mediaSource.sourceBuffers, "removesourcebuffer", "sourceBuffers");
     51                  mediaSource.removeSourceBuffer(sourceBufferA);
     52 
     53                  verifySourceBufferLists(mediaSource, [sourceBufferB]);
     54 
     55                  test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer", "sourceBuffers");
     56                  sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VIDEO_ONLY_TYPE);
     57 
     58                  verifySourceBufferLists(mediaSource, [sourceBufferB, sourceBufferA]);
     59              });
     60 
     61              test.waitForExpectedEvents(function()
     62              {
     63                  test.done();
     64              });
     65          }, "Test SourceBufferList event dispatching.");
     66 
     67          mediasource_test(function(test, mediaElement, mediaSource)
     68          {
     69              test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer", "sourceBuffers");
     70              test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer", "sourceBuffers");
     71              var sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VIDEO_ONLY_TYPE);
     72              var sourceBufferB = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
     73 
     74              verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBufferB]);
     75 
     76              test.waitForExpectedEvents(function()
     77              {
     78                  verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBufferB]);
     79 
     80                  // Force the media element to close the MediaSource object.
     81                  test.expectEvent(mediaSource.sourceBuffers, "removesourcebuffer", "sourceBuffers");
     82                  test.expectEvent(mediaSource, "sourceclose", "mediaSource closing");
     83                  mediaElement.src = "";
     84              });
     85 
     86              test.waitForExpectedEvents(function()
     87              {
     88                  assert_equals(mediaSource.readyState, "closed", "mediaSource is closed.");
     89 
     90                  verifySourceBufferLists(mediaSource, []);
     91                  test.done();
     92              });
     93          }, "Test that only 1 removesourcebuffer event fires on each SourceBufferList when the MediaSource closes.");
     94 
     95        </script>
     96    </body>
     97 </html>