<!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>[207041] 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/207041">207041</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-10-10 21:43:26 -0700 (Mon, 10 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Update WheelEvent / MouseEvent to stop using legacy [ConstructorTemplate=Event]
https://bugs.webkit.org/show_bug.cgi?id=163254

Reviewed by Darin Adler.

Source/WebCore:

Update WheelEvent / MouseEvent to stop using legacy [ConstructorTemplate=Event]
and use a regular constructor instead, as in the specification:
- https://www.w3.org/TR/uievents/#interface-mouseevent
- https://www.w3.org/TR/uievents/#interface-wheelevent

* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateDictionaryHeader):
Fix our broken dependency tracking when it comes to dictionaries.

* dom/MouseEvent.cpp:
(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):
* dom/MouseEvent.h:
* dom/MouseEvent.idl:
* dom/MouseEventInit.h: Added.
* dom/MouseEventInit.idl: Added.
* dom/MouseRelatedEvent.cpp:
(WebCore::MouseRelatedEvent::MouseRelatedEvent):
* dom/MouseRelatedEvent.h:
* dom/UIEventWithKeyState.h:
(WebCore::UIEventWithKeyState::UIEventWithKeyState):
* dom/WheelEvent.cpp:
(WebCore::WheelEvent::WheelEvent):
* dom/WheelEvent.h:
* dom/WheelEvent.idl:

LayoutTests:

Update existing tests now that:
- Exception messages are now slightly different in some cases.
- We now throw when an invalid relatedTarget type is passed in the dictionary.

* fast/events/constructors/mouse-event-constructor.html:
* fast/events/constructors/wheel-event-constructor.html:
* platform/mac/fast/events/constructors/mouse-event-constructor-expected.txt:
* platform/mac/fast/events/constructors/wheel-event-constructor-expected.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfasteventsconstructorsmouseeventconstructorhtml">trunk/LayoutTests/fast/events/constructors/mouse-event-constructor.html</a></li>
<li><a href="#trunkLayoutTestsfasteventsconstructorswheeleventconstructorhtml">trunk/LayoutTests/fast/events/constructors/wheel-event-constructor.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacfasteventsconstructorsmouseeventconstructorexpectedtxt">trunk/LayoutTests/platform/mac/fast/events/constructors/mouse-event-constructor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfasteventsconstructorswheeleventconstructorexpectedtxt">trunk/LayoutTests/platform/mac/fast/events/constructors/wheel-event-constructor-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcescpp">trunk/Source/WebCore/DerivedSources.cpp</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCoredomMouseEventcpp">trunk/Source/WebCore/dom/MouseEvent.cpp</a></li>
<li><a href="#trunkSourceWebCoredomMouseEventh">trunk/Source/WebCore/dom/MouseEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomMouseEventidl">trunk/Source/WebCore/dom/MouseEvent.idl</a></li>
<li><a href="#trunkSourceWebCoredomMouseRelatedEventcpp">trunk/Source/WebCore/dom/MouseRelatedEvent.cpp</a></li>
<li><a href="#trunkSourceWebCoredomMouseRelatedEventh">trunk/Source/WebCore/dom/MouseRelatedEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomUIEventWithKeyStateh">trunk/Source/WebCore/dom/UIEventWithKeyState.h</a></li>
<li><a href="#trunkSourceWebCoredomWheelEventcpp">trunk/Source/WebCore/dom/WheelEvent.cpp</a></li>
<li><a href="#trunkSourceWebCoredomWheelEventh">trunk/Source/WebCore/dom/WheelEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomWheelEventidl">trunk/Source/WebCore/dom/WheelEvent.idl</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoredomMouseEventInith">trunk/Source/WebCore/dom/MouseEventInit.h</a></li>
<li><a href="#trunkSourceWebCoredomMouseEventInitidl">trunk/Source/WebCore/dom/MouseEventInit.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/LayoutTests/ChangeLog        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -1,5 +1,21 @@
</span><span class="cx"> 2016-10-10  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Update WheelEvent / MouseEvent to stop using legacy [ConstructorTemplate=Event]
+        https://bugs.webkit.org/show_bug.cgi?id=163254
+
+        Reviewed by Darin Adler.
+
+        Update existing tests now that:
+        - Exception messages are now slightly different in some cases.
+        - We now throw when an invalid relatedTarget type is passed in the dictionary.
+
+        * fast/events/constructors/mouse-event-constructor.html:
+        * fast/events/constructors/wheel-event-constructor.html:
+        * platform/mac/fast/events/constructors/mouse-event-constructor-expected.txt:
+        * platform/mac/fast/events/constructors/wheel-event-constructor-expected.txt:
+
+2016-10-10  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Add support for languagechange event
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=163222
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfasteventsconstructorsmouseeventconstructorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/events/constructors/mouse-event-constructor.html (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/constructors/mouse-event-constructor.html        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/LayoutTests/fast/events/constructors/mouse-event-constructor.html        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -136,19 +136,19 @@
</span><span class="cx"> shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: window }).relatedTarget&quot;, &quot;window&quot;);
</span><span class="cx"> 
</span><span class="cx"> // Invalid objects.
</span><del>-shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: testObject }).relatedTarget&quot;, &quot;null&quot;);
</del><ins>+shouldThrowErrorName(&quot;new MouseEvent('eventType', { relatedTarget: testObject })&quot;, &quot;TypeError&quot;);
</ins><span class="cx"> shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: undefined }).relatedTarget&quot;, &quot;null&quot;);
</span><span class="cx"> shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: null }).relatedTarget&quot;, &quot;null&quot;);
</span><del>-shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: false }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: true }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: '' }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: 'chocolate' }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: 12345 }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: 18446744073709551615 }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new MouseEvent('eventType', { relatedTarget: NaN }).relatedTarget&quot;, &quot;null&quot;);
</del><ins>+shouldThrowErrorName(&quot;new MouseEvent('eventType', { relatedTarget: false })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new MouseEvent('eventType', { relatedTarget: true })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new MouseEvent('eventType', { relatedTarget: '' })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new MouseEvent('eventType', { relatedTarget: 'chocolate' })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new MouseEvent('eventType', { relatedTarget: 12345 })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new MouseEvent('eventType', { relatedTarget: 18446744073709551615 })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new MouseEvent('eventType', { relatedTarget: NaN })&quot;, &quot;TypeError&quot;);
</ins><span class="cx"> // Note that valueOf() is not called, when the left hand side is evaluated.
</span><del>-shouldBeFalse(&quot;new MouseEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } }).relatedTarget == testDiv&quot;);
-shouldBe(&quot;new MouseEvent('eventType', { get relatedTarget() { return 123; } }).relatedTarget&quot;, &quot;null&quot;);
</del><ins>+shouldThrowErrorName(&quot;new MouseEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new MouseEvent('eventType', { get relatedTarget() { return 123; } })&quot;, &quot;TypeError&quot;);
</ins><span class="cx"> shouldThrow(&quot;new MouseEvent('eventType', { get relatedTarget() { throw 'MouseEvent Error'; } })&quot;);
</span><span class="cx"> 
</span><span class="cx"> // All initializers are passed.
</span></span></pre></div>
<a id="trunkLayoutTestsfasteventsconstructorswheeleventconstructorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/events/constructors/wheel-event-constructor.html (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/constructors/wheel-event-constructor.html        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/LayoutTests/fast/events/constructors/wheel-event-constructor.html        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -172,19 +172,19 @@
</span><span class="cx"> shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: xhr }).relatedTarget&quot;, &quot;xhr&quot;);
</span><span class="cx"> 
</span><span class="cx"> // Invalid objects.
</span><del>-shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: testObject }).relatedTarget&quot;, &quot;null&quot;);
</del><ins>+shouldThrowErrorName(&quot;new WheelEvent('eventType', { relatedTarget: testObject })&quot;, &quot;TypeError&quot;);
</ins><span class="cx"> shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: undefined }).relatedTarget&quot;, &quot;null&quot;);
</span><span class="cx"> shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: null }).relatedTarget&quot;, &quot;null&quot;);
</span><del>-shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: false }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: true }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: '' }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: 'chocolate' }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: 12345 }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: 18446744073709551615 }).relatedTarget&quot;, &quot;null&quot;);
-shouldBe(&quot;new WheelEvent('eventType', { relatedTarget: NaN }).relatedTarget&quot;, &quot;null&quot;);
</del><ins>+shouldThrowErrorName(&quot;new WheelEvent('eventType', { relatedTarget: false })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new WheelEvent('eventType', { relatedTarget: true })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new WheelEvent('eventType', { relatedTarget: '' })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new WheelEvent('eventType', { relatedTarget: 'chocolate' })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new WheelEvent('eventType', { relatedTarget: 12345 })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new WheelEvent('eventType', { relatedTarget: 18446744073709551615 })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new WheelEvent('eventType', { relatedTarget: NaN })&quot;, &quot;TypeError&quot;);
</ins><span class="cx"> // Note that valueOf() is not called, when the left hand side is evaluated.
</span><del>-shouldBeFalse(&quot;new WheelEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } }).relatedTarget == testDiv&quot;);
-shouldBe(&quot;new WheelEvent('eventType', { get relatedTarget() { return 123; } }).relatedTarget&quot;, &quot;null&quot;);
</del><ins>+shouldThrowErrorName(&quot;new WheelEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } })&quot;, &quot;TypeError&quot;);
+shouldThrowErrorName(&quot;new WheelEvent('eventType', { get relatedTarget() { return 123; } }).relatedTarget&quot;, &quot;TypeError&quot;);
</ins><span class="cx"> shouldThrow(&quot;new WheelEvent('eventType', { get relatedTarget() { throw 'WheelEvent Error'; } })&quot;);
</span><span class="cx"> 
</span><span class="cx"> // All initializers are passed.
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfasteventsconstructorsmouseeventconstructorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/events/constructors/mouse-event-constructor-expected.txt (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/events/constructors/mouse-event-constructor-expected.txt        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/LayoutTests/platform/mac/fast/events/constructors/mouse-event-constructor-expected.txt        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -23,19 +23,19 @@
</span><span class="cx"> PASS new MouseEvent('eventType', { cancelable: true }).cancelable is true
</span><span class="cx"> PASS new MouseEvent('eventType', { view: window }).view is window
</span><span class="cx"> PASS new MouseEvent('eventType', { view: this }).view is this
</span><del>-PASS new MouseEvent('eventType', { view: testObject }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new MouseEvent('eventType', { view: document }).view threw exception TypeError: Dictionary member is not of type Window.
</del><ins>+PASS new MouseEvent('eventType', { view: testObject }).view threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { view: document }).view threw exception TypeError: Type error.
</ins><span class="cx"> PASS new MouseEvent('eventType', { view: undefined }).view is null
</span><span class="cx"> PASS new MouseEvent('eventType', { view: null }).view is null
</span><del>-PASS new MouseEvent('eventType', { view: false }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new MouseEvent('eventType', { view: true }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new MouseEvent('eventType', { view: '' }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new MouseEvent('eventType', { view: 'chocolate' }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new MouseEvent('eventType', { view: 12345 }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new MouseEvent('eventType', { view: 18446744073709551615 }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new MouseEvent('eventType', { view: NaN }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new MouseEvent('eventType', { view: {valueOf: function () { return window; } } }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new MouseEvent('eventType', { get view() { return 123; } }).view threw exception TypeError: Dictionary member is not of type Window.
</del><ins>+PASS new MouseEvent('eventType', { view: false }).view threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { view: true }).view threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { view: '' }).view threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { view: 'chocolate' }).view threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { view: 12345 }).view threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { view: 18446744073709551615 }).view threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { view: NaN }).view threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { view: {valueOf: function () { return window; } } }).view threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { get view() { return 123; } }).view threw exception TypeError: Type error.
</ins><span class="cx"> PASS new MouseEvent('eventType', { get view() { throw 'MouseEvent Error'; } }) threw exception MouseEvent Error.
</span><span class="cx"> PASS new MouseEvent('eventType', { detail: 0 }).detail is 0
</span><span class="cx"> PASS new MouseEvent('eventType', { detail: 2147483647 }).detail is 2147483647
</span><span class="lines">@@ -176,18 +176,18 @@
</span><span class="cx"> PASS new MouseEvent('eventType', { relatedTarget: document }).relatedTarget is document
</span><span class="cx"> PASS new MouseEvent('eventType', { relatedTarget: xhr }).relatedTarget is xhr
</span><span class="cx"> PASS new MouseEvent('eventType', { relatedTarget: window }).relatedTarget is window
</span><del>-PASS new MouseEvent('eventType', { relatedTarget: testObject }).relatedTarget is null
</del><ins>+PASS new MouseEvent('eventType', { relatedTarget: testObject }) threw exception TypeError: Type error.
</ins><span class="cx"> PASS new MouseEvent('eventType', { relatedTarget: undefined }).relatedTarget is null
</span><span class="cx"> PASS new MouseEvent('eventType', { relatedTarget: null }).relatedTarget is null
</span><del>-PASS new MouseEvent('eventType', { relatedTarget: false }).relatedTarget is null
-PASS new MouseEvent('eventType', { relatedTarget: true }).relatedTarget is null
-PASS new MouseEvent('eventType', { relatedTarget: '' }).relatedTarget is null
-PASS new MouseEvent('eventType', { relatedTarget: 'chocolate' }).relatedTarget is null
-PASS new MouseEvent('eventType', { relatedTarget: 12345 }).relatedTarget is null
-PASS new MouseEvent('eventType', { relatedTarget: 18446744073709551615 }).relatedTarget is null
-PASS new MouseEvent('eventType', { relatedTarget: NaN }).relatedTarget is null
-PASS new MouseEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } }).relatedTarget == testDiv is false
-PASS new MouseEvent('eventType', { get relatedTarget() { return 123; } }).relatedTarget is null
</del><ins>+PASS new MouseEvent('eventType', { relatedTarget: false }) threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { relatedTarget: true }) threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { relatedTarget: '' }) threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { relatedTarget: 'chocolate' }) threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { relatedTarget: 12345 }) threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { relatedTarget: 18446744073709551615 }) threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { relatedTarget: NaN }) threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } }) threw exception TypeError: Type error.
+PASS new MouseEvent('eventType', { get relatedTarget() { return 123; } }) threw exception TypeError: Type error.
</ins><span class="cx"> PASS new MouseEvent('eventType', { get relatedTarget() { throw 'MouseEvent Error'; } }) threw exception MouseEvent Error.
</span><span class="cx"> PASS new MouseEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, screenX: 222, screenY: 333, clientX: 444, clientY: 555, ctrlKey: true, shiftKey: true, altKey: true, metaKey: true, button: 666, relatedTarget: testDiv }).bubbles is true
</span><span class="cx"> PASS new MouseEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, screenX: 222, screenY: 333, clientX: 444, clientY: 555, ctrlKey: true, shiftKey: true, altKey: true, metaKey: true, button: 666, relatedTarget: testDiv }).cancelable is true
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfasteventsconstructorswheeleventconstructorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/events/constructors/wheel-event-constructor-expected.txt (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/events/constructors/wheel-event-constructor-expected.txt        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/LayoutTests/platform/mac/fast/events/constructors/wheel-event-constructor-expected.txt        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -26,19 +26,19 @@
</span><span class="cx"> PASS new WheelEvent('eventType', { cancelable: true }).cancelable is true
</span><span class="cx"> PASS new WheelEvent('eventType', { view: window }).view is window
</span><span class="cx"> PASS new WheelEvent('eventType', { view: this }).view is this
</span><del>-PASS new WheelEvent('eventType', { view: testObject }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new WheelEvent('eventType', { view: document }).view threw exception TypeError: Dictionary member is not of type Window.
</del><ins>+PASS new WheelEvent('eventType', { view: testObject }).view threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { view: document }).view threw exception TypeError: Type error.
</ins><span class="cx"> PASS new WheelEvent('eventType', { view: undefined }).view is null
</span><span class="cx"> PASS new WheelEvent('eventType', { view: null }).view is null
</span><del>-PASS new WheelEvent('eventType', { view: false }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new WheelEvent('eventType', { view: true }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new WheelEvent('eventType', { view: '' }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new WheelEvent('eventType', { view: 'chocolate' }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new WheelEvent('eventType', { view: 12345 }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new WheelEvent('eventType', { view: 18446744073709551615 }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new WheelEvent('eventType', { view: NaN }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new WheelEvent('eventType', { view: {valueOf: function () { return window; } } }).view threw exception TypeError: Dictionary member is not of type Window.
-PASS new WheelEvent('eventType', { get view() { return 123; } }).view threw exception TypeError: Dictionary member is not of type Window.
</del><ins>+PASS new WheelEvent('eventType', { view: false }).view threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { view: true }).view threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { view: '' }).view threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { view: 'chocolate' }).view threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { view: 12345 }).view threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { view: 18446744073709551615 }).view threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { view: NaN }).view threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { view: {valueOf: function () { return window; } } }).view threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { get view() { return 123; } }).view threw exception TypeError: Type error.
</ins><span class="cx"> PASS new WheelEvent('eventType', { get view() { throw 'WheelEvent Error'; } }) threw exception WheelEvent Error.
</span><span class="cx"> PASS new WheelEvent('eventType', { detail: 0 }).detail is 0
</span><span class="cx"> PASS new WheelEvent('eventType', { detail: 2147483647 }).detail is 2147483647
</span><span class="lines">@@ -245,18 +245,18 @@
</span><span class="cx"> PASS new WheelEvent('eventType', { relatedTarget: testDiv }).relatedTarget is testDiv
</span><span class="cx"> PASS new WheelEvent('eventType', { relatedTarget: document }).relatedTarget is document
</span><span class="cx"> PASS new WheelEvent('eventType', { relatedTarget: xhr }).relatedTarget is xhr
</span><del>-PASS new WheelEvent('eventType', { relatedTarget: testObject }).relatedTarget is null
</del><ins>+PASS new WheelEvent('eventType', { relatedTarget: testObject }) threw exception TypeError: Type error.
</ins><span class="cx"> PASS new WheelEvent('eventType', { relatedTarget: undefined }).relatedTarget is null
</span><span class="cx"> PASS new WheelEvent('eventType', { relatedTarget: null }).relatedTarget is null
</span><del>-PASS new WheelEvent('eventType', { relatedTarget: false }).relatedTarget is null
-PASS new WheelEvent('eventType', { relatedTarget: true }).relatedTarget is null
-PASS new WheelEvent('eventType', { relatedTarget: '' }).relatedTarget is null
-PASS new WheelEvent('eventType', { relatedTarget: 'chocolate' }).relatedTarget is null
-PASS new WheelEvent('eventType', { relatedTarget: 12345 }).relatedTarget is null
-PASS new WheelEvent('eventType', { relatedTarget: 18446744073709551615 }).relatedTarget is null
-PASS new WheelEvent('eventType', { relatedTarget: NaN }).relatedTarget is null
-PASS new WheelEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } }).relatedTarget == testDiv is false
-PASS new WheelEvent('eventType', { get relatedTarget() { return 123; } }).relatedTarget is null
</del><ins>+PASS new WheelEvent('eventType', { relatedTarget: false }) threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { relatedTarget: true }) threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { relatedTarget: '' }) threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { relatedTarget: 'chocolate' }) threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { relatedTarget: 12345 }) threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { relatedTarget: 18446744073709551615 }) threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { relatedTarget: NaN }) threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { relatedTarget: {valueOf: function () { return testDiv; } } }) threw exception TypeError: Type error.
+PASS new WheelEvent('eventType', { get relatedTarget() { return 123; } }).relatedTarget threw exception TypeError: Type error.
</ins><span class="cx"> PASS new WheelEvent('eventType', { get relatedTarget() { throw 'WheelEvent Error'; } }) threw exception WheelEvent Error.
</span><span class="cx"> PASS new WheelEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, screenX: 222, screenY: 333, clientX: 444, clientY: 555, ctrlKey: true, shiftKey: true, altKey: true, metaKey: true, button: 666, relatedTarget: testDiv, wheelDeltaX: 777, wheelDeltaY: 888, deltaMode: WheelEvent.DOM_DELTA_PAGE }).bubbles is true
</span><span class="cx"> PASS new WheelEvent('eventType', { bubbles: true, cancelable: true, view: window, detail: 111, screenX: 222, screenY: 333, clientX: 444, clientY: 555, ctrlKey: true, shiftKey: true, altKey: true, metaKey: true, button: 666, relatedTarget: testDiv, wheelDeltaX: 777, wheelDeltaY: 888, deltaMode: WheelEvent.DOM_DELTA_PAGE }).cancelable is true
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -412,6 +412,7 @@
</span><span class="cx">     dom/MessageEvent.idl
</span><span class="cx">     dom/MessagePort.idl
</span><span class="cx">     dom/MouseEvent.idl
</span><ins>+    dom/MouseEventInit.idl
</ins><span class="cx">     dom/MutationEvent.idl
</span><span class="cx">     dom/MutationObserver.idl
</span><span class="cx">     dom/MutationRecord.idl
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/ChangeLog        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -1,5 +1,44 @@
</span><span class="cx"> 2016-10-10  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Update WheelEvent / MouseEvent to stop using legacy [ConstructorTemplate=Event]
+        https://bugs.webkit.org/show_bug.cgi?id=163254
+
+        Reviewed by Darin Adler.
+
+        Update WheelEvent / MouseEvent to stop using legacy [ConstructorTemplate=Event]
+        and use a regular constructor instead, as in the specification:
+        - https://www.w3.org/TR/uievents/#interface-mouseevent
+        - https://www.w3.org/TR/uievents/#interface-wheelevent
+
+        * CMakeLists.txt:
+        * DerivedSources.cpp:
+        * DerivedSources.make:
+        * WebCore.xcodeproj/project.pbxproj:
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateHeader):
+        (GenerateDictionaryHeader):
+        Fix our broken dependency tracking when it comes to dictionaries.
+
+        * dom/MouseEvent.cpp:
+        (WebCore::MouseEvent::create):
+        (WebCore::MouseEvent::MouseEvent):
+        * dom/MouseEvent.h:
+        * dom/MouseEvent.idl:
+        * dom/MouseEventInit.h: Added.
+        * dom/MouseEventInit.idl: Added.
+        * dom/MouseRelatedEvent.cpp:
+        (WebCore::MouseRelatedEvent::MouseRelatedEvent):
+        * dom/MouseRelatedEvent.h:
+        * dom/UIEventWithKeyState.h:
+        (WebCore::UIEventWithKeyState::UIEventWithKeyState):
+        * dom/WheelEvent.cpp:
+        (WebCore::WheelEvent::WheelEvent):
+        * dom/WheelEvent.h:
+        * dom/WheelEvent.idl:
+
+2016-10-10  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Add support for languagechange event
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=163222
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.cpp (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.cpp        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/DerivedSources.cpp        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -347,6 +347,7 @@
</span><span class="cx"> #include &quot;JSMessageEvent.cpp&quot;
</span><span class="cx"> #include &quot;JSMessagePort.cpp&quot;
</span><span class="cx"> #include &quot;JSMouseEvent.cpp&quot;
</span><ins>+#include &quot;JSMouseEventInit.cpp&quot;
</ins><span class="cx"> #include &quot;JSMutationEvent.cpp&quot;
</span><span class="cx"> #include &quot;JSMutationObserver.cpp&quot;
</span><span class="cx"> #include &quot;JSMutationRecord.cpp&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/DerivedSources.make        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -321,6 +321,7 @@
</span><span class="cx">     $(WebCore)/dom/MessageEvent.idl \
</span><span class="cx">     $(WebCore)/dom/MessagePort.idl \
</span><span class="cx">     $(WebCore)/dom/MouseEvent.idl \
</span><ins>+    $(WebCore)/dom/MouseEventInit.idl \
</ins><span class="cx">     $(WebCore)/dom/MutationEvent.idl \
</span><span class="cx">     $(WebCore)/dom/MutationObserver.idl \
</span><span class="cx">     $(WebCore)/dom/MutationRecord.idl \
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -2877,6 +2877,8 @@
</span><span class="cx">                 830519961BB0F11000F3772E /* HTMLTimeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 830519931BB0F0E700F3772E /* HTMLTimeElement.h */; };
</span><span class="cx">                 8306EFF11B8BCEA50031D032 /* NativeNodeFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8306EFF01B8BCE7C0031D032 /* NativeNodeFilter.cpp */; };
</span><span class="cx">                 830784B21C52EE2C00104D1D /* XMLDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 830784B11C52EE1900104D1D /* XMLDocument.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                830A36BC1DAC5FAD006D7D09 /* JSMouseEventInit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 830A36BA1DAC5FA7006D7D09 /* JSMouseEventInit.cpp */; };
+                830A36BD1DAC5FAD006D7D09 /* JSMouseEventInit.h in Headers */ = {isa = PBXBuildFile; fileRef = 830A36BB1DAC5FA7006D7D09 /* JSMouseEventInit.h */; };
</ins><span class="cx">                 83120C701C56F3F6001CB112 /* HTMLDataElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 831D1F291C56ECA000F5F6C0 /* HTMLDataElement.cpp */; };
</span><span class="cx">                 83120C711C56F3FB001CB112 /* HTMLDataElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 834B86A71C56E83A00F3F0E3 /* HTMLDataElement.h */; };
</span><span class="cx">                 832B843419D8E55100B26055 /* SVGAnimateElementBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 832B843319D8E55100B26055 /* SVGAnimateElementBase.h */; };
</span><span class="lines">@@ -2902,6 +2904,7 @@
</span><span class="cx">                 836FBCEA178C113200B21A15 /* SVGAnimatedTypeAnimator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 836FBCE9178C113200B21A15 /* SVGAnimatedTypeAnimator.cpp */; };
</span><span class="cx">                 836FBCEC178C117F00B21A15 /* SVGAnimatedProperty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 836FBCEB178C117F00B21A15 /* SVGAnimatedProperty.cpp */; };
</span><span class="cx">                 8372DB311A6780A800C697C5 /* DiagnosticLoggingResultType.h in Headers */ = {isa = PBXBuildFile; fileRef = 8372DB301A6780A800C697C5 /* DiagnosticLoggingResultType.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                83765F951DAC522F00C06537 /* MouseEventInit.h in Headers */ = {isa = PBXBuildFile; fileRef = 83765F941DAC521800C06537 /* MouseEventInit.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 8386A96D19F61B2E00E1EC4A /* StyleBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8386A96C19F61B2E00E1EC4A /* StyleBuilder.h */; };
</span><span class="cx">                 8386A97019F61E4F00E1EC4A /* StyleBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8386A96E19F61E4F00E1EC4A /* StyleBuilder.cpp */; };
</span><span class="cx">                 838867351D13BA5F003697D0 /* RenderObjectEnums.h in Headers */ = {isa = PBXBuildFile; fileRef = 838867341D13BA59003697D0 /* RenderObjectEnums.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -10023,6 +10026,8 @@
</span><span class="cx">                 8306EFF01B8BCE7C0031D032 /* NativeNodeFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NativeNodeFilter.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 830784B01C52EE1900104D1D /* XMLDocument.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = XMLDocument.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 830784B11C52EE1900104D1D /* XMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLDocument.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                830A36BA1DAC5FA7006D7D09 /* JSMouseEventInit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMouseEventInit.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                830A36BB1DAC5FA7006D7D09 /* JSMouseEventInit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMouseEventInit.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 831D1F291C56ECA000F5F6C0 /* HTMLDataElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLDataElement.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 8329DCC21C7A6AE300730B33 /* HTMLHyperlinkElementUtils.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLHyperlinkElementUtils.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 832B843319D8E55100B26055 /* SVGAnimateElementBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimateElementBase.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -10052,6 +10057,8 @@
</span><span class="cx">                 836FBCE9178C113200B21A15 /* SVGAnimatedTypeAnimator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedTypeAnimator.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 836FBCEB178C117F00B21A15 /* SVGAnimatedProperty.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedProperty.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 8372DB301A6780A800C697C5 /* DiagnosticLoggingResultType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiagnosticLoggingResultType.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                83765F931DAC521800C06537 /* MouseEventInit.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MouseEventInit.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                83765F941DAC521800C06537 /* MouseEventInit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MouseEventInit.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 8386A96C19F61B2E00E1EC4A /* StyleBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleBuilder.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 8386A96E19F61E4F00E1EC4A /* StyleBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleBuilder.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 838867341D13BA59003697D0 /* RenderObjectEnums.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderObjectEnums.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -19759,6 +19766,8 @@
</span><span class="cx">                                 E1ADEDD80E76BD93004A1A5E /* JSMessagePort.h */,
</span><span class="cx">                                 A86629CC09DA2B47009633A5 /* JSMouseEvent.cpp */,
</span><span class="cx">                                 A86629CB09DA2B47009633A5 /* JSMouseEvent.h */,
</span><ins>+                                830A36BA1DAC5FA7006D7D09 /* JSMouseEventInit.cpp */,
+                                830A36BB1DAC5FA7006D7D09 /* JSMouseEventInit.h */,
</ins><span class="cx">                                 65DF31E709D1CC60000BE325 /* JSMutationEvent.cpp */,
</span><span class="cx">                                 65DF31E809D1CC60000BE325 /* JSMutationEvent.h */,
</span><span class="cx">                                 1A0D573E0A5C7867007EDD4C /* JSOverflowEvent.cpp */,
</span><span class="lines">@@ -23234,6 +23243,8 @@
</span><span class="cx">                                 85031B2F0A44EFC700F992E0 /* MouseEvent.cpp */,
</span><span class="cx">                                 85031B300A44EFC700F992E0 /* MouseEvent.h */,
</span><span class="cx">                                 141B94E509EC4223000E9413 /* MouseEvent.idl */,
</span><ins>+                                83765F941DAC521800C06537 /* MouseEventInit.h */,
+                                83765F931DAC521800C06537 /* MouseEventInit.idl */,
</ins><span class="cx">                                 85031B310A44EFC700F992E0 /* MouseRelatedEvent.cpp */,
</span><span class="cx">                                 85031B320A44EFC700F992E0 /* MouseRelatedEvent.h */,
</span><span class="cx">                                 C6F0900114327B6100685849 /* MutationCallback.h */,
</span><span class="lines">@@ -26580,6 +26591,7 @@
</span><span class="cx">                                 97BC6A571505F081001B74AC /* SQLTransactionCoordinator.h in Headers */,
</span><span class="cx">                                 97BC6A581505F081001B74AC /* SQLTransactionErrorCallback.h in Headers */,
</span><span class="cx">                                 FE36FD1816C7826500F887C1 /* SQLTransactionState.h in Headers */,
</span><ins>+                                83765F951DAC522F00C06537 /* MouseEventInit.h in Headers */,
</ins><span class="cx">                                 FE36FD1716C7826500F887C1 /* SQLTransactionStateMachine.h in Headers */,
</span><span class="cx">                                 1A2E6E5A0CC55213004A2062 /* SQLValue.h in Headers */,
</span><span class="cx">                                 93F1996308245E59001E9ABC /* SSLKeyGenerator.h in Headers */,
</span><span class="lines">@@ -27042,6 +27054,7 @@
</span><span class="cx">                                 7CC289DF1AA0FE5D009A9CE3 /* URLRegistry.h in Headers */,
</span><span class="cx">                                 93D437A21D57B3FE00AB85EA /* URLUtils.h in Headers */,
</span><span class="cx">                                 A72763BF16689BFB002FCACB /* UserActionElementSet.h in Headers */,
</span><ins>+                                830A36BD1DAC5FAD006D7D09 /* JSMouseEventInit.h in Headers */,
</ins><span class="cx">                                 868160D618766A130021E79D /* UserActivity.h in Headers */,
</span><span class="cx">                                 26255F0318878E110006E1FD /* UserAgent.h in Headers */,
</span><span class="cx">                                 CDAB6D3117C9259500C60B34 /* UserAgentScripts.h in Headers */,
</span><span class="lines">@@ -27703,6 +27716,7 @@
</span><span class="cx">                                 37DDCD9E13844FFA0008B793 /* Archive.cpp in Sources */,
</span><span class="cx">                                 512DD8FA0D91E6AF000F89EE /* ArchiveFactory.cpp in Sources */,
</span><span class="cx">                                 512DD8FB0D91E6AF000F89EE /* ArchiveResource.cpp in Sources */,
</span><ins>+                                830A36BC1DAC5FAD006D7D09 /* JSMouseEventInit.cpp in Sources */,
</ins><span class="cx">                                 512DD8F70D91E6AF000F89EE /* ArchiveResourceCollection.cpp in Sources */,
</span><span class="cx">                                 49B3760C15C6C6840059131D /* ArrayValue.cpp in Sources */,
</span><span class="cx">                                 FD5686C913AC180200B69C68 /* AsyncAudioDecoder.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -1711,6 +1711,13 @@
</span><span class="cx">             my $currentInterface = shift;
</span><span class="cx">             push(@ancestors, $currentInterface-&gt;name);
</span><span class="cx">         }, 0);
</span><ins>+        for my $dictionary (@$dictionaries) {
+            my $parentDictionary = $dictionary-&gt;parent;
+            while (defined($parentDictionary)) {
+                push(@ancestors, $parentDictionary) if $codeGenerator-&gt;IsExternalDictionaryType($parentDictionary);
+                $parentDictionary = $codeGenerator-&gt;GetDictionaryByName($parentDictionary)-&gt;parent;
+            }
+        }
</ins><span class="cx">         push(@depsContent, &quot;$className.h : &quot;, join(&quot; &quot;, map { &quot;$_.idl&quot; } @ancestors), &quot;\n&quot;);
</span><span class="cx">         push(@depsContent, map { &quot;$_.idl :\n&quot; } @ancestors);
</span><span class="cx">     }
</span><span class="lines">@@ -4321,6 +4328,18 @@
</span><span class="cx">     push(@headerContent, &quot;\nnamespace WebCore {\n\n&quot;);
</span><span class="cx">     push(@headerContent, GenerateDictionaryHeaderContent($dictionary, $className));
</span><span class="cx">     push(@headerContent, &quot;} // namespace WebCore\n&quot;);
</span><ins>+    
+    # - Generate dependencies.
+    if ($writeDependencies) {
+        my @ancestors;
+        my $parentDictionary = $dictionary-&gt;parent;
+        while (defined($parentDictionary)) {
+            push(@ancestors, $parentDictionary) if $codeGenerator-&gt;IsExternalDictionaryType($parentDictionary);
+            $parentDictionary = $codeGenerator-&gt;GetDictionaryByName($parentDictionary)-&gt;parent;
+        }
+        push(@depsContent, &quot;$className.h : &quot;, join(&quot; &quot;, map { &quot;$_.idl&quot; } @ancestors), &quot;\n&quot;);
+        push(@depsContent, map { &quot;$_.idl :\n&quot; } @ancestors);
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> sub GenerateDictionaryImplementation
</span></span></pre></div>
<a id="trunkSourceWebCoredomMouseEventcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MouseEvent.cpp (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MouseEvent.cpp        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/dom/MouseEvent.cpp        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -33,9 +33,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-Ref&lt;MouseEvent&gt; MouseEvent::createForBindings(const AtomicString&amp; type, const MouseEventInit&amp; initializer)
</del><ins>+Ref&lt;MouseEvent&gt; MouseEvent::create(const AtomicString&amp; type, const MouseEventInit&amp; initializer, IsTrusted isTrusted)
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new MouseEvent(type, initializer));
</del><ins>+    return adoptRef(*new MouseEvent(type, initializer, isTrusted));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;MouseEvent&gt; MouseEvent::create(const AtomicString&amp; eventType, DOMWindow* view, const PlatformMouseEvent&amp; event, int detail, PassRefPtr&lt;Node&gt; relatedTarget)
</span><span class="lines">@@ -130,8 +130,8 @@
</span><span class="cx">     initCoordinates(IntPoint(clientX, clientY));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-MouseEvent::MouseEvent(const AtomicString&amp; eventType, const MouseEventInit&amp; initializer)
-    : MouseRelatedEvent(eventType, initializer)
</del><ins>+MouseEvent::MouseEvent(const AtomicString&amp; eventType, const MouseEventInit&amp; initializer, IsTrusted isTrusted)
+    : MouseRelatedEvent(eventType, initializer, isTrusted)
</ins><span class="cx">     , m_button(initializer.button == (unsigned short)-1 ? 0 : initializer.button)
</span><span class="cx">     , m_buttonDown(initializer.button != (unsigned short)-1)
</span><span class="cx">     , m_relatedTarget(initializer.relatedTarget)
</span></span></pre></div>
<a id="trunkSourceWebCoredomMouseEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MouseEvent.h (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MouseEvent.h        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/dom/MouseEvent.h        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -23,6 +23,7 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><ins>+#include &quot;MouseEventInit.h&quot;
</ins><span class="cx"> #include &quot;MouseRelatedEvent.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -30,13 +31,6 @@
</span><span class="cx"> class DataTransfer;
</span><span class="cx"> class PlatformMouseEvent;
</span><span class="cx"> 
</span><del>-struct MouseEventInit : public MouseRelatedEventInit {
-    int clientX { 0 };
-    int clientY { 0 };
-    unsigned short button { 0 };
-    RefPtr&lt;EventTarget&gt; relatedTarget;
-};
-
</del><span class="cx"> class MouseEvent : public MouseRelatedEvent {
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;MouseEvent&gt; create(const AtomicString&amp; type, bool canBubble, bool cancelable, double timestamp, DOMWindow*,
</span><span class="lines">@@ -67,7 +61,7 @@
</span><span class="cx">         return adoptRef(*new MouseEvent);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    static Ref&lt;MouseEvent&gt; createForBindings(const AtomicString&amp; eventType, const MouseEventInit&amp;);
</del><ins>+    static Ref&lt;MouseEvent&gt; create(const AtomicString&amp; eventType, const MouseEventInit&amp;, IsTrusted = IsTrusted::No);
</ins><span class="cx"> 
</span><span class="cx">     virtual ~MouseEvent();
</span><span class="cx"> 
</span><span class="lines">@@ -115,7 +109,7 @@
</span><span class="cx">         bool ctrlKey, bool altKey, bool shiftKey, bool metaKey,
</span><span class="cx">         unsigned short button, unsigned short syntheticClickType, PassRefPtr&lt;EventTarget&gt; relatedTarget);
</span><span class="cx"> 
</span><del>-    MouseEvent(const AtomicString&amp; type, const MouseEventInit&amp;);
</del><ins>+    MouseEvent(const AtomicString&amp; type, const MouseEventInit&amp;, IsTrusted);
</ins><span class="cx"> 
</span><span class="cx">     MouseEvent();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomMouseEventidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MouseEvent.idl (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MouseEvent.idl        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/dom/MouseEvent.idl        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -18,23 +18,22 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [
</span><del>-    ConstructorConditional=DOM4_EVENTS_CONSTRUCTOR,
-    ConstructorTemplate=Event,
</del><ins>+    Constructor(DOMString type, optional MouseEventInit eventInitDict),
</ins><span class="cx">     DoNotCheckConstants,
</span><span class="cx"> ] interface MouseEvent : UIEvent {
</span><span class="cx">     [Conditional=MOUSE_FORCE_EVENTS] const double WEBKIT_FORCE_AT_MOUSE_DOWN = 1;
</span><span class="cx">     [Conditional=MOUSE_FORCE_EVENTS] const double WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN = 2;
</span><span class="cx"> 
</span><del>-    [InitializedByEventConstructor] readonly attribute long screenX;
-    [InitializedByEventConstructor] readonly attribute long screenY;
-    [InitializedByEventConstructor] readonly attribute long clientX;
-    [InitializedByEventConstructor] readonly attribute long clientY;
-    [InitializedByEventConstructor] readonly attribute boolean ctrlKey;
-    [InitializedByEventConstructor] readonly attribute boolean shiftKey;
-    [InitializedByEventConstructor] readonly attribute boolean altKey;
-    [InitializedByEventConstructor] readonly attribute boolean metaKey;
-    [InitializedByEventConstructor] readonly attribute unsigned short button;
-    [InitializedByEventConstructor] readonly attribute EventTarget? relatedTarget;
</del><ins>+    readonly attribute long screenX;
+    readonly attribute long screenY;
+    readonly attribute long clientX;
+    readonly attribute long clientY;
+    readonly attribute boolean ctrlKey;
+    readonly attribute boolean shiftKey;
+    readonly attribute boolean altKey;
+    readonly attribute boolean metaKey;
+    readonly attribute unsigned short button;
+    readonly attribute EventTarget? relatedTarget;
</ins><span class="cx">     [Conditional=POINTER_LOCK] readonly attribute long movementX;
</span><span class="cx">     [Conditional=POINTER_LOCK] readonly attribute long movementY;
</span><span class="cx">     [Conditional=MOUSE_FORCE_EVENTS, ImplementedAs=force]readonly attribute double webkitForce;
</span></span></pre></div>
<a id="trunkSourceWebCoredomMouseEventInith"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/dom/MouseEventInit.h (0 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MouseEventInit.h                                (rev 0)
+++ trunk/Source/WebCore/dom/MouseEventInit.h        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include &quot;MouseRelatedEvent.h&quot;
+
+namespace WebCore {
+
+struct MouseEventInit : MouseRelatedEventInit {
+    int clientX { 0 };
+    int clientY { 0 };
+    unsigned short button { 0 };
+    RefPtr&lt;EventTarget&gt; relatedTarget;
+};
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoredomMouseEventInitidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/dom/MouseEventInit.idl (0 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MouseEventInit.idl                                (rev 0)
+++ trunk/Source/WebCore/dom/MouseEventInit.idl        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+dictionary MouseEventInit : EventModifierInit {
+    long screenX = 0;
+    long screenY = 0;
+    long clientX = 0;
+    long clientY = 0;
+    unsigned short button = 0;
+
+    // FIXME: We need to support the following member.
+    // unsigned short buttons = 0;
+
+    EventTarget? relatedTarget = null;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoredomMouseRelatedEventcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MouseRelatedEvent.cpp (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MouseRelatedEvent.cpp        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/dom/MouseRelatedEvent.cpp        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -71,8 +71,8 @@
</span><span class="cx">     init(isSimulated, windowLocation);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-MouseRelatedEvent::MouseRelatedEvent(const AtomicString&amp; eventType, const MouseRelatedEventInit&amp; initializer)
-    : UIEventWithKeyState(eventType, initializer)
</del><ins>+MouseRelatedEvent::MouseRelatedEvent(const AtomicString&amp; eventType, const MouseRelatedEventInit&amp; initializer, IsTrusted isTrusted)
+    : UIEventWithKeyState(eventType, initializer, isTrusted)
</ins><span class="cx">     , m_screenLocation(IntPoint(initializer.screenX, initializer.screenY))
</span><span class="cx"> #if ENABLE(POINTER_LOCK)
</span><span class="cx">     , m_movementDelta(IntPoint(0, 0))
</span></span></pre></div>
<a id="trunkSourceWebCoredomMouseRelatedEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MouseRelatedEvent.h (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MouseRelatedEvent.h        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/dom/MouseRelatedEvent.h        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">         const IntPoint&amp; movementDelta,
</span><span class="cx"> #endif
</span><span class="cx">         bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool isSimulated = false);
</span><del>-    MouseRelatedEvent(const AtomicString&amp; type, const MouseRelatedEventInit&amp;);
</del><ins>+    MouseRelatedEvent(const AtomicString&amp; type, const MouseRelatedEventInit&amp;, IsTrusted = IsTrusted::No);
</ins><span class="cx"> 
</span><span class="cx">     void initCoordinates();
</span><span class="cx">     void initCoordinates(const LayoutPoint&amp; clientLocation);
</span></span></pre></div>
<a id="trunkSourceWebCoredomUIEventWithKeyStateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/UIEventWithKeyState.h (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/UIEventWithKeyState.h        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/dom/UIEventWithKeyState.h        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    UIEventWithKeyState(const AtomicString&amp; type, const EventModifierInit&amp; initializer, IsTrusted isTrusted = IsTrusted::No)
</del><ins>+    UIEventWithKeyState(const AtomicString&amp; type, const EventModifierInit&amp; initializer, IsTrusted isTrusted)
</ins><span class="cx">         : UIEvent(type, initializer, isTrusted)
</span><span class="cx">         , m_ctrlKey(initializer.ctrlKey)
</span><span class="cx">         , m_altKey(initializer.altKey)
</span></span></pre></div>
<a id="trunkSourceWebCoredomWheelEventcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/WheelEvent.cpp (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/WheelEvent.cpp        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/dom/WheelEvent.cpp        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -35,16 +35,6 @@
</span><span class="cx">     return event.granularity() == ScrollByPageWheelEvent ? WheelEvent::DOM_DELTA_PAGE : WheelEvent::DOM_DELTA_PIXEL;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WheelEventInit::WheelEventInit()
-    : deltaX(0)
-    , deltaY(0)
-    , deltaZ(0)
-    , deltaMode(WheelEvent::DOM_DELTA_PIXEL)
-    , wheelDeltaX(0)
-    , wheelDeltaY(0)
-{
-}
-
</del><span class="cx"> WheelEvent::WheelEvent()
</span><span class="cx">     : m_deltaX(0)
</span><span class="cx">     , m_deltaY(0)
</span><span class="lines">@@ -54,8 +44,8 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WheelEvent::WheelEvent(const AtomicString&amp; type, const WheelEventInit&amp; initializer)
-    : MouseEvent(type, initializer)
</del><ins>+WheelEvent::WheelEvent(const AtomicString&amp; type, const Init&amp; initializer, IsTrusted isTrusted)
+    : MouseEvent(type, initializer, isTrusted)
</ins><span class="cx">     , m_wheelDelta(initializer.wheelDeltaX ? initializer.wheelDeltaX : -initializer.deltaX, initializer.wheelDeltaY ? initializer.wheelDeltaY : -initializer.deltaY)
</span><span class="cx">     , m_deltaX(initializer.deltaX ? initializer.deltaX : -initializer.wheelDeltaX)
</span><span class="cx">     , m_deltaY(initializer.deltaY ? initializer.deltaY : -initializer.wheelDeltaY)
</span></span></pre></div>
<a id="trunkSourceWebCoredomWheelEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/WheelEvent.h (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/WheelEvent.h        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/dom/WheelEvent.h        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -32,17 +32,6 @@
</span><span class="cx"> 
</span><span class="cx"> class PlatformWheelEvent;
</span><span class="cx"> 
</span><del>-struct WheelEventInit : public MouseEventInit {
-    WheelEventInit();
-
-    double deltaX;
-    double deltaY;
-    double deltaZ;
-    unsigned deltaMode;
-    int wheelDeltaX; // Deprecated.
-    int wheelDeltaY; // Deprecated.
-};
-
</del><span class="cx"> class WheelEvent final : public MouseEvent {
</span><span class="cx"> public:
</span><span class="cx">     enum { TickMultiplier = 120 };
</span><span class="lines">@@ -63,9 +52,18 @@
</span><span class="cx">         return adoptRef(*new WheelEvent);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    static Ref&lt;WheelEvent&gt; createForBindings(const AtomicString&amp; type, const WheelEventInit&amp; initializer)
</del><ins>+    struct Init : MouseEventInit {
+        double deltaX { 0 };
+        double deltaY { 0 };
+        double deltaZ { 0 };
+        unsigned deltaMode { DOM_DELTA_PIXEL };
+        int wheelDeltaX { 0 }; // Deprecated.
+        int wheelDeltaY { 0 }; // Deprecated.
+    };
+
+    static Ref&lt;WheelEvent&gt; create(const AtomicString&amp; type, const Init&amp; initializer, IsTrusted isTrusted = IsTrusted::No)
</ins><span class="cx">     {
</span><del>-        return adoptRef(*new WheelEvent(type, initializer));
</del><ins>+        return adoptRef(*new WheelEvent(type, initializer, isTrusted));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT void initWheelEvent(int rawDeltaX, int rawDeltaY, DOMWindow*,
</span><span class="lines">@@ -96,7 +94,7 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     WheelEvent();
</span><del>-    WheelEvent(const AtomicString&amp;, const WheelEventInit&amp;);
</del><ins>+    WheelEvent(const AtomicString&amp;, const Init&amp;, IsTrusted);
</ins><span class="cx">     WheelEvent(const PlatformWheelEvent&amp;, DOMWindow*);
</span><span class="cx"> 
</span><span class="cx">     bool isWheelEvent() const override;
</span></span></pre></div>
<a id="trunkSourceWebCoredomWheelEventidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/WheelEvent.idl (207040 => 207041)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/WheelEvent.idl        2016-10-11 04:33:56 UTC (rev 207040)
+++ trunk/Source/WebCore/dom/WheelEvent.idl        2016-10-11 04:43:26 UTC (rev 207041)
</span><span class="lines">@@ -20,8 +20,7 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> [
</span><del>-    ConstructorConditional=DOM4_EVENTS_CONSTRUCTOR,
-    ConstructorTemplate=Event,
</del><ins>+    Constructor(DOMString type, optional WheelEventInit eventInitDict),
</ins><span class="cx"> ] interface WheelEvent : MouseEvent {
</span><span class="cx">     // DeltaModeCode
</span><span class="cx">     const unsigned long DOM_DELTA_PIXEL = 0x00;
</span><span class="lines">@@ -28,14 +27,14 @@
</span><span class="cx">     const unsigned long DOM_DELTA_LINE = 0x01;
</span><span class="cx">     const unsigned long DOM_DELTA_PAGE = 0x02;
</span><span class="cx"> 
</span><del>-    [InitializedByEventConstructor] readonly attribute unrestricted double deltaX;
-    [InitializedByEventConstructor] readonly attribute unrestricted double deltaY;
-    [InitializedByEventConstructor] readonly attribute unrestricted double deltaZ;
-    [InitializedByEventConstructor] readonly attribute unsigned long deltaMode;
</del><ins>+    readonly attribute unrestricted double deltaX;
+    readonly attribute unrestricted double deltaY;
+    readonly attribute unrestricted double deltaZ;
+    readonly attribute unsigned long deltaMode;
</ins><span class="cx"> 
</span><span class="cx">     // Legacy MouseWheelEvent API replaced by standard WheelEvent API.
</span><del>-    [InitializedByEventConstructor] readonly attribute long wheelDeltaX;
-    [InitializedByEventConstructor] readonly attribute long wheelDeltaY;
</del><ins>+    readonly attribute long wheelDeltaX;
+    readonly attribute long wheelDeltaY;
</ins><span class="cx">     readonly attribute long wheelDelta;
</span><span class="cx"> 
</span><span class="cx">     readonly attribute boolean webkitDirectionInvertedFromDevice;
</span><span class="lines">@@ -45,3 +44,14 @@
</span><span class="cx">         optional boolean ctrlKey = false, optional boolean altKey = false,
</span><span class="cx">         optional boolean shiftKey = false, optional boolean metaKey = false);
</span><span class="cx"> };
</span><ins>+
+dictionary WheelEventInit : MouseEventInit {
+    double deltaX = 0.0;
+    double deltaY = 0.0;
+    double deltaZ = 0.0;
+    unsigned long deltaMode = 0;
+
+    // Legacy members that we still support for backward compatibility.
+    long wheelDeltaX = 0;
+    long wheelDeltaY = 0;
+};
</ins></span></pre>
</div>
</div>

</body>
</html>