| 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..7c17ccfd199cfe6099388760f7b4090f85ca2e6c
|
| --- /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 mediaSourceConfigChangeTest(directory, idA, idB, description)
|
| +{
|
| + var manifestFilenameA = directory + "/test-" + idA + "-manifest.json";
|
| + var manifestFilenameB = directory + "/test-" + idB + "-manifest.json";
|
| + mediasource_test(function(test, mediaElement, mediaSource)
|
| + {
|
| + 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 } );
|
| +};
|
|
|