Diff
Modified: trunk/LayoutTests/ChangeLog (113494 => 113495)
--- trunk/LayoutTests/ChangeLog 2012-04-06 21:17:55 UTC (rev 113494)
+++ trunk/LayoutTests/ChangeLog 2012-04-06 21:19:26 UTC (rev 113495)
@@ -1,3 +1,28 @@
+2012-04-06 Aaron Colwell <[email protected]>
+
+ Fix MediaSource LayoutTests to work with the new XHR behavior
+ that requires asynchronous requests for the 'arraybuffer'
+ responseType.
+ https://bugs.webkit.org/show_bug.cgi?id=83053
+
+ Reviewed by Dimitri Glazkov.
+
+ * http/tests/media/media-source/webm/video-media-source-errors.html:
+ * http/tests/media/media-source/webm/video-media-source-play.html:
+ * http/tests/media/media-source/webm/video-media-source-seek.html:
+ * http/tests/media/media-source/webm/video-media-source-state-changes.html:
+ * http/tests/media/media-source/webm/webm-media-source.js:
+ (getData.request.onload):
+ (createClusterGetFunction.return.if):
+ (createClusterGetFunction):
+ (loadWebMData):
+ (getCluster):
+ (appendCluster):
+ (getReadyStateName):
+ (expectSourceState):
+ (expectReadyState):
+ * platform/chromium/test_expectations.txt:
+
2012-04-06 James Robinson <[email protected]>
WebGL content swapped at wrong time in threaded compositing mode
Modified: trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-errors.html (113494 => 113495)
--- trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-errors.html 2012-04-06 21:17:55 UTC (rev 113494)
+++ trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-errors.html 2012-04-06 21:19:26 UTC (rev 113495)
@@ -158,7 +158,14 @@
waitForEvent('emptied');
video.addEventListener('error', onError);
- runNextTestCase(video);
+
+ loadWebMData(function(success) {
+ if (!success) {
+ failTest("Failed to load WebM data");
+ return;
+ }
+ runNextTestCase(video);
+ });
}
</script>
</head>
Modified: trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-play.html (113494 => 113495)
--- trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-play.html 2012-04-06 21:17:55 UTC (rev 113494)
+++ trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-play.html 2012-04-06 21:19:26 UTC (rev 113495)
@@ -24,7 +24,13 @@
video.addEventListener('webkitsourceopen', onSourceOpen);
- setSrcToMediaSourceURL(video);
+ loadWebMData(function(success) {
+ if (!success) {
+ failTest("Failed to load WebM data");
+ return;
+ }
+ setSrcToMediaSourceURL(video);
+ });
}
</script>
</head>
Modified: trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-seek.html (113494 => 113495)
--- trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-seek.html 2012-04-06 21:17:55 UTC (rev 113494)
+++ trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-seek.html 2012-04-06 21:19:26 UTC (rev 113495)
@@ -68,7 +68,13 @@
video.addEventListener('seeking', onSeeking);
video.addEventListener('seeked', onSeeked);
- setSrcToMediaSourceURL(video);
+ loadWebMData(function(success) {
+ if (!success) {
+ failTest("Failed to load WebM data");
+ return;
+ }
+ setSrcToMediaSourceURL(video);
+ });
}
</script>
</head>
Modified: trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-state-changes.html (113494 => 113495)
--- trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-state-changes.html 2012-04-06 21:17:55 UTC (rev 113494)
+++ trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-state-changes.html 2012-04-06 21:19:26 UTC (rev 113495)
@@ -60,7 +60,15 @@
videoTag.removeEventListener('webkitsourceended', onFirstSourceEnded);
expectSourceState(videoTag, videoTag.SOURCE_ENDED);
+ expectReadyState(videoTag, HTMLMediaElement.HAVE_NOTHING);
+ videoTag.addEventListener('playing', triggerFirstSeek);
+ }
+
+ function triggerFirstSeek(event) {
+ var videoTag = event.target;
+ videoTag.removeEventListener('playing', triggerFirstSeek);
+
// Now that we have appended all of the clusters and ended the stream,
// lets do a seek to test the SOURCE_ENDED -> SOURCE_OPEN transition.
videoTag.addEventListener('seeking', onFirstSeeking);
@@ -146,7 +154,15 @@
videoTag.removeEventListener('webkitsourceended', onSecondSourceEnded);
expectSourceState(videoTag, HTMLMediaElement.SOURCE_ENDED);
+ expectReadyState(videoTag, HTMLMediaElement.HAVE_NOTHING);
+ videoTag.addEventListener('playing', triggerSecondSourceClose);
+ }
+
+ function triggerSecondSourceClose(event) {
+ var videoTag = event.target;
+ videoTag.removeEventListener('playing', triggerSecondSourceClose);
+
// Test SOURCE_ENDED -> SOURCE_CLOSED -> SOURCE_OPEN transition path.
videoTag.addEventListener('webkitsourceclose', onSecondSourceClose);
setSrcToMediaSourceURL(videoTag);
@@ -190,7 +206,13 @@
video.addEventListener('webkitsourceopen', onFirstSourceOpen);
logSourceState(video);
- setSrcToMediaSourceURL(video);
+ loadWebMData(function(success) {
+ if (!success) {
+ failTest("Failed to load WebM data");
+ return;
+ }
+ setSrcToMediaSourceURL(video);
+ });
}
</script>
</head>
Modified: trunk/LayoutTests/http/tests/media/media-source/webm/webm-media-source.js (113494 => 113495)
--- trunk/LayoutTests/http/tests/media/media-source/webm/webm-media-source.js 2012-04-06 21:17:55 UTC (rev 113494)
+++ trunk/LayoutTests/http/tests/media/media-source/webm/webm-media-source.js 2012-04-06 21:19:26 UTC (rev 113495)
@@ -7,34 +7,66 @@
{ 'ts': 1.9869999885559082 },
{ 'ts': 2.38100004196167 },
{ 'ts': 2.7760000228881836 },
- { 'ts': 3.1710000038146973 },
- { 'ts': 3.565999984741211 },
- { 'ts': 3.9600000381469727 },
- { 'ts': 4.377999782562256 },
- { 'ts': 4.7729997634887695 },
- { 'ts': 5.168000221252441 },
- { 'ts': 5.563000202178955 },
- { 'ts': 5.956999778747559 },
];
-function getData(url)
+var headerData = null;
+var clusterData = [];
+
+function getData(url, callback)
{
var request = new XMLHttpRequest();
- request.open("GET", url, false);
+ request.open("GET", url, true);
request.responseType = 'arraybuffer';
+ request._onload_ = function() {
+ if (request.status != 200) {
+ failTest("Unexpected status code " + request.status + " for " + url);
+ callback(null);
+ return;
+ }
+
+ callback(new Uint8Array(request.response));
+ };
request.send();
+}
- if (request.status != 200) {
- failTest("Unexpected status code " + request.status + " for " + url);
- return false;
- }
+function createClusterGetFunction(clusterIndex, callback) {
+ return function(data) {
+ if (!data) {
+ callback(false);
+ return;
+ }
- return new Uint8Array(request.response);
+ clusterData.push(data);
+
+ if (clusterData.length == getClusterCount()) {
+ callback(true);
+ return;
+ }
+
+ var nextClusterIndex = clusterIndex + 1;
+ getData("/media/resources/media-source/webm/test.webm.cluster-" + nextClusterIndex,
+ createClusterGetFunction(nextClusterIndex, callback));
+ };
}
+function loadWebMData(callback) {
+ getData("/media/resources/media-source/webm/test.webm.headers", function(data) {
+ if (!data) {
+ callback(false);
+ return;
+ }
+
+ headerData = data;
+
+ var clusterIndex = 0;
+ getData("/media/resources/media-source/webm/test.webm.cluster-" + clusterIndex,
+ createClusterGetFunction(clusterIndex, callback));
+ });
+}
+
function getHeaders()
{
- return getData("/media/resources/media-source/webm/test.webm.headers");
+ return headerData;
}
function getClusterCount()
@@ -44,7 +76,7 @@
function getCluster(clusterIndex)
{
- return getData("/media/resources/media-source/webm/test.webm.cluster-" + clusterIndex);
+ return clusterData[clusterIndex];
}
function getClusterTimeForIndex(clusterIndex)
@@ -98,7 +130,12 @@
return;
}
- videoTag.webkitSourceAppend(getCluster(clusterIndex));
+ try {
+ var cluster = getCluster(clusterIndex);
+ videoTag.webkitSourceAppend(cluster);
+ } catch (err) {
+ consoleWrite(err);
+ }
}
function appendUntilEndOfStream(videoTag, startIndex)
@@ -136,6 +173,29 @@
return stateName;
}
+function getReadyStateName(state)
+{
+ var stateName = "UNKNOWN";
+ switch (state) {
+ case HTMLMediaElement.HAVE_NOTHING:
+ stateName = "HAVE_NOTHING";
+ break;
+ case HTMLMediaElement.HAVE_METADATA:
+ stateName = "HAVE_METADATA";
+ break;
+ case HTMLMediaElement.HAVE_CURRENT_DATA:
+ stateName = "HAVE_CURRENT_DATA";
+ break;
+ case HTMLMediaElement.HAVE_FUTURE_DATA:
+ stateName = "HAVE_FUTURE_DATA";
+ break;
+ case HTMLMediaElement.HAVE_ENOUGH_DATA:
+ stateName = "HAVE_ENOUGH_DATA";
+ break;
+ }
+ return stateName;
+}
+
function expectSourceState(videoTag, expected)
{
if (videoTag.webkitSourceState != expected) {
@@ -143,4 +203,13 @@
getSourceStateName(expected) +
" got " + getSourceStateName(videoTag.webkitSourceState));
}
+}
+
+function expectReadyState(videoTag, expected)
+{
+ if (videoTag.readyState != expected) {
+ failTest("Unexpected ready state. Expected " +
+ getReadyStateName(expected) +
+ " got " + getReadyStateName(videoTag.readyState));
+ }
}
\ No newline at end of file
Modified: trunk/LayoutTests/platform/chromium/test_expectations.txt (113494 => 113495)
--- trunk/LayoutTests/platform/chromium/test_expectations.txt 2012-04-06 21:17:55 UTC (rev 113494)
+++ trunk/LayoutTests/platform/chromium/test_expectations.txt 2012-04-06 21:19:26 UTC (rev 113495)
@@ -111,9 +111,6 @@
BUGCR89468 WIN LINUX ANDROID LION : css3/selectors3/xml/css3-modsel-d3.xml = FAIL
BUGCR89468 WIN LINUX ANDROID LION : css3/selectors3/xml/css3-modsel-d4.xml = FAIL
-// Tests for MediaSource API. Feature is not yet functional.
-BUGWK64731 SKIP : http/tests/media/media-source/ = TIMEOUT
-
// Chrome does not support WebArchives yet.
BUGCR10395 SKIP : webarchive = PASS FAIL
BUGCR10395 SKIP : svg/webarchive = PASS FAIL
Modified: trunk/Tools/ChangeLog (113494 => 113495)
--- trunk/Tools/ChangeLog 2012-04-06 21:17:55 UTC (rev 113494)
+++ trunk/Tools/ChangeLog 2012-04-06 21:19:26 UTC (rev 113495)
@@ -1,3 +1,14 @@
+2012-04-06 Aaron Colwell <[email protected]>
+
+ Enable MediaSource feature for DumpRenderTree so
+ MediaSource LayoutTests will pass for Chromium.
+ https://bugs.webkit.org/show_bug.cgi?id=83053
+
+ Reviewed by Dimitri Glazkov.
+
+ * DumpRenderTree/chromium/TestShell.cpp:
+ (TestShell::TestShell):
+
2012-04-06 George Staikos <[email protected]>
Turn on vibration support for BlackBerry.
Modified: trunk/Tools/DumpRenderTree/chromium/TestShell.cpp (113494 => 113495)
--- trunk/Tools/DumpRenderTree/chromium/TestShell.cpp 2012-04-06 21:17:55 UTC (rev 113494)
+++ trunk/Tools/DumpRenderTree/chromium/TestShell.cpp 2012-04-06 21:19:26 UTC (rev 113495)
@@ -124,6 +124,7 @@
WebRuntimeFeatures::enableIndexedDatabase(true);
WebRuntimeFeatures::enableFileSystem(true);
WebRuntimeFeatures::enableJavaScriptI18NAPI(true);
+ WebRuntimeFeatures::enableMediaSource(true);
WebRuntimeFeatures::enableMediaStream(true);
WebRuntimeFeatures::enableWebAudio(true);
WebRuntimeFeatures::enableVideoTrack(true);