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) {