blob: 0eb9d2643af2888546f1eba15286700ad38d5f44 [file] [log] [blame]
François Daoustade80c42016-06-30 07:43:591<!DOCTYPE html>
Matt Wolenetzb255ded2016-08-30 19:39:412<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
François Daoustade80c42016-06-30 07:43:593<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 Wolenetzb255ded2016-08-30 19:39:4178</script>