blob: 7f6aa2ab697784c76da466aa2ad807b5b75c7ade [file] [log] [blame]
Aaron Colwellc6841a02014-03-07 01:37:561<!DOCTYPE html>
Matt Wolenetz74803c62016-08-19 01:46:402<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
Aaron Colwellc6841a02014-03-07 01:37:563<html>
4 <head>
Aaron Colwellaa3c90b2014-08-04 17:58:375 <title>MediaSource.addSourceBuffer() test cases</title>
Aaron Colwell06f8ec22014-03-07 18:09:476 <script src="/resources/testharness.js"></script>
7 <script src="/resources/testharnessreport.js"></script>
Aaron Colwellc6841a02014-03-07 01:37:568 <script src="mediasource-util.js"></script>
Aaron Colwellc6841a02014-03-07 01:37:569 </head>
10 <body>
11 <div id="log"></div>
12 <script>
13 mediasource_test(function(test, mediaElement, mediaSource)
14 {
Aaron Colwellab0ee7b2014-09-09 21:10:3915 mediaSource.endOfStream();
16 assert_throws("InvalidStateError",
17 function() { mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); },
18 "addSourceBuffer() threw an exception when in 'ended' state.");
19 test.done();
20 }, "Test addSourceBuffer() in 'ended' state.");
21
22 mediasource_test(function(test, mediaElement, mediaSource)
23 {
Chris Cunningham2fc60fe2018-01-23 01:41:2224 assert_throws({name: "TypeError"},
Aaron Colwellc6841a02014-03-07 01:37:5625 function() { mediaSource.addSourceBuffer(""); },
26 "addSourceBuffer() threw an exception when passed an empty string.");
27 test.done();
28 }, "Test addSourceBuffer() with empty type");
29
30 mediasource_test(function(test, mediaElement, mediaSource)
31 {
wolenetzc504a872016-09-07 18:38:0332 assert_throws("NotSupportedError",
Aaron Colwellab0ee7b2014-09-09 21:10:3933 function() { mediaSource.addSourceBuffer(null); },
34 "addSourceBuffer() threw an exception when passed null.");
35 test.done();
36 }, "Test addSourceBuffer() with null");
37
38 mediasource_test(function(test, mediaElement, mediaSource)
39 {
40 assert_throws("NotSupportedError",
Aaron Colwellc6841a02014-03-07 01:37:5641 function() { mediaSource.addSourceBuffer("invalidType"); },
42 "addSourceBuffer() threw an exception for an unsupported type.");
43 test.done();
44 }, "Test addSourceBuffer() with unsupported type");
45
Aaron Colwellc6841a02014-03-07 01:37:5646 mediasource_test(function(test, mediaElement, mediaSource)
47 {
48 var mimetype = 'video/webm;codecs="vp8,vorbis"';
49
50 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported");
51
52 var sourceBuffer = mediaSource.addSourceBuffer(mimetype);
53 assert_true(sourceBuffer != null, "New SourceBuffer returned");
54 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceBuffer is in mediaSource.sourceBuffers");
Aaron Colwellcffb8af2014-05-23 22:27:1055 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is not in mediaSource.activeSourceBuffers");
Aaron Colwellc6841a02014-03-07 01:37:5656 test.done();
57 }, "Test addSourceBuffer() with Vorbis and VP8");
58
59 mediasource_test(function(test, mediaElement, mediaSource)
60 {
61 var videoMimetype = 'video/webm;codecs="vp8"';
62 var audioMimetype = 'audio/webm;codecs="vorbis"';
63
64 assert_true(MediaSource.isTypeSupported(videoMimetype), videoMimetype + " is supported");
65 assert_true(MediaSource.isTypeSupported(audioMimetype), audioMimetype + " is supported");
66
67 var sourceBufferA = mediaSource.addSourceBuffer(videoMimetype);
68 var sourceBufferB = mediaSource.addSourceBuffer(audioMimetype);
69 assert_equals(mediaSource.sourceBuffers[0], sourceBufferA, "sourceBufferA is in mediaSource.sourceBuffers");
Aaron Colwellcffb8af2014-05-23 22:27:1070 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBufferA is not in mediaSource.activeSourceBuffers");
Aaron Colwellc6841a02014-03-07 01:37:5671 assert_equals(mediaSource.sourceBuffers[1], sourceBufferB, "sourceBufferB is in mediaSource.sourceBuffers");
Aaron Colwellcffb8af2014-05-23 22:27:1072 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBufferB is not in mediaSource.activeSourceBuffers");
Aaron Colwellc6841a02014-03-07 01:37:5673 test.done();
74 }, "Test addSourceBuffer() with Vorbis and VP8 in separate SourceBuffers");
75
76 mediasource_test(function(test, mediaElement, mediaSource)
77 {
Aaron Colwellab0ee7b2014-09-09 21:10:3978 var mimetype = MediaSourceUtil.VIDEO_ONLY_TYPE;
79
80 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported");
81
82 var sourceBuffer = mediaSource.addSourceBuffer(mimetype);
83 assert_true(sourceBuffer != null, "New SourceBuffer returned");
84 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceBuffer is in mediaSource.sourceBuffers");
Chris Cunningham2fc60fe2018-01-23 01:41:2285 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is not in mediaSource.activeSourceBuffers");
Aaron Colwellab0ee7b2014-09-09 21:10:3986 test.done();
87 }, "Test addSourceBuffer() video only");
88
89 mediasource_test(function(test, mediaElement, mediaSource)
90 {
91 var mimetype = MediaSourceUtil.AUDIO_ONLY_TYPE;
92
93 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported");
94
95 var sourceBuffer = mediaSource.addSourceBuffer(mimetype);
96 assert_true(sourceBuffer != null, "New SourceBuffer returned");
97 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceBuffer is in mediaSource.sourceBuffers");
Chris Cunningham2fc60fe2018-01-23 01:41:2298 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is not in mediaSource.activeSourceBuffers");
Aaron Colwellab0ee7b2014-09-09 21:10:3999 test.done();
100 }, "Test addSourceBuffer() audio only");
101
102 mediasource_test(function(test, mediaElement, mediaSource)
103 {
Aaron Colwellc6841a02014-03-07 01:37:56104 var mimetype = 'video/mp4;codecs="avc1.4D4001,mp4a.40.2"';
105
106 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported");
107
108 var sourceBuffer = mediaSource.addSourceBuffer(mimetype);
109 assert_true(sourceBuffer != null, "New SourceBuffer returned");
110 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceBuffer is in mediaSource.sourceBuffers");
Aaron Colwellcffb8af2014-05-23 22:27:10111 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is not in mediaSource.activeSourceBuffers");
Aaron Colwellc6841a02014-03-07 01:37:56112 test.done();
113 }, "Test addSourceBuffer() with AAC and H.264");
114
115 mediasource_test(function(test, mediaElement, mediaSource)
116 {
117 var videoMimetype = 'video/mp4;codecs="avc1.4D4001"';
118 var audioMimetype = 'audio/mp4;codecs="mp4a.40.2"';
119
120 assert_true(MediaSource.isTypeSupported(videoMimetype), videoMimetype + " is supported");
121 assert_true(MediaSource.isTypeSupported(audioMimetype), audioMimetype + " is supported");
122
123 var sourceBufferA = mediaSource.addSourceBuffer(videoMimetype);
124 var sourceBufferB = mediaSource.addSourceBuffer(audioMimetype);
125 assert_equals(mediaSource.sourceBuffers[0], sourceBufferA, "sourceBufferA is in mediaSource.sourceBuffers");
Aaron Colwellcffb8af2014-05-23 22:27:10126 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBufferA is not in mediaSource.activeSourceBuffers");
Aaron Colwellc6841a02014-03-07 01:37:56127 assert_equals(mediaSource.sourceBuffers[1], sourceBufferB, "sourceBufferB is in mediaSource.sourceBuffers");
Aaron Colwellcffb8af2014-05-23 22:27:10128 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBufferB is not in mediaSource.activeSourceBuffers");
Aaron Colwellc6841a02014-03-07 01:37:56129 test.done();
130 }, "Test addSourceBuffer() with AAC and H.264 in separate SourceBuffers");
Aaron Colwellc6841a02014-03-07 01:37:56131 </script>
132 </body>
133</html>