Title: [103371] trunk
Revision
103371
Author
eric.carl...@apple.com
Date
2011-12-20 17:14:23 -0800 (Tue, 20 Dec 2011)

Log Message

WebVTT cues sometimes render when they should not
https://bugs.webkit.org/show_bug.cgi?id=74873

Reviewed by Darin Adler.

Source/WebCore: 

Test: media/track/track-cue-nothing-to-render.html

* html/shadow/MediaControlRootElement.cpp:
(WebCore::MediaControlRootElement::updateTextTrackDisplay): Don't return early if the current
    cue is empty so the previous cue is removed.

LayoutTests: 

* media/track/captions-webvtt/captions-gaps.vtt: Added.
* media/track/track-cue-nothing-to-render-expected.txt: Added.
* media/track/track-cue-nothing-to-render.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (103370 => 103371)


--- trunk/LayoutTests/ChangeLog	2011-12-21 01:09:12 UTC (rev 103370)
+++ trunk/LayoutTests/ChangeLog	2011-12-21 01:14:23 UTC (rev 103371)
@@ -1,3 +1,14 @@
+2011-12-20  Eric Carlson  <eric.carl...@apple.com>
+
+        WebVTT cues sometimes render when they should not
+        https://bugs.webkit.org/show_bug.cgi?id=74873
+
+        Reviewed by Darin Adler.
+
+        * media/track/captions-webvtt/captions-gaps.vtt: Added.
+        * media/track/track-cue-nothing-to-render-expected.txt: Added.
+        * media/track/track-cue-nothing-to-render.html: Added.
+
 2011-12-20  Tony Chang  <t...@chromium.org>
 
         [chromium] Unreviewed, according to the flakiness dashboard,
@@ -505,6 +516,7 @@
         (mediaControlsButtonCoordinates):
         (textTrackDisplayElement): Find the cue display element.
 
+        * media/track/captions-webvtt/captions.vtt: Added.
         * media/track/track-cue-rendering-expected.txt: Added.
         * media/track/track-cue-rendering.html: Added.
 

Added: trunk/LayoutTests/media/track/captions-webvtt/captions-gaps.vtt (0 => 103371)


--- trunk/LayoutTests/media/track/captions-webvtt/captions-gaps.vtt	                        (rev 0)
+++ trunk/LayoutTests/media/track/captions-webvtt/captions-gaps.vtt	2011-12-21 01:14:23 UTC (rev 103371)
@@ -0,0 +1,18 @@
+WEBVTT
+
+1
+00:00:01.000 --> 00:00:02.000
+Lorem ipsum dolor sit amet,
+
+2
+00:00:03.000 --> 00:00:04.000
+consectetuer adipiscing elit,
+
+3
+00:00:05.000 --> 00:00:06.000
+sed diam nonummy nibh euismod tincidunt
+
+4
+00:00:07.000 --> 00:00:08.000
+ut laoreet dolore magna aliquam erat volutpat.
+

Added: trunk/LayoutTests/media/track/track-cue-nothing-to-render-expected.txt (0 => 103371)


--- trunk/LayoutTests/media/track/track-cue-nothing-to-render-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/track/track-cue-nothing-to-render-expected.txt	2011-12-21 01:14:23 UTC (rev 103371)
@@ -0,0 +1,48 @@
+Test that cues are rendered and removed.
+
+EVENT(canplaythrough)
+EVENT(seeked)
+EXPECTED (video.currentTime.toFixed(1) == '0.5') OK
+EXPECTED (textTrackDisplayElement(video).innerText == '') OK
+
+RUN(video.currentTime = 1.5)
+EVENT(seeked)
+EXPECTED (video.currentTime.toFixed(1) == '1.5') OK
+EXPECTED (testTrack.track.activeCues[0].getCueAsSource() == 'Lorem ipsum dolor sit amet,') OK
+EXPECTED (textTrackDisplayElement(video).innerText == 'Lorem ipsum dolor sit amet,') OK
+
+RUN(video.currentTime = 2.5)
+EVENT(seeked)
+EXPECTED (video.currentTime.toFixed(1) == '2.5') OK
+EXPECTED (textTrackDisplayElement(video).innerText == '') OK
+
+RUN(video.currentTime = 3.3)
+EVENT(seeked)
+EXPECTED (video.currentTime.toFixed(1) == '3.3') OK
+EXPECTED (testTrack.track.activeCues[0].getCueAsSource() == 'consectetuer adipiscing elit,') OK
+EXPECTED (textTrackDisplayElement(video).innerText == 'consectetuer adipiscing elit,') OK
+
+RUN(video.currentTime = 0.6)
+EVENT(seeked)
+EXPECTED (video.currentTime.toFixed(1) == '0.6') OK
+EXPECTED (textTrackDisplayElement(video).innerText == '') OK
+
+RUN(video.currentTime = 5.9)
+EVENT(seeked)
+EXPECTED (video.currentTime.toFixed(1) == '5.9') OK
+EXPECTED (testTrack.track.activeCues[0].getCueAsSource() == 'sed diam nonummy nibh euismod tincidunt') OK
+EXPECTED (textTrackDisplayElement(video).innerText == 'sed diam nonummy nibh euismod tincidunt') OK
+
+RUN(video.currentTime = 4.4)
+EVENT(seeked)
+EXPECTED (video.currentTime.toFixed(1) == '4.4') OK
+EXPECTED (textTrackDisplayElement(video).innerText == '') OK
+
+RUN(video.currentTime = 7.9)
+EVENT(seeked)
+EXPECTED (video.currentTime.toFixed(1) == '7.9') OK
+EXPECTED (testTrack.track.activeCues[0].getCueAsSource() == 'ut laoreet dolore magna aliquam erat volutpat.') OK
+EXPECTED (textTrackDisplayElement(video).innerText == 'ut laoreet dolore magna aliquam erat volutpat.') OK
+
+END OF TEST
+

Added: trunk/LayoutTests/media/track/track-cue-nothing-to-render.html (0 => 103371)


--- trunk/LayoutTests/media/track/track-cue-nothing-to-render.html	                        (rev 0)
+++ trunk/LayoutTests/media/track/track-cue-nothing-to-render.html	2011-12-21 01:14:23 UTC (rev 103371)
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+        <script src=""
+        <script src=""
+        <script src=""
+
+        <script>            
+
+        var testTrack;
+        var seekedCount = 0;
+        var info = [ 
+            0.5, "", 
+            1.5, "Lorem ipsum dolor sit amet,", 
+            2.5, "", 
+            3.3, "consectetuer adipiscing elit,", 
+            0.6, "",
+            5.9, "sed diam nonummy nibh euismod tincidunt",
+            4.4, "",
+            7.9, "ut laoreet dolore magna aliquam erat volutpat." 
+        ];
+
+        function seeked()
+        {
+            var time = info[seekedCount];
+            var cueText = info[seekedCount + 1];
+            seekedCount += 2;
+
+            testExpected("video.currentTime.toFixed(1)", time.toFixed(1));
+            if (cueText.length)
+                testExpected("testTrack.track.activeCues[0].getCueAsSource()", cueText);
+            testExpected("textTrackDisplayElement(video).innerText", cueText);
+
+            if (seekedCount >= info.length) {
+                consoleWrite("");
+                endTest();
+                return;
+            }
+
+            consoleWrite("");
+            run("video.currentTime = " + (info[seekedCount]));
+        }
+
+        function loaded()
+        {
+            findMediaElement();
+            testTrack = document.querySelector('track');
+            video.src = "" '../content/counting');
+            waitForEvent('seeked', seeked);
+            waitForEvent('canplaythrough', function() { video.currentTime = .5; });
+        }
+        
+        </script>
+    </head>
+    <body _onload_="loaded()">
+        <video controls >
+            <track src="" kind="captions" default>
+        </video>
+        <p>Test that cues are rendered and removed.</p>
+    </body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (103370 => 103371)


--- trunk/Source/WebCore/ChangeLog	2011-12-21 01:09:12 UTC (rev 103370)
+++ trunk/Source/WebCore/ChangeLog	2011-12-21 01:14:23 UTC (rev 103371)
@@ -1,3 +1,16 @@
+2011-12-20  Eric Carlson  <eric.carl...@apple.com>
+
+        WebVTT cues sometimes render when they should not
+        https://bugs.webkit.org/show_bug.cgi?id=74873
+
+        Reviewed by Darin Adler.
+
+        Test: media/track/track-cue-nothing-to-render.html
+
+        * html/shadow/MediaControlRootElement.cpp:
+        (WebCore::MediaControlRootElement::updateTextTrackDisplay): Don't return early if the current
+            cue is empty so the previous cue is removed.
+
 2011-12-20  Ami Fischman  <fisch...@chromium.org>
 
         Don't crash on the second time VideoLayerChromium::createCCVideoLayer() is called

Modified: trunk/Source/WebCore/html/shadow/MediaControlRootElement.cpp (103370 => 103371)


--- trunk/Source/WebCore/html/shadow/MediaControlRootElement.cpp	2011-12-21 01:09:12 UTC (rev 103370)
+++ trunk/Source/WebCore/html/shadow/MediaControlRootElement.cpp	2011-12-21 01:14:23 UTC (rev 103371)
@@ -634,9 +634,6 @@
         createTextTrackDisplay();
 
     CueList activeCues = toParentMediaElement(m_textDisplayContainer)->currentlyActiveCues();
-    if (activeCues.isEmpty())
-        return;
-
     m_textTrackDisplay->removeChildren();
     bool nothingToDisplay = true;
     for (size_t i = 0; i < activeCues.size(); ++i) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to