Title: [124645] trunk
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());
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to