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

Side by Side Diff: LayoutTests/http/tests/media/media-source/mediasource-buffered.html

Issue 419673007: Adding more MSE tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixing CR comments Created 6 years, 4 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 <link rel="stylesheet" href="/w3c/resources/testharness.css"> 7 <link rel="stylesheet" href="/w3c/resources/testharness.css">
8 </head> 8 </head>
9 <body> 9 <body>
10 <div id="log"></div> 10 <div id="log"></div>
11 <script> 11 <script>
12 var subType = MediaSourceUtil.getSubType(MediaSourceUtil.AUDIO_ONLY_ TYPE); 12 var subType = MediaSourceUtil.getSubType(MediaSourceUtil.AUDIO_ONLY_ TYPE);
13 13
14 var manifestFilenameA = subType + "/test-a-128k-44100Hz-1ch-manifest .json"; 14 var manifestFilenameA = subType + '/test-a-128k-44100Hz-1ch-manifest .json';
15 var manifestFilenameB = subType + "/test-v-128k-320x240-30fps-10kfr- manifest.json"; 15 var manifestFilenameB = subType + '/test-v-128k-320x240-30fps-10kfr- manifest.json';
16 16
17 var expectationsA = { 17 var expectationsA = {
18 webm: "{ [0.000, 2.022) }", 18 webm: '{ [0.000, 2.022) }',
19 mp4: "{ [0.000, 2.043) }", 19 mp4: '{ [0.000, 2.043) }',
20 }; 20 };
21 21
22 var expectationsB = { 22 var expectationsB = {
23 webm: "{ [0.000, 2.000) }", 23 webm: '{ [0.000, 2.000) }',
24 mp4: "{ [0.000, 2.000) }", 24 mp4: '{ [0.000, 2.000) }',
25 }; 25 };
26 26
27 function mediaSourceDemuxedTest(callback, description) 27 function mediaSourceDemuxedTest(callback, description)
28 { 28 {
29 mediasource_test(function(test, mediaElement, mediaSource) 29 mediasource_test(function(test, mediaElement, mediaSource)
30 { 30 {
31 mediaElement.pause(); 31 mediaElement.pause();
32 test.failOnEvent(mediaElement, 'error'); 32 test.failOnEvent(mediaElement, 'error');
33 test.endOnEvent(mediaElement, 'ended'); 33 test.endOnEvent(mediaElement, 'ended');
34 34
35 MediaSourceUtil.fetchManifestAndData(test, manifestFilenameA , function(typeA, dataA) 35 MediaSourceUtil.fetchManifestAndData(test, manifestFilenameA , function(typeA, dataA)
36 { 36 {
37 MediaSourceUtil.fetchManifestAndData(test, manifestFilen ameB, function(typeB, dataB) 37 MediaSourceUtil.fetchManifestAndData(test, manifestFilen ameB, function(typeB, dataB)
38 { 38 {
39 mediaSource.addSourceBuffer(typeA); 39 mediaSource.addSourceBuffer(typeA);
40 mediaSource.addSourceBuffer(typeB); 40 mediaSource.addSourceBuffer(typeB);
41 assert_equals(mediaSource.activeSourceBuffers.length , 2); 41 assert_equals(mediaSource.activeSourceBuffers.length , 2);
42 42
43 callback(test, mediaElement, mediaSource, dataA, dat aB); 43 callback(test, mediaElement, mediaSource, dataA, dat aB);
44 }); 44 });
45 }); 45 });
46 }, description); 46 }, description);
47 }; 47 };
48 48
49 function appendData(test, mediaSource, dataA, dataB, callback) 49 function appendData(test, mediaSource, dataA, dataB, callback)
50 { 50 {
51 var sourceBufferA = mediaSource.activeSourceBuffers[0]; 51 var sourceBufferA = mediaSource.activeSourceBuffers[0];
52 var sourceBufferB = mediaSource.activeSourceBuffers[1]; 52 var sourceBufferB = mediaSource.activeSourceBuffers[1];
53 53
54 test.expectEvent(sourceBufferA, "update"); 54 test.expectEvent(sourceBufferA, 'update');
55 test.expectEvent(sourceBufferA, "updateend"); 55 test.expectEvent(sourceBufferA, 'updateend');
56 sourceBufferA.appendBuffer(dataA); 56 sourceBufferA.appendBuffer(dataA);
57 57
58 test.expectEvent(sourceBufferB, "update"); 58 test.expectEvent(sourceBufferB, 'update');
59 test.expectEvent(sourceBufferB, "updateend"); 59 test.expectEvent(sourceBufferB, 'updateend');
60 sourceBufferB.appendBuffer(dataB); 60 sourceBufferB.appendBuffer(dataB);
61 61
62 test.waitForExpectedEvents(function() 62 test.waitForExpectedEvents(function()
63 { 63 {
64 callback(); 64 callback();
65 }); 65 });
66 } 66 }
67 67
68 mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dat aA, dataB) { 68 mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dat aA, dataB) {
69 appendData(test, mediaSource, dataA, dataB, function() 69 appendData(test, mediaSource, dataA, dataB, function()
70 { 70 {
71 assertBufferedEquals(mediaSource.activeSourceBuffers[0], exp ectationsA[subType], "mediaSource.activeSourceBuffers[0]"); 71 assertBufferedEquals(mediaSource.activeSourceBuffers[0], exp ectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
72 assertBufferedEquals(mediaSource.activeSourceBuffers[1], exp ectationsB[subType], "mediaSource.activeSourceBuffers[1]"); 72 assertBufferedEquals(mediaSource.activeSourceBuffers[1], exp ectationsB[subType], 'mediaSource.activeSourceBuffers[1]');
73 assertBufferedEquals(mediaElement, expectationsB[subType], " mediaElement.buffered"); 73 assertBufferedEquals(mediaElement, expectationsB[subType], ' mediaElement.buffered');
74 74
75 mediaSource.endOfStream(); 75 mediaSource.endOfStream();
76 76
77 assertBufferedEquals(mediaSource.activeSourceBuffers[0], exp ectationsA[subType], "mediaSource.activeSourceBuffers[0]"); 77 assertBufferedEquals(mediaSource.activeSourceBuffers[0], exp ectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
78 assertBufferedEquals(mediaSource.activeSourceBuffers[1], exp ectationsB[subType], "mediaSource.activeSourceBuffers[1]"); 78 assertBufferedEquals(mediaSource.activeSourceBuffers[1], exp ectationsB[subType], 'mediaSource.activeSourceBuffers[1]');
79 assertBufferedEquals(mediaElement, expectationsA[subType], " mediaElement.buffered"); 79 assertBufferedEquals(mediaElement, expectationsA[subType], ' mediaElement.buffered');
80 80
81 test.done(); 81 test.done();
82 }); 82 });
83 }, "Demuxed content with different lengths"); 83 }, 'Demuxed content with different lengths');
84 84
85 mediasource_test(function(test, mediaElement, mediaSource) 85 mediasource_test(function(test, mediaElement, mediaSource)
86 { 86 {
87 mediaElement.pause(); 87 mediaElement.pause();
88 test.failOnEvent(mediaElement, 'error'); 88 test.failOnEvent(mediaElement, 'error');
89 test.endOnEvent(mediaElement, 'ended'); 89 test.endOnEvent(mediaElement, 'ended');
90 90
91 MediaSourceUtil.fetchManifestAndData(test, subType + "/test-av-3 84k-44100Hz-1ch-320x240-30fps-10kfr-manifest.json", function(type, data) 91 MediaSourceUtil.fetchManifestAndData(test, subType + '/test-av-3 84k-44100Hz-1ch-320x240-30fps-10kfr-manifest.json', function(type, data)
92 { 92 {
93 var sourceBuffer = mediaSource.addSourceBuffer(type); 93 var sourceBuffer = mediaSource.addSourceBuffer(type);
94 test.expectEvent(sourceBuffer, "update"); 94 test.expectEvent(sourceBuffer, 'update');
95 test.expectEvent(sourceBuffer, "updateend"); 95 test.expectEvent(sourceBuffer, 'updateend');
96 sourceBuffer.appendBuffer(data); 96 sourceBuffer.appendBuffer(data);
97 97
98 test.waitForExpectedEvents(function() 98 test.waitForExpectedEvents(function()
99 { 99 {
100 var expectationsAV = { 100 var expectationsAV = {
101 webm: ["{ [0.000, 2.003) }", "{ [0.000, 2.022) }"], 101 webm: ['{ [0.000, 2.003) }', '{ [0.000, 2.022) }'],
102 mp4: ["{ [0.000, 2.000) }", "{ [0.000, 2.043) }"], 102 mp4: ['{ [0.000, 2.000) }', '{ [0.000, 2.043) }'],
103 }; 103 };
104 104
105 var expectedBeforeEndOfStream = expectationsAV[subType][ 0]; 105 var expectedBeforeEndOfStream = expectationsAV[subType][ 0];
106 var expectedAfterEndOfStream = expectationsAV[subType][1 ]; 106 var expectedAfterEndOfStream = expectationsAV[subType][1 ];
107 107
108 assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectedBeforeEndOfStream, "mediaSource.activeSourceBuffers[0]"); 108 assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectedBeforeEndOfStream, 'mediaSource.activeSourceBuffers[0]');
109 assertBufferedEquals(mediaElement, expectedBeforeEndOfSt ream, "mediaElement.buffered"); 109 assertBufferedEquals(mediaElement, expectedBeforeEndOfSt ream, 'mediaElement.buffered');
110 110
111 mediaSource.endOfStream(); 111 mediaSource.endOfStream();
112 112
113 assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectedAfterEndOfStream, "mediaSource.activeSourceBuffers[0]"); 113 assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectedAfterEndOfStream, 'mediaSource.activeSourceBuffers[0]');
114 assertBufferedEquals(mediaElement, expectedAfterEndOfStr eam, "mediaElement.buffered"); 114 assertBufferedEquals(mediaElement, expectedAfterEndOfStr eam, 'mediaElement.buffered');
115 115
116 test.done(); 116 test.done();
117 }); 117 });
118 }); 118 });
119 }, "Muxed tracks with different lengths"); 119 }, 'Muxed tracks with different lengths');
120 120
121 121
122 mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dat aA, dataB) { 122 mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dat aA, dataB) {
123 appendData(test, mediaSource, dataA, dataB.subarray(0, 318), fun ction() 123 appendData(test, mediaSource, dataA, dataB.subarray(0, 318), fun ction()
124 { 124 {
125 assertBufferedEquals(mediaSource.activeSourceBuffers[0], exp ectationsA[subType], "mediaSource.activeSourceBuffers[0]"); 125 assertBufferedEquals(mediaSource.activeSourceBuffers[0], exp ectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
126 assertBufferedEquals(mediaSource.activeSourceBuffers[1], "{ }", "mediaSource.activeSourceBuffers[1]"); 126 assertBufferedEquals(mediaSource.activeSourceBuffers[1], '{ }', 'mediaSource.activeSourceBuffers[1]');
127 assertBufferedEquals(mediaElement, "{ }", "mediaElement.buff ered"); 127 assertBufferedEquals(mediaElement, '{ }', 'mediaElement.buff ered');
128 128
129 mediaSource.endOfStream(); 129 mediaSource.endOfStream();
130 130
131 assertBufferedEquals(mediaSource.activeSourceBuffers[0], exp ectationsA[subType], "mediaSource.activeSourceBuffers[0]"); 131 assertBufferedEquals(mediaSource.activeSourceBuffers[0], exp ectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
132 assertBufferedEquals(mediaSource.activeSourceBuffers[1], "{ }", "mediaSource.activeSourceBuffers[1]"); 132 assertBufferedEquals(mediaSource.activeSourceBuffers[1], '{ }', 'mediaSource.activeSourceBuffers[1]');
133 assertBufferedEquals(mediaElement, "{ }", "mediaElement.buff ered"); 133 assertBufferedEquals(mediaElement, '{ }', 'mediaElement.buff ered');
134 134
135 test.done(); 135 test.done();
136 }); 136 });
137 }, "Demuxed content with an empty buffered range on one SourceBuffer "); 137 }, 'Demuxed content with an empty buffered range on one SourceBuffer ');
138 138
139 mediasource_test(function(test, mediaElement, mediaSource) 139 mediasource_test(function(test, mediaElement, mediaSource)
140 { 140 {
141 mediaElement.pause(); 141 mediaElement.pause();
142 test.failOnEvent(mediaElement, 'error'); 142 test.failOnEvent(mediaElement, 'error');
143 test.endOnEvent(mediaElement, 'ended'); 143 test.endOnEvent(mediaElement, 'ended');
144 144
145 MediaSourceUtil.fetchManifestAndData(test, subType + "/test-av-3 84k-44100Hz-1ch-320x240-30fps-10kfr-manifest.json", function(type, data) 145 MediaSourceUtil.fetchManifestAndData(test, subType + '/test-av-3 84k-44100Hz-1ch-320x240-30fps-10kfr-manifest.json', function(type, data)
146 { 146 {
147 var sourceBuffer = mediaSource.addSourceBuffer(type); 147 var sourceBuffer = mediaSource.addSourceBuffer(type);
148 test.expectEvent(sourceBuffer, "update"); 148 test.expectEvent(sourceBuffer, 'update');
149 test.expectEvent(sourceBuffer, "updateend"); 149 test.expectEvent(sourceBuffer, 'updateend');
150 sourceBuffer.appendBuffer(data.subarray(0, 4052)); 150 sourceBuffer.appendBuffer(data.subarray(0, 4052));
151 151
152 test.waitForExpectedEvents(function() 152 test.waitForExpectedEvents(function()
153 { 153 {
154 assertBufferedEquals(mediaSource.activeSourceBuffers[0], "{ }", "mediaSource.activeSourceBuffers[0]"); 154 assertBufferedEquals(mediaSource.activeSourceBuffers[0], '{ }', 'mediaSource.activeSourceBuffers[0]');
155 assertBufferedEquals(mediaElement, "{ }", "mediaElement. buffered"); 155 assertBufferedEquals(mediaElement, '{ }', 'mediaElement. buffered');
156 156
157 mediaSource.endOfStream(); 157 mediaSource.endOfStream();
158 158
159 assertBufferedEquals(mediaSource.activeSourceBuffers[0], "{ }", "mediaSource.activeSourceBuffers[0]"); 159 assertBufferedEquals(mediaSource.activeSourceBuffers[0], '{ }', 'mediaSource.activeSourceBuffers[0]');
160 assertBufferedEquals(mediaElement, "{ }", "mediaElement. buffered"); 160 assertBufferedEquals(mediaElement, '{ }', 'mediaElement. buffered');
161 161
162 test.done(); 162 test.done();
163 }); 163 });
164 }); 164 });
165 }, "Muxed content empty buffered ranges."); 165 }, 'Muxed content empty buffered ranges.');
166 166
167 mediasource_test(function(test, mediaElement, mediaSource) 167 mediasource_test(function(test, mediaElement, mediaSource)
168 { 168 {
169 mediaElement.pause(); 169 mediaElement.pause();
170 test.failOnEvent(mediaElement, 'error'); 170 test.failOnEvent(mediaElement, 'error');
171 test.endOnEvent(mediaElement, 'ended'); 171 test.endOnEvent(mediaElement, 'ended');
172 172
173 var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.A UDIO_ONLY_TYPE); 173 var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.A UDIO_ONLY_TYPE);
174 174
175 // FIXME: verify activeSourceBuffers is empty until init segment with at least 175 // FIXME: verify activeSourceBuffers is empty until init segment with at least
176 // one active track is appended. 176 // one active track is appended.
177 assertBufferedEquals(mediaSource.sourceBuffers[0], "{ }", "media Source.sourceBuffers[0]"); 177 assertBufferedEquals(mediaSource.sourceBuffers[0], '{ }', 'media Source.sourceBuffers[0]');
178 assertBufferedEquals(mediaElement, "{ }", "mediaElement.buffered "); 178 assertBufferedEquals(mediaElement, '{ }', 'mediaElement.buffered ');
179 test.done(); 179 test.done();
180 180
181 }, "Get buffered range when sourcebuffer is empty."); 181 }, 'Get buffered range when sourcebuffer is empty.');
182 182
183 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData) 183 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData)
184 { 184 {
185 var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init); 185 var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init);
186 186
187 test.expectEvent(sourceBuffer, "updateend", "initSegment append ended."); 187 test.expectEvent(sourceBuffer, 'updateend', 'initSegment append ended.');
188 sourceBuffer.appendBuffer(initSegment); 188 sourceBuffer.appendBuffer(initSegment);
189 test.waitForExpectedEvents(function() 189 test.waitForExpectedEvents(function()
190 { 190 {
191 assertBufferedEquals(mediaSource.sourceBuffers[0], "{ }", "m ediaSource.sourceBuffers[0]"); 191 assertBufferedEquals(mediaSource.sourceBuffers[0], '{ }', 'm ediaSource.sourceBuffers[0]');
192 assertBufferedEquals(mediaSource.activeSourceBuffers[0], "{ }", "mediaSource.activeSourceBuffers[0]"); 192 assertBufferedEquals(mediaSource.activeSourceBuffers[0], '{ }', 'mediaSource.activeSourceBuffers[0]');
193 assertBufferedEquals(mediaElement, "{ }", "mediaElement.buff ered"); 193 assertBufferedEquals(mediaElement, '{ }', 'mediaElement.buff ered');
194 test.done(); 194 test.done();
195 }); 195 });
196 196
197 }, "Get buffered range when only initsegment is appended."); 197 }, 'Get buffered range when only initsegment is appended.');
198
199 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData)
200 {
201 test.expectEvent(mediaSource.sourceBuffers, 'removesourcebuffer' , 'SourceBuffer removed.');
202 mediaSource.removeSourceBuffer(sourceBuffer);
203
204 test.waitForExpectedEvents(function()
205 {
206 assert_throws('InvalidStateError',
207 function() { sourceBuffer.buffered; },
208 'get sourceBuffer.buffered throws an exception for Inval idStateError.');
209 test.done();
210 });
211 }, 'Get buffered range after removing sourcebuffer.');
198 </script> 212 </script>
199 </body> 213 </body>
200 </html> 214 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698