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

Unified Diff: LayoutTests/http/tests/media/media-source/mediasource-config-changes.js

Issue 17338002: Add LayoutTests for MediaSource codec config changes. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix python style Created 7 years, 6 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 side-by-side diff with in-line comments
Download patch
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 } );
+};

Powered by Google App Engine
This is Rietveld 408576698