Make Event.initEvent()'s first parameter mandatory
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Jan 2017 21:59:15 +0000 (21:59 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Jan 2017 21:59:15 +0000 (21:59 +0000)
https://bugs.webkit.org/show_bug.cgi?id=166894

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline existing W3C test now that we're closing to the specification.

* web-platform-tests/dom/interfaces-expected.txt:

Source/WebCore:

Make Event.initEvent()'s first parameter mandatory. As per the
specification, all parameters should be mandatory and we are
currently dicussing the possibility of making them optional in
the specification. However, having the first parameter optional
makes little sense as it would set the event's type to the string
"undefined".

Test: fast/events/initEvent-parameters.html

* dom/Event.idl:

LayoutTests:

Add layout test coverage.

* fast/events/initEvent-parameters-expected.txt: Added.
* fast/events/initEvent-parameters.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210559 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/events/initEvent-parameters-expected.txt [new file with mode: 0644]
LayoutTests/fast/events/initEvent-parameters.html [new file with mode: 0644]
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/dom/Event.idl

index 52402a7..19c223b 100644 (file)
@@ -1,3 +1,15 @@
+2017-01-10  Chris Dumez  <cdumez@apple.com>
+
+        Make Event.initEvent()'s first parameter mandatory
+        https://bugs.webkit.org/show_bug.cgi?id=166894
+
+        Reviewed by Alex Christensen.
+
+        Add layout test coverage.
+
+        * fast/events/initEvent-parameters-expected.txt: Added.
+        * fast/events/initEvent-parameters.html: Added.
+
 2017-01-10  Commit Queue  <commit-queue@webkit.org>
 
         Unreviewed, rolling out r210537.
diff --git a/LayoutTests/fast/events/initEvent-parameters-expected.txt b/LayoutTests/fast/events/initEvent-parameters-expected.txt
new file mode 100644 (file)
index 0000000..281fbab
--- /dev/null
@@ -0,0 +1,14 @@
+Tests that Event.initEvent()'s first parameter is mandatory.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS event.initEvent() threw exception TypeError: Not enough arguments.
+PASS event.initEvent('click') did not throw exception.
+PASS event.type is "click"
+PASS event.bubbles is false
+PASS event.cancelable is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/events/initEvent-parameters.html b/LayoutTests/fast/events/initEvent-parameters.html
new file mode 100644 (file)
index 0000000..c9bb9d1
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="../../resources/js-test-pre.js"></script>
+<script>
+description("Tests that Event.initEvent()'s first parameter is mandatory.");
+var event = document.createEvent("Event");
+shouldThrowErrorName("event.initEvent()", "TypeError");
+shouldNotThrow("event.initEvent('click')");
+shouldBeEqualToString("event.type", "click");
+shouldBeFalse("event.bubbles");
+shouldBeFalse("event.cancelable");
+</script>
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
index 052e3be..f29da4f 100644 (file)
@@ -1,3 +1,14 @@
+2017-01-10  Chris Dumez  <cdumez@apple.com>
+
+        Make Event.initEvent()'s first parameter mandatory
+        https://bugs.webkit.org/show_bug.cgi?id=166894
+
+        Reviewed by Alex Christensen.
+
+        Rebaseline existing W3C test now that we're closing to the specification.
+
+        * web-platform-tests/dom/interfaces-expected.txt:
+
 2017-01-06  Chris Dumez  <cdumez@apple.com>
 
         Unreviewed, rebaseline W3C test after r210468.
index 0a55713..77a3f53 100644 (file)
@@ -46,7 +46,7 @@ PASS Event interface: document.createEvent("Event") must inherit property "defau
 PASS Event interface: document.createEvent("Event") must have own property "isTrusted" 
 PASS Event interface: document.createEvent("Event") must inherit property "timeStamp" with the proper type (15) 
 PASS Event interface: document.createEvent("Event") must inherit property "initEvent" with the proper type (16) 
-FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on document.createEvent("Event") with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on document.createEvent("Event") with too few arguments must throw TypeError assert_throws: Called with 1 arguments function "function () {
             fn.apply(obj, args);
         }" did not throw
 PASS Event must be primary interface of new Event("foo") 
@@ -68,7 +68,7 @@ PASS Event interface: new Event("foo") must inherit property "defaultPrevented"
 PASS Event interface: new Event("foo") must have own property "isTrusted" 
 PASS Event interface: new Event("foo") must inherit property "timeStamp" with the proper type (15) 
 PASS Event interface: new Event("foo") must inherit property "initEvent" with the proper type (16) 
-FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new Event("foo") with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new Event("foo") with too few arguments must throw TypeError assert_throws: Called with 1 arguments function "function () {
             fn.apply(obj, args);
         }" did not throw
 PASS CustomEvent interface: existence and properties of interface object 
@@ -100,7 +100,7 @@ PASS Event interface: new CustomEvent("foo") must inherit property "defaultPreve
 PASS Event interface: new CustomEvent("foo") must have own property "isTrusted" 
 PASS Event interface: new CustomEvent("foo") must inherit property "timeStamp" with the proper type (15) 
 PASS Event interface: new CustomEvent("foo") must inherit property "initEvent" with the proper type (16) 
-FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new CustomEvent("foo") with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new CustomEvent("foo") with too few arguments must throw TypeError assert_throws: Called with 1 arguments function "function () {
             fn.apply(obj, args);
         }" did not throw
 PASS EventTarget interface: existence and properties of interface object 
index b1ebfc0..73c5f65 100644 (file)
@@ -1,3 +1,21 @@
+2017-01-10  Chris Dumez  <cdumez@apple.com>
+
+        Make Event.initEvent()'s first parameter mandatory
+        https://bugs.webkit.org/show_bug.cgi?id=166894
+
+        Reviewed by Alex Christensen.
+
+        Make Event.initEvent()'s first parameter mandatory. As per the
+        specification, all parameters should be mandatory and we are
+        currently dicussing the possibility of making them optional in
+        the specification. However, having the first parameter optional
+        makes little sense as it would set the event's type to the string
+        "undefined".
+
+        Test: fast/events/initEvent-parameters.html
+
+        * dom/Event.idl:
+
 2017-01-10  Commit Queue  <commit-queue@webkit.org>
 
         Unreviewed, rolling out r210537.
index ff202e0..aa073fd 100644 (file)
@@ -66,7 +66,7 @@ typedef unsigned long long DOMTimeStamp;
     void stopPropagation();
     void preventDefault();
 
-    void initEvent(optional DOMString type = "undefined", optional boolean bubbles = false, optional boolean cancelable = false);
+    void initEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false);
 
     readonly attribute boolean defaultPrevented;
     void stopImmediatePropagation();