Modified: trunk/LayoutTests/ChangeLog (115379 => 115380)
--- trunk/LayoutTests/ChangeLog 2012-04-26 22:26:35 UTC (rev 115379)
+++ trunk/LayoutTests/ChangeLog 2012-04-26 22:34:15 UTC (rev 115380)
@@ -1,3 +1,16 @@
+2012-04-26 Aaron Colwell <[email protected]>
+
+ Updating MediaSource layout test to verify that webkitSourceState is always
+ SOURCE_CLOSED when an error occurs.
+
+ Minor style fixes and informative console messages were also added.
+ https://bugs.webkit.org/show_bug.cgi?id=84996
+
+ Reviewed by Eric Carlson.
+
+ * http/tests/media/media-source/webm/video-media-source-errors-expected.txt:
+ * http/tests/media/media-source/webm/video-media-source-errors.html:
+
2012-04-26 Ryosuke Niwa <[email protected]>
Remove Chromium test expectation after r115244.
Modified: trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-errors-expected.txt (115379 => 115380)
--- trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-errors-expected.txt 2012-04-26 22:26:35 UTC (rev 115379)
+++ trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-errors-expected.txt 2012-04-26 22:34:15 UTC (rev 115380)
@@ -4,26 +4,33 @@
EVENT(webkitsourceopen)
running didNotSendHeadersFirst
+Test appending cluster data before sending the headers.
EVENT(error) : MEDIA_ERR_SRC_NOT_SUPPORTED
EVENT(emptied)
EVENT(loadstart)
EVENT(webkitsourceopen)
running appendSameClusterTwice
+Test appending the same cluster twice.
EVENT(loadedmetadata)
+Appending the last appended cluster again.
EVENT(error) : MEDIA_ERR_DECODE
EVENT(emptied)
EVENT(loadstart)
EVENT(webkitsourceopen)
running appendClustersOutOfOrder
+Test clusters appended out of order.
EVENT(loadedmetadata)
+Append 1 past the next cluster.
+Append the next cluster.
EVENT(error) : MEDIA_ERR_DECODE
EVENT(emptied)
EVENT(loadstart)
EVENT(webkitsourceopen)
running immediateDecodeErrorViaEndOfStream
+Test signalling a decode error with webkitSourceEndOfStream.
EVENT(webkitsourceended)
EVENT(error) : MEDIA_ERR_SRC_NOT_SUPPORTED
EVENT(emptied)
@@ -31,6 +38,7 @@
EVENT(webkitsourceopen)
running immediateNetworkErrorViaEndOfStream
+Test signalling a network error with webkitSourceEndOfStream.
EVENT(webkitsourceended)
EVENT(error) : MEDIA_ERR_SRC_NOT_SUPPORTED
EVENT(emptied)
@@ -38,6 +46,7 @@
EVENT(webkitsourceopen)
running decodeErrorAfterHaveMetadata
+Test signalling a decode error with webkitSourceEndOfStream after we have appended enough data to get to the HAVE_METADATA state.
EVENT(loadedmetadata)
EVENT(webkitsourceended)
EVENT(error) : MEDIA_ERR_DECODE
@@ -46,6 +55,7 @@
EVENT(webkitsourceopen)
running networkErrorAfterHaveMetadata
+Test signalling a network error with webkitSourceEndOfStream after we have appended enough data to get to the HAVE_METADATA state.
EVENT(loadedmetadata)
EVENT(webkitsourceended)
EVENT(error) : MEDIA_ERR_NETWORK
Modified: trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-errors.html (115379 => 115380)
--- trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-errors.html 2012-04-26 22:26:35 UTC (rev 115379)
+++ trunk/LayoutTests/http/tests/media/media-source/webm/video-media-source-errors.html 2012-04-26 22:34:15 UTC (rev 115380)
@@ -24,6 +24,12 @@
break;
}
consoleWrite("EVENT(error) : " + errorString);
+
+ if (videoTag.webkitSourceState != HTMLMediaElement.SOURCE_CLOSED) {
+ consoleWrite("Unexpected source state. Expected SOURCE_CLOSED" +
+ " got " + getSourceStateName(videoTag.webkitSourceState));
+ }
+
runNextTestCase(videoTag);
}
@@ -36,90 +42,94 @@
appendCluster(videoTag, nextClusterIndex++);
appendCluster(videoTag, nextClusterIndex++);
- var eventHandler = function(event) {
+ var eventHandler = function(event)
+ {
videoTag.removeEventListener('loadedmetadata', eventHandler);
doneCallback();
};
videoTag.addEventListener('loadedmetadata', eventHandler);
}
- // Test appending cluster data before sending the headers.
function didNotSendHeadersFirst(event)
{
+ consoleWrite("Test appending cluster data before sending the headers.");
appendCluster(event.target, 0);
}
- // Test appending the same cluster twice.
function appendSameClusterTwice(event)
{
+ consoleWrite("Test appending the same cluster twice.");
var videoTag = event.target;
appendHeaders(videoTag);
- appendEnoughClustersToTriggerMetadataLoaded(videoTag, function() {
+ appendEnoughClustersToTriggerMetadataLoaded(videoTag, function()
+ {
+ consoleWrite("Appending the last appended cluster again.");
appendCluster(videoTag, nextClusterIndex - 1);
});
}
- // Test clusters appended out of order.
function appendClustersOutOfOrder(event)
{
+ consoleWrite("Test clusters appended out of order.");
var videoTag = event.target;
appendHeaders(videoTag);
- appendEnoughClustersToTriggerMetadataLoaded(videoTag, function() {
- // Append 1 past the next cluster.
+ appendEnoughClustersToTriggerMetadataLoaded(videoTag, function()
+ {
+ consoleWrite("Append 1 past the next cluster.");
appendCluster(videoTag, nextClusterIndex + 1);
- // Append the next cluster.
+ consoleWrite("Append the next cluster.");
appendCluster(videoTag, nextClusterIndex);
});
}
- // Test signalling a decode error with webkitSourceEndOfStream.
function immediateDecodeErrorViaEndOfStream(event)
{
+ consoleWrite("Test signalling a decode error with webkitSourceEndOfStream.");
var videoTag = event.target;
videoTag.webkitSourceEndOfStream(HTMLMediaElement.EOS_DECODE_ERR);
}
- // Test signalling a network error with webkitSourceEndOfStream.
function immediateNetworkErrorViaEndOfStream(event)
{
+ consoleWrite("Test signalling a network error with webkitSourceEndOfStream.");
var videoTag = event.target;
videoTag.webkitSourceEndOfStream(HTMLMediaElement.EOS_NETWORK_ERR);
}
- // Test signalling a decode error with webkitSourceEndOfStream after we
- // have appended enough data to get to the HAVE_METADATA state.
function decodeErrorAfterHaveMetadata(event)
{
+ consoleWrite("Test signalling a decode error with webkitSourceEndOfStream after we have appended enough data to get to the HAVE_METADATA state.");
var videoTag = event.target;
appendHeaders(videoTag);
- appendEnoughClustersToTriggerMetadataLoaded(videoTag, function() {
+ appendEnoughClustersToTriggerMetadataLoaded(videoTag, function()
+ {
videoTag.webkitSourceEndOfStream(HTMLMediaElement.EOS_DECODE_ERR);
});
}
- // Test signalling a network error with webkitSourceEndOfStream after we
- // have appended enough data to get to the HAVE_METADATA state.
function networkErrorAfterHaveMetadata(event)
{
+ consoleWrite("Test signalling a network error with webkitSourceEndOfStream after we have appended enough data to get to the HAVE_METADATA state.");
var videoTag = event.target;
appendHeaders(videoTag);
- appendEnoughClustersToTriggerMetadataLoaded(videoTag, function() {
+ appendEnoughClustersToTriggerMetadataLoaded(videoTag, function()
+ {
videoTag.webkitSourceEndOfStream(HTMLMediaElement.EOS_NETWORK_ERR);
});
}
var testCases = [
- "didNotSendHeadersFirst",
- "appendSameClusterTwice",
- "appendClustersOutOfOrder",
- "immediateDecodeErrorViaEndOfStream",
- "immediateNetworkErrorViaEndOfStream",
- "decodeErrorAfterHaveMetadata",
- "networkErrorAfterHaveMetadata"
+ didNotSendHeadersFirst,
+ appendSameClusterTwice,
+ appendClustersOutOfOrder,
+ immediateDecodeErrorViaEndOfStream,
+ immediateNetworkErrorViaEndOfStream,
+ decodeErrorAfterHaveMetadata,
+ networkErrorAfterHaveMetadata
];
var testCaseIndex = 0;
@@ -131,8 +141,8 @@
return;
}
- var functionName = testCases[testCaseIndex];
- var _onOpenFunction_ = eval(functionName);
+ var _onOpenFunction_ = testCases[testCaseIndex];
+ var functionName = onOpenFunction.name;
testCaseIndex++;
var eventHandlerFunction = function (event) {
@@ -159,7 +169,8 @@
video.addEventListener('error', onError);
- loadWebMData(function(success) {
+ loadWebMData(function(success)
+ {
if (!success) {
failTest("Failed to load WebM data");
return;
Modified: trunk/Source/WebCore/ChangeLog (115379 => 115380)
--- trunk/Source/WebCore/ChangeLog 2012-04-26 22:26:35 UTC (rev 115379)
+++ trunk/Source/WebCore/ChangeLog 2012-04-26 22:34:15 UTC (rev 115380)
@@ -1,3 +1,15 @@
+2012-04-26 Aaron Colwell <[email protected]>
+
+ Fix missing sourceState change on MEDIA_ERR_SOURCE_NOT_SUPPORTED error.
+ https://bugs.webkit.org/show_bug.cgi?id=84996
+
+ Reviewed by Eric Carlson.
+
+ No new tests. http/tests/media/media-source/webm/video-media-source-errors.html was updated to verify that webkitSourceState is always SOURCE_CLOSED when the onerror event fires.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::noneSupported):
+
2012-04-26 Antti Koivisto <[email protected]>
Cache parsed stylesheets
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (115379 => 115380)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2012-04-26 22:26:35 UTC (rev 115379)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2012-04-26 22:34:15 UTC (rev 115380)
@@ -1395,6 +1395,11 @@
// 7 - Queue a task to fire a simple event named error at the media element.
scheduleEvent(eventNames().errorEvent);
+#if ENABLE(MEDIA_SOURCE)
+ if (m_sourceState != SOURCE_CLOSED)
+ setSourceState(SOURCE_CLOSED);
+#endif
+
// 8 - Set the element's delaying-the-load-event flag to false. This stops delaying the load event.
setShouldDelayLoadEvent(false);