tor-browser

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

mediasource-sourcebuffer-trackdefaults.html (3993B)


      1 <!DOCTYPE html>
      2 <!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
      3 <meta charset="utf-8">
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="mediasource-util.js"></script>
      7 <script>
      8    function sourceBufferTrackDefaultsTest(callback, description)
      9    {
     10        mediasource_test(function(test, mediaElement, mediaSource)
     11        {
     12            var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE);
     13            assert_array_equals(sourceBuffer.trackDefaults, [], "Empty initial SourceBuffer.trackDefaults");
     14            callback(test, mediaElement, mediaSource, sourceBuffer);
     15        }, description);
     16    };
     17 
     18    sourceBufferTrackDefaultsTest(function(test, mediaElement, mediaSource, sourceBuffer)
     19    {
     20        var emptyList = new TrackDefaultList([]);
     21        assert_not_equals(sourceBuffer.trackDefaults, emptyList, "Initial trackDefaults object differs from new empty list");
     22 
     23        sourceBuffer.trackDefaults = emptyList;
     24 
     25        assert_array_equals(sourceBuffer.trackDefaults, [], "Round-tripped empty trackDefaults");
     26        assert_equals(sourceBuffer.trackDefaults, emptyList, "Round-tripped the empty TrackDefaultList object");
     27        test.done();
     28    }, "Test round-trip of empty SourceBuffer.trackDefaults");
     29 
     30    sourceBufferTrackDefaultsTest(function(test, mediaElement, mediaSource, sourceBuffer)
     31    {
     32        var trackDefault = new TrackDefault("audio", "en-US", "audio label", ["main"], "1");
     33        var trackDefaults = new TrackDefaultList([ trackDefault ]);
     34 
     35        sourceBuffer.trackDefaults = trackDefaults;
     36 
     37        assert_array_equals(sourceBuffer.trackDefaults, trackDefaults, "Round-tripped non-empty trackDefaults");
     38        assert_equals(sourceBuffer.trackDefaults.length, 1, "Confirmed non-empty trackDefaults");
     39        assert_equals(sourceBuffer.trackDefaults, trackDefaults, "Round-tripped the non-empty TrackDefaultList object");
     40        test.done();
     41    }, "Test round-trip of non-empty SourceBuffer.trackDefaults");
     42 
     43    sourceBufferTrackDefaultsTest(function(test, mediaElement, mediaSource, sourceBuffer)
     44    {
     45        mediaSource.removeSourceBuffer(sourceBuffer);
     46        assert_throws_dom("InvalidStateError",
     47                          function() { sourceBuffer.trackDefaults = new TrackDefaultList([]); },
     48                          "Exception thrown when setting trackDefaults on SourceBuffer that is removed from MediaSource");
     49        test.done();
     50    }, "Test setting trackDefaults on an already-removed SourceBuffer");
     51 
     52    mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
     53    {
     54        assert_array_equals(sourceBuffer.trackDefaults, [], "Empty initial SourceBuffer.trackDefaults");
     55        test.expectEvent(sourceBuffer, "updateend", "Append ended");
     56        sourceBuffer.appendBuffer(mediaData);
     57        assert_true(sourceBuffer.updating, "SourceBuffer is updating");
     58 
     59        assert_throws_dom("InvalidStateError",
     60                          function() { sourceBuffer.trackDefaults = new TrackDefaultList([]); },
     61                          "Exception thrown when setting trackDefaults on SourceBuffer that is updating");
     62 
     63        test.waitForExpectedEvents(function()
     64        {
     65            assert_false(sourceBuffer.updating, "SourceBuffer is not updating");
     66            sourceBuffer.trackDefaults = new TrackDefaultList([]);
     67            test.done();
     68        });
     69    }, "Test setting trackDefaults on a SourceBuffer that is updating");
     70 
     71    sourceBufferTrackDefaultsTest(function(test, mediaElement, mediaSource, sourceBuffer)
     72    {
     73        assert_throws_js(TypeError,
     74            function() { sourceBuffer.trackDefaults = null; },
     75            "null should be disallowed by trackDefaults setter");
     76        test.done();
     77    }, "Test setting null SourceBuffer.trackDefaults");
     78 </script>