- Revision
- 124645
- Author
- [email protected]
- Date
- 2012-08-03 13:08:53 -0700 (Fri, 03 Aug 2012)
Log Message
Negative timestamps for TextTrackCues should not be allowed.
https://bugs.webkit.org/show_bug.cgi?id=92939
Reviewed by Eric Carlson.
Make sure cues added in _javascript_ are not allowed negative timestamps.
Attempting to add a cue with a negative timestamp is not successful
and setting a timestamp to a negative value has no effect.
Source/WebCore:
Test: media/track/track-cue-negative-timestamp.html
* html/track/TextTrack.cpp:
(WebCore::TextTrack::addCue): If the cue's startTime or endTime is
negative, do not add the cue.
* html/track/TextTrackCue.cpp:
(WebCore::TextTrackCue::setStartTime): Ignore negative values.
(WebCore::TextTrackCue::setEndTime): Ignore negative values.
* html/track/TextTrackCueList.cpp:
(WebCore::TextTrackCueList::add): Add ASSERTs to check startTime and
endTime are positive.
LayoutTests:
* media/track/track-cue-negative-timestamp-expected.txt: Added.
* media/track/track-cue-negative-timestamp.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (124644 => 124645)
--- trunk/LayoutTests/ChangeLog 2012-08-03 20:03:57 UTC (rev 124644)
+++ trunk/LayoutTests/ChangeLog 2012-08-03 20:08:53 UTC (rev 124645)
@@ -1,3 +1,17 @@
+2012-08-03 Anna Cavender <[email protected]>
+
+ Negative timestamps for TextTrackCues should not be allowed.
+ https://bugs.webkit.org/show_bug.cgi?id=92939
+
+ Reviewed by Eric Carlson.
+
+ Make sure cues added in _javascript_ are not allowed negative timestamps.
+ Attempting to add a cue with a negative timestamp is not successful
+ and setting a timestamp to a negative value has no effect.
+
+ * media/track/track-cue-negative-timestamp-expected.txt: Added.
+ * media/track/track-cue-negative-timestamp.html: Added.
+
2012-08-03 Terry Anderson <[email protected]>
Apply target fuzzing when sending a context menu event
Added: trunk/LayoutTests/media/track/track-cue-negative-timestamp-expected.txt (0 => 124645)
--- trunk/LayoutTests/media/track/track-cue-negative-timestamp-expected.txt (rev 0)
+++ trunk/LayoutTests/media/track/track-cue-negative-timestamp-expected.txt 2012-08-03 20:08:53 UTC (rev 124645)
@@ -0,0 +1,23 @@
+Tests negative timestamps.
+
+Test that cues with negative startTime are not added:
+EXPECTED (testTrack.track.cues.length == '4') OK
+RUN(textCue = new TextTrackCue('sausage-cue', -3439332606, 3.4, 'Sausage?'))
+RUN(testTrack.track.addCue(textCue))
+EXPECTED (testTrack.track.cues.length == '4') OK
+
+Test that cues with negative startTime and negative endTime are not added:
+EXPECTED (testTrack.track.cues.length == '4') OK
+RUN(textCue = new TextTrackCue('pepperoni-cue', -110, -3.4, 'Pepperoni?'))
+RUN(testTrack.track.addCue(textCue))
+EXPECTED (testTrack.track.cues.length == '4') OK
+
+Test that setting startTime and endTime to negative values does not affect the value:
+EXPECTED (testTrack.track.cues[3].startTime == '121') OK
+RUN(testTrack.track.cues[3].startTime = -5)
+EXPECTED (testTrack.track.cues[3].startTime == '121') OK
+EXPECTED (testTrack.track.cues[3].endTime == '361200.5') OK
+RUN(testTrack.track.cues[3].endTime = -3439332606)
+EXPECTED (testTrack.track.cues[3].endTime == '361200.5') OK
+END OF TEST
+
Property changes on: trunk/LayoutTests/media/track/track-cue-negative-timestamp-expected.txt
___________________________________________________________________
Added: svn:eol-style
Added: trunk/LayoutTests/media/track/track-cue-negative-timestamp.html (0 => 124645)
--- trunk/LayoutTests/media/track/track-cue-negative-timestamp.html (rev 0)
+++ trunk/LayoutTests/media/track/track-cue-negative-timestamp.html 2012-08-03 20:08:53 UTC (rev 124645)
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <script src=""
+ <script>
+
+ function trackLoaded()
+ {
+ consoleWrite("Test that cues with negative startTime are not added:");
+ testExpected("testTrack.track.cues.length", 4);
+ run("textCue = new TextTrackCue('sausage-cue', -3439332606, 3.4, 'Sausage?')");
+ run("testTrack.track.addCue(textCue)");
+ testExpected("testTrack.track.cues.length", 4);
+
+ consoleWrite("<br>Test that cues with negative startTime and negative endTime are not added:");
+ testExpected("testTrack.track.cues.length", 4);
+ run("textCue = new TextTrackCue('pepperoni-cue', -110, -3.4, 'Pepperoni?')");
+ run("testTrack.track.addCue(textCue)");
+ testExpected("testTrack.track.cues.length", 4);
+
+ consoleWrite("<br>Test that setting startTime and endTime to negative values does not affect the value:");
+ testExpected("testTrack.track.cues[3].startTime", 121);
+ run("testTrack.track.cues[3].startTime = -5");
+ testExpected("testTrack.track.cues[3].startTime", 121);
+ testExpected("testTrack.track.cues[3].endTime", 361200.5);
+ run("testTrack.track.cues[3].endTime = -3439332606");
+ testExpected("testTrack.track.cues[3].endTime", 361200.5);
+
+ endTest();
+ }
+
+ </script>
+
+ </head>
+ <body>
+ <p>Tests negative timestamps.</p>
+ <video>
+ <track id="testTrack" src="" _onload_="trackLoaded()" default>
+ </video>
+ </body>
+</html>
Property changes on: trunk/LayoutTests/media/track/track-cue-negative-timestamp.html
___________________________________________________________________
Added: svn:eol-style
Modified: trunk/Source/WebCore/ChangeLog (124644 => 124645)
--- trunk/Source/WebCore/ChangeLog 2012-08-03 20:03:57 UTC (rev 124644)
+++ trunk/Source/WebCore/ChangeLog 2012-08-03 20:08:53 UTC (rev 124645)
@@ -1,3 +1,26 @@
+2012-08-03 Anna Cavender <[email protected]>
+
+ Negative timestamps for TextTrackCues should not be allowed.
+ https://bugs.webkit.org/show_bug.cgi?id=92939
+
+ Reviewed by Eric Carlson.
+
+ Make sure cues added in _javascript_ are not allowed negative timestamps.
+ Attempting to add a cue with a negative timestamp is not successful
+ and setting a timestamp to a negative value has no effect.
+
+ Test: media/track/track-cue-negative-timestamp.html
+
+ * html/track/TextTrack.cpp:
+ (WebCore::TextTrack::addCue): If the cue's startTime or endTime is
+ negative, do not add the cue.
+ * html/track/TextTrackCue.cpp:
+ (WebCore::TextTrackCue::setStartTime): Ignore negative values.
+ (WebCore::TextTrackCue::setEndTime): Ignore negative values.
+ * html/track/TextTrackCueList.cpp:
+ (WebCore::TextTrackCueList::add): Add ASSERTs to check startTime and
+ endTime are positive.
+
2012-08-03 Sheriff Bot <[email protected]>
Unreviewed, rolling out r124594.
Modified: trunk/Source/WebCore/html/track/TextTrack.cpp (124644 => 124645)
--- trunk/Source/WebCore/html/track/TextTrack.cpp 2012-08-03 20:03:57 UTC (rev 124644)
+++ trunk/Source/WebCore/html/track/TextTrack.cpp 2012-08-03 20:08:53 UTC (rev 124645)
@@ -198,6 +198,10 @@
RefPtr<TextTrackCue> cue = prpCue;
+ // TODO(93143): Add spec-compliant behavior for negative time values.
+ if (cue->startTime() < 0 || cue->endTime() < 0)
+ return;
+
// 4.8.10.12.4 Text track API
// The addCue(cue) method of TextTrack objects, when invoked, must run the following steps:
Modified: trunk/Source/WebCore/html/track/TextTrackCue.cpp (124644 => 124645)
--- trunk/Source/WebCore/html/track/TextTrackCue.cpp 2012-08-03 20:03:57 UTC (rev 124644)
+++ trunk/Source/WebCore/html/track/TextTrackCue.cpp 2012-08-03 20:08:53 UTC (rev 124645)
@@ -168,7 +168,8 @@
void TextTrackCue::setStartTime(double value)
{
- if (m_startTime == value)
+ // TODO(93143): Add spec-compliant behavior for negative time values.
+ if (m_startTime == value || value < 0)
return;
cueWillChange();
@@ -178,7 +179,8 @@
void TextTrackCue::setEndTime(double value)
{
- if (m_endTime == value)
+ // TODO(93143): Add spec-compliant behavior for negative time values.
+ if (m_endTime == value || value < 0)
return;
cueWillChange();
Modified: trunk/Source/WebCore/html/track/TextTrackCueList.cpp (124644 => 124645)
--- trunk/Source/WebCore/html/track/TextTrackCueList.cpp 2012-08-03 20:03:57 UTC (rev 124644)
+++ trunk/Source/WebCore/html/track/TextTrackCueList.cpp 2012-08-03 20:08:53 UTC (rev 124645)
@@ -77,6 +77,9 @@
bool TextTrackCueList::add(PassRefPtr<TextTrackCue> cue)
{
+ ASSERT(cue->startTime() >= 0);
+ ASSERT(cue->endTime() >= 0);
+
return add(cue, 0, m_list.size());
}