<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[210559] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/210559">210559</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2017-01-10 13:59:15 -0800 (Tue, 10 Jan 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Make Event.initEvent()'s first parameter mandatory
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
&quot;undefined&quot;.

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.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoredomEventidl">trunk/Source/WebCore/dom/Event.idl</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfasteventsinitEventparametersexpectedtxt">trunk/LayoutTests/fast/events/initEvent-parameters-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasteventsinitEventparametershtml">trunk/LayoutTests/fast/events/initEvent-parameters.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (210558 => 210559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2017-01-10 21:13:33 UTC (rev 210558)
+++ trunk/LayoutTests/ChangeLog        2017-01-10 21:59:15 UTC (rev 210559)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2017-01-10  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        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.
+
</ins><span class="cx"> 2017-01-10  Commit Queue  &lt;commit-queue@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r210537.
</span></span></pre></div>
<a id="trunkLayoutTestsfasteventsinitEventparametersexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/events/initEvent-parameters-expected.txt (0 => 210559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/initEvent-parameters-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/events/initEvent-parameters-expected.txt        2017-01-10 21:59:15 UTC (rev 210559)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+Tests that Event.initEvent()'s first parameter is mandatory.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS event.initEvent() threw exception TypeError: Not enough arguments.
+PASS event.initEvent('click') did not throw exception.
+PASS event.type is &quot;click&quot;
+PASS event.bubbles is false
+PASS event.cancelable is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfasteventsinitEventparametershtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/events/initEvent-parameters.html (0 => 210559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/initEvent-parameters.html                                (rev 0)
+++ trunk/LayoutTests/fast/events/initEvent-parameters.html        2017-01-10 21:59:15 UTC (rev 210559)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+description(&quot;Tests that Event.initEvent()'s first parameter is mandatory.&quot;);
+var event = document.createEvent(&quot;Event&quot;);
+shouldThrowErrorName(&quot;event.initEvent()&quot;, &quot;TypeError&quot;);
+shouldNotThrow(&quot;event.initEvent('click')&quot;);
+shouldBeEqualToString(&quot;event.type&quot;, &quot;click&quot;);
+shouldBeFalse(&quot;event.bubbles&quot;);
+shouldBeFalse(&quot;event.cancelable&quot;);
+&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (210558 => 210559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2017-01-10 21:13:33 UTC (rev 210558)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2017-01-10 21:59:15 UTC (rev 210559)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2017-01-10  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        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:
+
</ins><span class="cx"> 2017-01-06  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rebaseline W3C test after r210468.
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt (210558 => 210559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2017-01-10 21:13:33 UTC (rev 210558)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2017-01-10 21:59:15 UTC (rev 210559)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> PASS Event interface: document.createEvent(&quot;Event&quot;) must have own property &quot;isTrusted&quot; 
</span><span class="cx"> PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;timeStamp&quot; with the proper type (15) 
</span><span class="cx"> PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;initEvent&quot; with the proper type (16) 
</span><del>-FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on document.createEvent(&quot;Event&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
</del><ins>+FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on document.createEvent(&quot;Event&quot;) with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
</ins><span class="cx">             fn.apply(obj, args);
</span><span class="cx">         }&quot; did not throw
</span><span class="cx"> PASS Event must be primary interface of new Event(&quot;foo&quot;) 
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> PASS Event interface: new Event(&quot;foo&quot;) must have own property &quot;isTrusted&quot; 
</span><span class="cx"> PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;timeStamp&quot; with the proper type (15) 
</span><span class="cx"> PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;initEvent&quot; with the proper type (16) 
</span><del>-FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new Event(&quot;foo&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
</del><ins>+FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new Event(&quot;foo&quot;) with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
</ins><span class="cx">             fn.apply(obj, args);
</span><span class="cx">         }&quot; did not throw
</span><span class="cx"> PASS CustomEvent interface: existence and properties of interface object 
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx"> PASS Event interface: new CustomEvent(&quot;foo&quot;) must have own property &quot;isTrusted&quot; 
</span><span class="cx"> PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;timeStamp&quot; with the proper type (15) 
</span><span class="cx"> PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;initEvent&quot; with the proper type (16) 
</span><del>-FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new CustomEvent(&quot;foo&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
</del><ins>+FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new CustomEvent(&quot;foo&quot;) with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
</ins><span class="cx">             fn.apply(obj, args);
</span><span class="cx">         }&quot; did not throw
</span><span class="cx"> PASS EventTarget interface: existence and properties of interface object 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (210558 => 210559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-01-10 21:13:33 UTC (rev 210558)
+++ trunk/Source/WebCore/ChangeLog        2017-01-10 21:59:15 UTC (rev 210559)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2017-01-10  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        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
+        &quot;undefined&quot;.
+
+        Test: fast/events/initEvent-parameters.html
+
+        * dom/Event.idl:
+
</ins><span class="cx"> 2017-01-10  Commit Queue  &lt;commit-queue@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r210537.
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Event.idl (210558 => 210559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Event.idl        2017-01-10 21:13:33 UTC (rev 210558)
+++ trunk/Source/WebCore/dom/Event.idl        2017-01-10 21:59:15 UTC (rev 210559)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">     void stopPropagation();
</span><span class="cx">     void preventDefault();
</span><span class="cx"> 
</span><del>-    void initEvent(optional DOMString type = &quot;undefined&quot;, optional boolean bubbles = false, optional boolean cancelable = false);
</del><ins>+    void initEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false);
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute boolean defaultPrevented;
</span><span class="cx">     void stopImmediatePropagation();
</span></span></pre>
</div>
</div>

</body>
</html>