Title: [115380] trunk
Revision
115380
Author
[email protected]
Date
2012-04-26 15:34:15 -0700 (Thu, 26 Apr 2012)

Log Message

Source/WebCore: Fix missing sourceState change on MEDIA_ERR_SOURCE_NOT_SUPPORTED error.
https://bugs.webkit.org/show_bug.cgi?id=84996

Patch by Aaron Colwell <[email protected]> on 2012-04-26
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):

LayoutTests: 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

Patch by Aaron Colwell <[email protected]> on 2012-04-26
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:

Modified Paths

Diff

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);
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to