Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(295)

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-addsourcebuffer.html

Issue 2226443002: Support multiple media tracks in MSE / ChunkDemuxer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed integer overflow Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <script src="/w3c/resources/testharness.js"></script> 4 <script src="/w3c/resources/testharness.js"></script>
5 <script src="/w3c/resources/testharnessreport.js"></script> 5 <script src="/w3c/resources/testharnessreport.js"></script>
6 <script src="mediasource-util.js"></script> 6 <script src="mediasource-util.js"></script>
7 7
8 <link rel='stylesheet' href='/w3c/resources/testharness.css'> 8 <link rel='stylesheet' href='/w3c/resources/testharness.css'>
9 </head> 9 </head>
10 <body> 10 <body>
(...skipping 21 matching lines...) Expand all
32 test.done(); 32 test.done();
33 }, "Test addSourceBuffer() with empty type"); 33 }, "Test addSourceBuffer() with empty type");
34 34
35 mediasource_test(function(test, mediaElement, mediaSource) 35 mediasource_test(function(test, mediaElement, mediaSource)
36 { 36 {
37 assert_throws("NotSupportedError", 37 assert_throws("NotSupportedError",
38 function() { mediaSource.addSourceBuffer(null); }, 38 function() { mediaSource.addSourceBuffer(null); },
39 "addSourceBuffer() threw an exception when passed null ."); 39 "addSourceBuffer() threw an exception when passed null .");
40 test.done(); 40 test.done();
41 }, "Test addSourceBuffer() with null"); 41 }, "Test addSourceBuffer() with null");
42 42
43 mediasource_test(function(test, mediaElement, mediaSource) 43 mediasource_test(function(test, mediaElement, mediaSource)
44 { 44 {
45 assert_throws("NotSupportedError", 45 assert_throws("NotSupportedError",
46 function() { mediaSource.addSourceBuffer("invalidType" ); }, 46 function() { mediaSource.addSourceBuffer("invalidType" ); },
47 "addSourceBuffer() threw an exception for an unsupport ed type."); 47 "addSourceBuffer() threw an exception for an unsupport ed type.");
48 test.done(); 48 test.done();
49 }, "Test addSourceBuffer() with unsupported type"); 49 }, "Test addSourceBuffer() with unsupported type");
50 50
51 mediasource_test(function(test, mediaElement, mediaSource) 51 mediasource_test(function(test, mediaElement, mediaSource)
52 { 52 {
(...skipping 30 matching lines...) Expand all
83 var mimetype = MediaSourceUtil.VIDEO_ONLY_TYPE; 83 var mimetype = MediaSourceUtil.VIDEO_ONLY_TYPE;
84 84
85 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported"); 85 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported");
86 86
87 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); 87 var sourceBuffer = mediaSource.addSourceBuffer(mimetype);
88 assert_true(sourceBuffer != null, "New SourceBuffer returned"); 88 assert_true(sourceBuffer != null, "New SourceBuffer returned");
89 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB uffer is in mediaSource.sourceBuffers"); 89 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB uffer is in mediaSource.sourceBuffers");
90 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu ffer is not in mediaSource.activeSourceBuffers"); 90 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu ffer is not in mediaSource.activeSourceBuffers");
91 test.done(); 91 test.done();
92 }, "Test addSourceBuffer() video only"); 92 }, "Test addSourceBuffer() video only");
93 93
94 mediasource_test(function(test, mediaElement, mediaSource) 94 mediasource_test(function(test, mediaElement, mediaSource)
95 { 95 {
96 var mimetype = MediaSourceUtil.AUDIO_ONLY_TYPE; 96 var mimetype = MediaSourceUtil.AUDIO_ONLY_TYPE;
97 97
98 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported"); 98 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported");
99 99
100 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); 100 var sourceBuffer = mediaSource.addSourceBuffer(mimetype);
101 assert_true(sourceBuffer != null, "New SourceBuffer returned"); 101 assert_true(sourceBuffer != null, "New SourceBuffer returned");
102 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB uffer is in mediaSource.sourceBuffers"); 102 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB uffer is in mediaSource.sourceBuffers");
103 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu ffer is not in mediaSource.activeSourceBuffers"); 103 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu ffer is not in mediaSource.activeSourceBuffers");
(...skipping 23 matching lines...) Expand all
127 127
128 var sourceBufferA = mediaSource.addSourceBuffer(videoMimetype); 128 var sourceBufferA = mediaSource.addSourceBuffer(videoMimetype);
129 var sourceBufferB = mediaSource.addSourceBuffer(audioMimetype); 129 var sourceBufferB = mediaSource.addSourceBuffer(audioMimetype);
130 assert_equals(mediaSource.sourceBuffers[0], sourceBufferA, "source BufferA is in mediaSource.sourceBuffers"); 130 assert_equals(mediaSource.sourceBuffers[0], sourceBufferA, "source BufferA is in mediaSource.sourceBuffers");
131 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu fferA is not in mediaSource.activeSourceBuffers"); 131 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu fferA is not in mediaSource.activeSourceBuffers");
132 assert_equals(mediaSource.sourceBuffers[1], sourceBufferB, "source BufferB is in mediaSource.sourceBuffers"); 132 assert_equals(mediaSource.sourceBuffers[1], sourceBufferB, "source BufferB is in mediaSource.sourceBuffers");
133 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu fferB is not in mediaSource.activeSourceBuffers"); 133 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu fferB is not in mediaSource.activeSourceBuffers");
134 test.done(); 134 test.done();
135 }, "Test addSourceBuffer() with AAC and H.264 in separate SourceBuffer s"); 135 }, "Test addSourceBuffer() with AAC and H.264 in separate SourceBuffer s");
136 136
137 mediasource_test(function(test, mediaElement, mediaSource) 137 mediasource_testafterdataloaded(function(test, mediaElement, mediaSour ce, segmentInfo, sourceBuffer, mediaData)
138 { 138 {
139 var reachedLimit = false; 139 test.expectEvent(sourceBuffer, "updateend");
140 sourceBuffer.appendBuffer(mediaData);
141 test.waitForExpectedEvents(function()
142 {
143 assert_throws({name: "QuotaExceededError"},
144 function() { mediaSource.addSourceBuffer(MediaSourceUtil.A UDIO_VIDEO_TYPE); },
145 "addSourceBuffer must throw an exception if the MediaSourc e has already received init segments for all sourcebuffers added at the time");
146 test.done();
147 });
148 }, "Test addSourceBuffer() throws QuotaExceededError after MediaSource has completed init.");
140 149
141 // The 20 here is an arbitrary upper limit to make sure the test te rminates. This test 150 mediasource_testafterdataloaded(function(test, mediaElement, mediaSour ce, segmentInfo, sourceBuffer, mediaData)
142 // assumes that implementations won't support more than 20 SourceBu ffers simultaneously. 151 {
143 for (var i = 0; i < 20; ++i) { 152 var initSegment = MediaSourceUtil.extractSegmentData(mediaData, se gmentInfo.init);
144 try { 153 test.expectEvent(sourceBuffer, "updateend");
145 mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYP E); 154 // Append incomplete init segment to the first SourceBuffer.
146 } catch(e) { 155 sourceBuffer.appendBuffer(initSegment.slice(0, initSegment.length - 1));
147 assert_equals(e.name, "QuotaExceededError"); 156 test.waitForExpectedEvents(function()
148 reachedLimit = true; 157 {
149 break; 158 // We have not added a full init segment for the first SourceB uffer yet, so MediaSource init is not yet
150 } 159 // finished and we should be able to add/remove one more Sourc eBuffer.
151 } 160 var sourceBuffer2 = mediaSource.addSourceBuffer(MediaSourceUti l.AUDIO_VIDEO_TYPE);
152 assert_true(reachedLimit, "Reached SourceBuffer limit."); 161 mediaSource.removeSourceBuffer(sourceBuffer2);
153 test.done(); 162
154 }, "Test addSourceBuffer() QuotaExceededError."); 163 // Now append the rest of the init segment, this should comple te the initialization of the MediaSource.
164 test.expectEvent(sourceBuffer, "updateend");
165 test.expectEvent(mediaElement, "loadedmetadata", "mediaElement metadata.");
166 sourceBuffer.appendBuffer(initSegment.slice(initSegment.length - 1));
167 });
168
169 test.waitForExpectedEvents(function()
170 {
171 // MediaSource is fully initialized now, so adding new SourceB uffers is no longer possible.
172 assert_equals(mediaElement.readyState, HTMLMediaElement.HAVE_M ETADATA);
173 assert_throws({name: "QuotaExceededError"},
174 function() { mediaSource.addSourceBuffer(MediaSourceUtil.A UDIO_VIDEO_TYPE); },
175 "addSourceBuffer must throw an exception if the media elem ent has already reached HAVE_METADATA");
176 test.done();
177 });
178 }, "Test addSourceBuffer() succeeds while incomplete init segment is a ppended, fails after MediaSource init completed.");
155 </script> 179 </script>
156 </body> 180 </body>
157 </html> 181 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698