| François Daoust | ade80c4 | 2016-06-30 07:43:59 | [diff] [blame] | 1 | <!DOCTYPE html> | 
| Matt Wolenetz | b255ded | 2016-08-30 19:39:41 | [diff] [blame] | 2 | <!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> | 
| François Daoust | ade80c4 | 2016-06-30 07:43:59 | [diff] [blame] | 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("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("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(new TypeError(), | 
|  | 74 | function() { sourceBuffer.trackDefaults = null; }, | 
|  | 75 | "null should be disallowed by trackDefaults setter"); | 
|  | 76 | test.done(); | 
|  | 77 | }, "Test setting null SourceBuffer.trackDefaults"); | 
| Matt Wolenetz | b255ded | 2016-08-30 19:39:41 | [diff] [blame] | 78 | </script> |