- Revision
- 229015
- Author
- [email protected]
- Date
- 2018-02-26 05:57:04 -0800 (Mon, 26 Feb 2018)
Log Message
Merge r228886 - VTTCue constructor should use 'double' type for startTime / endTime
https://bugs.webkit.org/show_bug.cgi?id=182988
Reviewed by Eric Carlson.
Source/WebCore:
VTTCue constructor should use 'double' type for startTime / endTime, not
'unrestricted double':
- https://w3c.github.io/webvtt/#the-vttcue-interface
Otherwise, we end up potentially returning NaN for TextTrackCue.startTime / endTime,
even though those correctly use type 'double':
- https://html.spec.whatwg.org/multipage/media.html#texttrackcue
The new behavior is consistent with Firefox and Chrome.
No new tests, updated existing test.
* bindings/js/JSDOMConvertNumbers.h:
(WebCore::JSConverter<IDLDouble>::convert):
Add assertion to make sure our implementation never tries to return NaN
for an IDL attribute of type 'double'. This would be invalid as per Web
IDL spec and would crash if the NaN being returned was impure as JSValue
could not store it as a double.
* html/track/VTTCue.idl:
Update constructor parameters to use 'double' type instead of 'unrestricted
double', as per:
- https://w3c.github.io/webvtt/#the-vttcue-interface
LayoutTests:
Update existing test to reflect behavior change.
* media/track/track-add-remove-cue-expected.txt:
* media/track/track-add-remove-cue.html:
Modified Paths
Diff
Modified: releases/WebKitGTK/webkit-2.20/LayoutTests/ChangeLog (229014 => 229015)
--- releases/WebKitGTK/webkit-2.20/LayoutTests/ChangeLog 2018-02-26 13:37:55 UTC (rev 229014)
+++ releases/WebKitGTK/webkit-2.20/LayoutTests/ChangeLog 2018-02-26 13:57:04 UTC (rev 229015)
@@ -1,3 +1,15 @@
+2018-02-21 Chris Dumez <[email protected]>
+
+ VTTCue constructor should use 'double' type for startTime / endTime
+ https://bugs.webkit.org/show_bug.cgi?id=182988
+
+ Reviewed by Eric Carlson.
+
+ Update existing test to reflect behavior change.
+
+ * media/track/track-add-remove-cue-expected.txt:
+ * media/track/track-add-remove-cue.html:
+
2018-02-20 Chris Dumez <[email protected]>
Crash under JSC::JSCell::toNumber(JSC::ExecState*)
Modified: releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-add-remove-cue-expected.txt (229014 => 229015)
--- releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-add-remove-cue-expected.txt 2018-02-26 13:37:55 UTC (rev 229014)
+++ releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-add-remove-cue-expected.txt 2018-02-26 13:57:04 UTC (rev 229015)
@@ -48,14 +48,10 @@
EXPECTED (newCue.align == 'middle') OK
*** Create an old-style cue with an id.
-RUN(oldStyleCue = new VTTCue('sausage-cue', 33, 3.4, 'Sausage?'))
-EXPECTED (oldStyleCue.id == '') OK
-EXPECTED (oldStyleCue.startTime.toString() == 'NaN') OK
-EXPECTED (oldStyleCue.endTime == '33') OK
-*** Make sure the old-style cue is not inserted because its start time is not a number.
+RUN(invalidCue = new VTTCue('sausage-cue', 33, 3.4, 'Sausage?'))
+TypeError: The provided value is non-finite
+EXPECTED (window.invalidCue == 'undefined') OK
EXPECTED (testTrack.track.cues.length == '5') OK
-RUN(testTrack.track.addCue(oldStyleCue))
-EXPECTED (testTrack.track.cues.length == '5') OK
*** Remove a cue created with addCue().
RUN(testTrack.track.removeCue(textCue))
Modified: releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-add-remove-cue.html (229014 => 229015)
--- releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-add-remove-cue.html 2018-02-26 13:37:55 UTC (rev 229014)
+++ releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-add-remove-cue.html 2018-02-26 13:57:04 UTC (rev 229015)
@@ -62,14 +62,10 @@
testExpected("newCue.align", "middle");
consoleWrite("<br>*** Create an old-style cue with an id.");
- run("oldStyleCue = new VTTCue('sausage-cue', 33, 3.4, 'Sausage?')");
- testExpected("oldStyleCue.id", "");
- testExpected("oldStyleCue.startTime.toString()", "NaN");
- testExpected("oldStyleCue.endTime", 33);
- consoleWrite("*** Make sure the old-style cue is not inserted because its start time is not a number.");
+ run("invalidCue = new VTTCue('sausage-cue', 33, 3.4, 'Sausage?')");
+ testExpected("window.invalidCue", undefined);
+
testExpected("testTrack.track.cues.length", 5);
- run("testTrack.track.addCue(oldStyleCue)");
- testExpected("testTrack.track.cues.length", 5);
consoleWrite("<br>*** Remove a cue created with addCue().");
run("testTrack.track.removeCue(textCue)");
Modified: releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-cue-negative-timestamp-expected.txt (229014 => 229015)
--- releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-cue-negative-timestamp-expected.txt 2018-02-26 13:37:55 UTC (rev 229014)
+++ releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-cue-negative-timestamp-expected.txt 2018-02-26 13:57:04 UTC (rev 229015)
@@ -3,13 +3,13 @@
Test that cues with negative startTime are not added:
EXPECTED (testTrack.track.cues.length == '4') OK
-RUN(textCue = new VTTCue('sausage-cue', -3439332606, 3.4, 'Sausage?'))
+RUN(textCue = new VTTCue(-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 VTTCue('pepperoni-cue', -110, -3.4, 'Pepperoni?'))
+RUN(textCue = new VTTCue(-110, -3.4, 'Pepperoni?'))
RUN(testTrack.track.addCue(textCue))
EXPECTED (testTrack.track.cues.length == '4') OK
Modified: releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-cue-negative-timestamp.html (229014 => 229015)
--- releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-cue-negative-timestamp.html 2018-02-26 13:37:55 UTC (rev 229014)
+++ releases/WebKitGTK/webkit-2.20/LayoutTests/media/track/track-cue-negative-timestamp.html 2018-02-26 13:57:04 UTC (rev 229015)
@@ -10,13 +10,13 @@
{
consoleWrite("Test that cues with negative startTime are not added:");
testExpected("testTrack.track.cues.length", 4);
- run("textCue = new VTTCue('sausage-cue', -3439332606, 3.4, 'Sausage?')");
+ run("textCue = new VTTCue(-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 VTTCue('pepperoni-cue', -110, -3.4, 'Pepperoni?')");
+ run("textCue = new VTTCue(-110, -3.4, 'Pepperoni?')");
run("testTrack.track.addCue(textCue)");
testExpected("testTrack.track.cues.length", 4);
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog (229014 => 229015)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog 2018-02-26 13:37:55 UTC (rev 229014)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog 2018-02-26 13:57:04 UTC (rev 229015)
@@ -1,3 +1,34 @@
+2018-02-21 Chris Dumez <[email protected]>
+
+ VTTCue constructor should use 'double' type for startTime / endTime
+ https://bugs.webkit.org/show_bug.cgi?id=182988
+
+ Reviewed by Eric Carlson.
+
+ VTTCue constructor should use 'double' type for startTime / endTime, not
+ 'unrestricted double':
+ - https://w3c.github.io/webvtt/#the-vttcue-interface
+
+ Otherwise, we end up potentially returning NaN for TextTrackCue.startTime / endTime,
+ even though those correctly use type 'double':
+ - https://html.spec.whatwg.org/multipage/media.html#texttrackcue
+
+ The new behavior is consistent with Firefox and Chrome.
+
+ No new tests, updated existing test.
+
+ * bindings/js/JSDOMConvertNumbers.h:
+ (WebCore::JSConverter<IDLDouble>::convert):
+ Add assertion to make sure our implementation never tries to return NaN
+ for an IDL attribute of type 'double'. This would be invalid as per Web
+ IDL spec and would crash if the NaN being returned was impure as JSValue
+ could not store it as a double.
+
+ * html/track/VTTCue.idl:
+ Update constructor parameters to use 'double' type instead of 'unrestricted
+ double', as per:
+ - https://w3c.github.io/webvtt/#the-vttcue-interface
+
2018-02-21 Zalan Bujtas <[email protected]>
[RenderTreeBuilder] Move RenderTextFragment::willBeRemoved() mutation logic to RenderTreeBuilder
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/bindings/js/JSDOMConvertNumbers.h (229014 => 229015)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/bindings/js/JSDOMConvertNumbers.h 2018-02-26 13:37:55 UTC (rev 229014)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/bindings/js/JSDOMConvertNumbers.h 2018-02-26 13:57:04 UTC (rev 229015)
@@ -360,6 +360,7 @@
static JSC::JSValue convert(Type value)
{
+ ASSERT(!std::isnan(value));
return JSC::jsNumber(value);
}
};
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/html/track/VTTCue.idl (229014 => 229015)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/html/track/VTTCue.idl 2018-02-26 13:37:55 UTC (rev 229014)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/html/track/VTTCue.idl 2018-02-26 13:57:04 UTC (rev 229015)
@@ -25,7 +25,7 @@
[
Conditional=VIDEO_TRACK,
- Constructor(unrestricted double startTime, unrestricted double endTime, DOMString text),
+ Constructor(double startTime, double endTime, DOMString text),
ConstructorCallWith=ScriptExecutionContext,
JSGenerateToJSObject,
JSGenerateToNativeObject,