Title: [171148] trunk
Revision
171148
Author
[email protected]
Date
2014-07-16 11:05:09 -0700 (Wed, 16 Jul 2014)

Log Message

[MSE] REGRESSION(r171033): ASSERT in WebCore::MediaSource::onReadyStateChange()
https://bugs.webkit.org/show_bug.cgi?id=134941

Reviewed by Eric Carlson.

Source/WebCore:
Only do our modified-order change of the readyState if the error parameter is empty,
as that's the only case where a duration change will cause an inadvertant readyState
change.

* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::streamEndedWithError):

LayoutTests:
Update media/media-source/media-source-end-of-stream.html to use an empty parameter, rather
than an empty string parameter, to endOfStream().

* media/media-source/media-source-end-of-stream-expected.txt:
* media/media-source/media-source-end-of-stream.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (171147 => 171148)


--- trunk/LayoutTests/ChangeLog	2014-07-16 16:42:00 UTC (rev 171147)
+++ trunk/LayoutTests/ChangeLog	2014-07-16 18:05:09 UTC (rev 171148)
@@ -1,3 +1,16 @@
+2014-07-16  Jer Noble  <[email protected]>
+
+        [MSE] REGRESSION(r171033): ASSERT in WebCore::MediaSource::onReadyStateChange()
+        https://bugs.webkit.org/show_bug.cgi?id=134941
+
+        Reviewed by Eric Carlson.
+
+        Update media/media-source/media-source-end-of-stream.html to use an empty parameter, rather
+        than an empty string parameter, to endOfStream().
+
+        * media/media-source/media-source-end-of-stream-expected.txt:
+        * media/media-source/media-source-end-of-stream.html:
+
 2014-07-16  Jinwoo Song  <[email protected]>
 
         [EFL] Unreviewed EFL gardening.

Modified: trunk/LayoutTests/media/media-source/media-source-end-of-stream-expected.txt (171147 => 171148)


--- trunk/LayoutTests/media/media-source/media-source-end-of-stream-expected.txt	2014-07-16 16:42:00 UTC (rev 171147)
+++ trunk/LayoutTests/media/media-source/media-source-end-of-stream-expected.txt	2014-07-16 18:05:09 UTC (rev 171148)
@@ -30,7 +30,7 @@
 RUN(sourceBuffer = source.addSourceBuffer("video/mock; codecs=mock"))
 RUN(sourceBuffer.appendBuffer(initSegment))
 EVENT(updateend)
-RUN(source.endOfStream(""))
+RUN(source.endOfStream())
 EVENT(suspend)
 EXPECTED (video.networkState == '1') OK
 END OF TEST

Modified: trunk/LayoutTests/media/media-source/media-source-end-of-stream.html (171147 => 171148)


--- trunk/LayoutTests/media/media-source/media-source-end-of-stream.html	2014-07-16 16:42:00 UTC (rev 171147)
+++ trunk/LayoutTests/media/media-source/media-source-end-of-stream.html	2014-07-16 18:05:09 UTC (rev 171148)
@@ -95,7 +95,7 @@
 
     function updateEnd5() {
         waitForEventOnce('suspend', videoSuspend5);
-        run('source.endOfStream("")');
+        run('source.endOfStream()');
     }
 
     function videoSuspend5() {

Modified: trunk/Source/WebCore/ChangeLog (171147 => 171148)


--- trunk/Source/WebCore/ChangeLog	2014-07-16 16:42:00 UTC (rev 171147)
+++ trunk/Source/WebCore/ChangeLog	2014-07-16 18:05:09 UTC (rev 171148)
@@ -1,3 +1,17 @@
+2014-07-16  Jer Noble  <[email protected]>
+
+        [MSE] REGRESSION(r171033): ASSERT in WebCore::MediaSource::onReadyStateChange()
+        https://bugs.webkit.org/show_bug.cgi?id=134941
+
+        Reviewed by Eric Carlson.
+
+        Only do our modified-order change of the readyState if the error parameter is empty,
+        as that's the only case where a duration change will cause an inadvertant readyState
+        change.
+
+        * Modules/mediasource/MediaSource.cpp:
+        (WebCore::MediaSource::streamEndedWithError):
+
 2014-07-16  Alexey Proskuryakov  <[email protected]>
 
         Remove svn:executable property erroneously added in <http://trac.webkit.org/changeset/171144> somehow.

Modified: trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp (171147 => 171148)


--- trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp	2014-07-16 16:42:00 UTC (rev 171147)
+++ trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp	2014-07-16 18:05:09 UTC (rev 171148)
@@ -453,7 +453,16 @@
 
         // 2. Notify the media element that it now has all of the media data.
         m_private->markEndOfStream(MediaSourcePrivate::EosNoError);
-    } else if (error == network) {
+    }
+
+    // NOTE: Do steps 1 & 2 after step 3 (with an empty error) to avoid the MediaSource's readyState being re-opened by a
+    // remove() operation resulting from a duration change.
+    // FIXME: Re-number or update this section once <https://www.w3.org/Bugs/Public/show_bug.cgi?id=26316> is resolved.
+    // 1. Change the readyState attribute value to "ended".
+    // 2. Queue a task to fire a simple event named sourceended at the MediaSource.
+    setReadyState(endedKeyword());
+
+    if (error == network) {
         // ↳ If error is set to "network"
         ASSERT(m_mediaElement);
         if (m_mediaElement->readyState() == HTMLMediaElement::HAVE_NOTHING) {
@@ -484,18 +493,11 @@
             //    NOTE: This step is handled by HTMLMediaElement::mediaLoadingFailedFatally().
             m_mediaElement->mediaLoadingFailedFatally(MediaPlayer::DecodeError);
         }
-    } else {
+    } else if (!error.isEmpty()) {
         // ↳ Otherwise
         //   Throw an INVALID_ACCESS_ERR exception.
         ec = INVALID_ACCESS_ERR;
     }
-
-    // NOTE: Do steps 1 & 2 after step 3 to avoid the MediaSource's readyState being re-opened by a
-    // remove() operation resulting from a duration change.
-    // FIXME: Re-number or update this section once <https://www.w3.org/Bugs/Public/show_bug.cgi?id=26316> is resolved.
-    // 1. Change the readyState attribute value to "ended".
-    // 2. Queue a task to fire a simple event named sourceended at the MediaSource.
-    setReadyState(endedKeyword());
 }
 
 SourceBuffer* MediaSource::addSourceBuffer(const String& type, ExceptionCode& ec)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to