Chromium Code Reviews| Index: LayoutTests/http/tests/media/media-source/mediasource-config-changes.js |
| diff --git a/LayoutTests/http/tests/media/media-source/mediasource-config-changes.js b/LayoutTests/http/tests/media/media-source/mediasource-config-changes.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d2b6623f5d2208801356d29e6cabf452d6173f92 |
| --- /dev/null |
| +++ b/LayoutTests/http/tests/media/media-source/mediasource-config-changes.js |
| @@ -0,0 +1,78 @@ |
| +function fetchManifestAndData(test, manifestFilename, callback) |
| +{ |
| + var baseURL = '/media/resources/media-source/'; |
| + var manifestURL = baseURL + manifestFilename; |
| + MediaSourceUtil.loadTextData(test, manifestURL, function(manifestText) |
| + { |
| + var manifest = JSON.parse(manifestText); |
| + |
| + assert_true(MediaSource.isTypeSupported(manifest.type), manifest.type + " is supported."); |
| + |
| + var mediaURL = baseURL + manifest.url; |
| + MediaSourceUtil.loadBinaryData(test, mediaURL, function(mediaData) |
| + { |
| + callback(manifest.type, mediaData); |
| + }); |
| + }); |
| +} |
| + |
| +function appendBuffer(test, sourceBuffer, data) |
| +{ |
| + test.expectEvent(sourceBuffer, "update"); |
| + test.expectEvent(sourceBuffer, "updateend"); |
| + sourceBuffer.appendBuffer(data); |
| +} |
| + |
| +function mediasource_configchange_test(directory, idA, idB, description) |
|
adamk
2013/06/18 21:54:23
Noticed this when reviewing the tests; why isn't t
acolwell GONE FROM CHROMIUM
2013/06/18 23:00:18
I did this just to match mediasource_test, which w
|
| +{ |
| + var manifestFilenameA = directory + "/test-" + idA + "-manifest.json"; |
| + var manifestFilenameB = directory + "/test-" + idB + "-manifest.json"; |
| + mediasource_test(function(test, mediaElement, mediaSource) |
|
adamk
2013/06/18 21:54:23
Does it have something to do with the fact that me
acolwell GONE FROM CHROMIUM
2013/06/18 23:00:18
Yes. Mind if I defer the renaming of mediasource_t
adamk
2013/06/19 00:22:36
Deferring is fine, and actually if it matches test
|
| + { |
| + mediaElement.pause(); |
| + test.failOnEvent(mediaElement, 'error'); |
| + test.endOnEvent(mediaElement, 'ended'); |
| + |
| + fetchManifestAndData(test, manifestFilenameA, function(typeA, dataA) |
| + { |
| + fetchManifestAndData(test, manifestFilenameB, function(typeB, dataB) |
| + { |
| + assert_equals(typeA, typeB, "Media format types match"); |
| + |
| + var sourceBuffer = mediaSource.addSourceBuffer(typeA); |
| + |
| + appendBuffer(test, sourceBuffer, dataA); |
| + |
| + test.waitForExpectedEvents(function() |
| + { |
| + // Add the second buffer starting at 0.5 second. |
| + sourceBuffer.timestampOffset = 0.5; |
| + appendBuffer(test, sourceBuffer, dataB); |
| + }); |
| + |
| + test.waitForExpectedEvents(function() |
| + { |
| + // Add the first buffer starting at 1 second. |
| + sourceBuffer.timestampOffset = 1; |
| + appendBuffer(test, sourceBuffer, dataA); |
| + }); |
| + |
| + test.waitForExpectedEvents(function() |
| + { |
| + // Add the second buffer starting at 1.5 second. |
| + sourceBuffer.timestampOffset = 1.5; |
| + appendBuffer(test, sourceBuffer, dataB); |
| + }); |
| + |
| + test.waitForExpectedEvents(function() |
| + { |
| + // Truncate the presentation to a duration of 2 seconds. |
| + mediaSource.duration = 2; |
| + mediaSource.endOfStream(); |
| + |
| + mediaElement.play(); |
| + }); |
| + }); |
| + }); |
| + }, description, { timeout: 10000 } ); |
| +}; |