Title: [154760] trunk
Revision
154760
Author
[email protected]
Date
2013-08-28 11:27:03 -0700 (Wed, 28 Aug 2013)

Log Message

Duplicate in-band tracks when switching <source> elements
https://bugs.webkit.org/show_bug.cgi?id=120369

Patch by Brendan Long <[email protected]> on 2013-08-28
Reviewed by Eric Carlson.

Source/WebCore:

Test: media/track/track-in-band-duplicate-tracks-when-source-changes.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::createMediaPlayer):
Delete existing in-band tracks before creating a new media player.

LayoutTests:

* media/track/track-in-band-duplicate-tracks-when-source-changes.html: Added.
* media/track/track-in-band-duplicate-tracks-when-source-changes-expected.txt: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (154759 => 154760)


--- trunk/LayoutTests/ChangeLog	2013-08-28 17:29:12 UTC (rev 154759)
+++ trunk/LayoutTests/ChangeLog	2013-08-28 18:27:03 UTC (rev 154760)
@@ -1,3 +1,13 @@
+2013-08-28  Brendan Long  <[email protected]>
+
+        Duplicate in-band tracks when switching <source> elements
+        https://bugs.webkit.org/show_bug.cgi?id=120369
+
+        Reviewed by Eric Carlson.
+
+        * media/track/track-in-band-duplicate-tracks-when-source-changes.html: Added.
+        * media/track/track-in-band-duplicate-tracks-when-source-changes-expected.txt: Added.
+
 2013-08-28  Niklas Nielsen  <[email protected]>
 
         [CSS Exclusions] Differentiate names in the simple rectangle test script

Added: trunk/LayoutTests/media/track/track-in-band-duplicate-tracks-when-source-changes-expected.txt (0 => 154760)


--- trunk/LayoutTests/media/track/track-in-band-duplicate-tracks-when-source-changes-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/track/track-in-band-duplicate-tracks-when-source-changes-expected.txt	2013-08-28 18:27:03 UTC (rev 154760)
@@ -0,0 +1,13 @@
+When changing the source for a video, we shouldn't get duplicate in-band tracks.
+
+EVENT(canplaythrough)
+
+** Storing number of tracks and reloading video
+EXPECTED (video.textTracks.length > '0') OK
+RUN(numTracks = video.textTracks.length)
+EVENT(canplaythrough)
+
+** Loaded video again, checking if tracks number is the same
+EXPECTED (video.textTracks.length == 'numTracks') OK
+END OF TEST
+

Added: trunk/LayoutTests/media/track/track-in-band-duplicate-tracks-when-source-changes.html (0 => 154760)


--- trunk/LayoutTests/media/track/track-in-band-duplicate-tracks-when-source-changes.html	                        (rev 0)
+++ trunk/LayoutTests/media/track/track-in-band-duplicate-tracks-when-source-changes.html	2013-08-28 18:27:03 UTC (rev 154760)
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+        <script src=""
+        <script src=""
+        <script>
+            // Don't hard code the number of tracks, because ports may
+            // disagree. All that matters is that the number doesn't change.
+            var numTracks;
+
+            function storeTrackNumber()
+            {
+                consoleWrite("<br><i>** Storing number of tracks and reloading video</i>");
+                testExpected("video.textTracks.length", 0, ">");
+                run("numTracks = video.textTracks.length");
+
+                var source = document.createElement("source");
+                source.src = '';
+                video.replaceChild(source, video.firstChild);
+
+                waitForEventAndEnd("canplaythrough", checkTrackNumber);
+            }
+
+            function checkTrackNumber()
+            {
+                consoleWrite("<br><i>** Loaded video again, checking if tracks number is the same</i>");
+                reportExpected(video.textTracks.length == numTracks, "video.textTracks.length", "==", "numTracks", numTracks);
+            }
+
+            function setup()
+            {
+                findMediaElement();
+                // This bug only occurs when using the <source> element.
+                // Don't change this to use video.src.
+                var source = document.createElement("source");
+                source.src = '';
+                video.appendChild(source);
+                waitForEventOnce('canplaythrough', storeTrackNumber);
+            }
+
+        </script>
+    </head>
+    <body _onload_="setup()">
+        <video controls></video>
+        <p>When changing the source for a video, we shouldn't get duplicate in-band tracks.</p>
+    </body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (154759 => 154760)


--- trunk/Source/WebCore/ChangeLog	2013-08-28 17:29:12 UTC (rev 154759)
+++ trunk/Source/WebCore/ChangeLog	2013-08-28 18:27:03 UTC (rev 154760)
@@ -1,3 +1,16 @@
+2013-08-28  Brendan Long  <[email protected]>
+
+        Duplicate in-band tracks when switching <source> elements
+        https://bugs.webkit.org/show_bug.cgi?id=120369
+
+        Reviewed by Eric Carlson.
+
+        Test: media/track/track-in-band-duplicate-tracks-when-source-changes.html
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::createMediaPlayer):
+        Delete existing in-band tracks before creating a new media player.
+
 2013-08-28  Bem Jones-Bey  <[email protected]>
 
         Code cleanup: rename FloatIntervalSearchAdapter and remove unnecessary inlines

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (154759 => 154760)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2013-08-28 17:29:12 UTC (rev 154759)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2013-08-28 18:27:03 UTC (rev 154760)
@@ -4793,6 +4793,9 @@
         m_mediaSource->setReadyState(MediaSource::closedKeyword());
 #endif
 
+#if ENABLE(VIDEO_TRACK)
+    removeAllInbandTracks();
+#endif
     m_player = MediaPlayer::create(this);
 
 #if ENABLE(WEB_AUDIO)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to