<!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>[196563] 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/196563">196563</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-02-14 18:17:33 -0800 (Sun, 14 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Window and WorkerGlobalScope should inherit EventTarget
https://bugs.webkit.org/show_bug.cgi?id=154170
&lt;rdar://problem/24642377&gt;

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline now that a couple of checks are passing.

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

Source/WebCore:

Window and WorkerGlobalScope should inherit EventTarget instead of
duplicating the EventTarget API in their IDL. These were the last
interfaces that needed fixing. The next step will be to get rid
of the [EventTarget] IDL extended attribute and rely entirely
on the EventTarget inheritance.

Test:
- fast/frames/detached-frame-eventListener.html
- Covered by existing tests.

* WebCore.xcodeproj/project.pbxproj:
Add JSEventTargetCustom.h header to the project.

* bindings/js/JSDOMWindowCustom.cpp:
Drop custom bindings for Window's addEventListener() and
removeEventListener(). The only reason these needed custom
code was to add a check for frameless windows. The frameless
Window checks was moved to the respective methods in the
JSEventTarget generated bindings.

* bindings/js/JSDOMWindowShell.cpp:
(WebCore::JSDOMWindowShell::setWindow):
Set WindowPrototype's prototype to EventTarget's prototype.

* bindings/js/JSDOMWindowShell.h:
* bindings/js/JSDictionary.cpp:
Include &quot;DOMWindow.h&quot; to fix the build.

* bindings/js/JSEventTargetCustom.cpp:
(WebCore::JSEventTarget::toWrapped):
Handle DOMWindow and WorkerGlobalScope explicitely in toWrapped()
and get rid of the DOM_EVENT_TARGET_INTERFACES_FOR_EACH(TRY_TO_UNWRAP_WITH_INTERFACE)
now that all interfaces inherit EventTarget when they should.
The reason DOMWindow and WorkerGlobalScope still need special
handling is because their wrappers (JSDOMWindow /
JSWorkerGlobalScope) do not subclass JSEventTarget.

(WebCore::JSEventTargetOrGlobalScope::create):
* bindings/js/JSEventTargetCustom.h: Added.
(WebCore::JSEventTargetOrGlobalScope::wrapped):
(WebCore::JSEventTargetOrGlobalScope::operator JSC::JSObject&amp;):
(WebCore::JSEventTargetOrGlobalScope::JSEventTargetOrGlobalScope):
Add a wrapper type for JSEventTarget / JSDOMWindow and
JSWorkerGlobalScope for use in the generated bindings. This is
needed because JSDOMWindow and JSWorkerGlobalScope do not
subclass JSEventTarget. Subclassing JSEventTarget would be
complicated for them because they already subclass
JSDOMWindowBase / JSWorkerGlobalScopeBase, which subclasses
JSDOMGlobalObject.

* bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::initScript):
Set WorkerGlobalScopePrototype's prototype to EventTarget's prototype.

* bindings/scripts/CodeGeneratorJS.pm:
(ShouldGenerateToJSDeclaration):
Do not generate to toJS() implementation for interfaces that use
the [CustomProxyToJSObject] IDL extended attribute, even if they
inherit EventTarget.

(GetCastingHelperForThisObject):
To initialize castedThis from thisValue JSValue, we now use the
JSEventTargetOrGlobalScope wrapper for the EventTarget
implementation. This is to work around the fact that JSDOMWindow
and JSWorkerGlobalScope do not subclass JSEventTarget.

(GenerateFunctionCastedThis):
- Drop code handling [WorkerGlobalScope] IDL extended attribute
  as there is no such attribute.
- Use auto instead of auto* type for castedThis because
  JSEventTargetOrGlobalScope::create() returns a unique_ptr.
- Do not check that castedThis inherits JSEventTarget in the
  EventTarget bindings code as this no longer holds true.

(GenerateImplementation):
Generate frameless window() and security checks for EventTarget
methods when thisValue is a JSDOMWindow.

* dom/EventTarget.idl:
Add [JSCustomHeader] IDL Extended attribute as we need a header
to expose JSEventTargetOrGlobalScope class.

* page/DOMWindow.idl:
* workers/WorkerGlobalScope.idl:
Inherit EventTarget and stop duplicating the EventTarget API.
This matches the HTML specification.

LayoutTests:

* fast/frames/detached-frame-eventListener-expected.txt: Added.
* fast/frames/detached-frame-eventListener.html: Added.
Add test case to cover the use of the EventListener API on a detached
frame.

* fast/loader/window-clearing-expected.txt:
Rebaseline now that window has one more object in its prototype chain.

* http/tests/security/cross-frame-access-call-expected.txt:
* http/tests/security/cross-frame-access-call.html:
Add test coverage for cross-origin access to window.dispatchEvent() which
should not be allowed, in addition to window.addEventListener() and
window.removeEventListener() which were already tested.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastloaderwindowclearingexpectedtxt">trunk/LayoutTests/fast/loader/window-clearing-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycrossframeaccesscallexpectedtxt">trunk/LayoutTests/http/tests/security/cross-frame-access-call-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestssecuritycrossframeaccesscallhtml">trunk/LayoutTests/http/tests/security/cross-frame-access-call.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowShellcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowShellh">trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDictionarycpp">trunk/Source/WebCore/bindings/js/JSDictionary.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventTargetCustomcpp">trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsWorkerScriptControllercpp">trunk/Source/WebCore/bindings/js/WorkerScriptController.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
<li><a href="#trunkSourceWebCoredomEventTargetidl">trunk/Source/WebCore/dom/EventTarget.idl</a></li>
<li><a href="#trunkSourceWebCoredomScriptExecutionContextcpp">trunk/Source/WebCore/dom/ScriptExecutionContext.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowidl">trunk/Source/WebCore/page/DOMWindow.idl</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerGlobalScopeidl">trunk/Source/WebCore/workers/WorkerGlobalScope.idl</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastframesdetachedframeeventListenerexpectedtxt">trunk/LayoutTests/fast/frames/detached-frame-eventListener-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastframesdetachedframeeventListenerhtml">trunk/LayoutTests/fast/frames/detached-frame-eventListener.html</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventTargetCustomh">trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/LayoutTests/ChangeLog        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2016-02-14  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Window and WorkerGlobalScope should inherit EventTarget
+        https://bugs.webkit.org/show_bug.cgi?id=154170
+        &lt;rdar://problem/24642377&gt;
+
+        Reviewed by Darin Adler.
+
+        * fast/frames/detached-frame-eventListener-expected.txt: Added.
+        * fast/frames/detached-frame-eventListener.html: Added.
+        Add test case to cover the use of the EventListener API on a detached
+        frame.
+
+        * fast/loader/window-clearing-expected.txt:
+        Rebaseline now that window has one more object in its prototype chain.
+
+        * http/tests/security/cross-frame-access-call-expected.txt:
+        * http/tests/security/cross-frame-access-call.html:
+        Add test coverage for cross-origin access to window.dispatchEvent() which
+        should not be allowed, in addition to window.addEventListener() and
+        window.removeEventListener() which were already tested.
+
</ins><span class="cx"> 2016-02-12  Nan Wang  &lt;n_wang@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         AX: Implement paragraph related text marker functions using TextIterator
</span></span></pre></div>
<a id="trunkLayoutTestsfastframesdetachedframeeventListenerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/frames/detached-frame-eventListener-expected.txt (0 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/frames/detached-frame-eventListener-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/frames/detached-frame-eventListener-expected.txt        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+Tests that the EventTarget API is no longer working on detached frames.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+addEventListenerFunction.call(childWindow, 'myevent', function() { callbackCalled = true; });
+PASS dispatchEventFunc.call(childWindow, new Event('myevent')) is undefined.
+PASS callbackCalled is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastframesdetachedframeeventListenerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/frames/detached-frame-eventListener.html (0 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/frames/detached-frame-eventListener.html                                (rev 0)
+++ trunk/LayoutTests/fast/frames/detached-frame-eventListener.html        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+description(&quot;Tests that the EventTarget API is no longer working on detached frames.&quot;);
+jsTestIsAsync = true;
+
+onload = function()
+{
+    childWindow = frames[0];
+    addEventListenerFunction = childWindow.addEventListener;
+    dispatchEventFunc = childWindow.dispatchEvent;
+    document.body.removeChild(document.getElementsByTagName(&quot;iframe&quot;)[0]);
+    callbackCalled = false;
+    evalAndLog(&quot;addEventListenerFunction.call(childWindow, 'myevent', function() { callbackCalled = true; });&quot;);
+    shouldBeUndefined(&quot;dispatchEventFunc.call(childWindow, new Event('myevent'))&quot;);
+    shouldBeFalse(&quot;callbackCalled&quot;);
+    finishJSTest();
+}
+&lt;/script&gt;
+&lt;iframe src=&quot;about:blank&quot;&gt;&lt;/iframe&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastloaderwindowclearingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/loader/window-clearing-expected.txt (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/loader/window-clearing-expected.txt        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/LayoutTests/fast/loader/window-clearing-expected.txt        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -7,3 +7,5 @@
</span><span class="cx"> PASS: element 1 in the window's prototype chain was cleared
</span><span class="cx"> 
</span><span class="cx"> PASS: element 2 in the window's prototype chain was cleared
</span><ins>+
+PASS: element 3 in the window's prototype chain was cleared
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycrossframeaccesscallexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/cross-frame-access-call-expected.txt (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/cross-frame-access-call-expected.txt        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/LayoutTests/http/tests/security/cross-frame-access-call-expected.txt        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> CONSOLE MESSAGE: line 1: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</span><span class="cx"> CONSOLE MESSAGE: line 1: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</span><span class="cx"> CONSOLE MESSAGE: line 1: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</span><ins>+CONSOLE MESSAGE: line 1: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</ins><span class="cx"> CONSOLE MESSAGE: line 10: Blocked a frame with origin &quot;http://127.0.0.1:8000&quot; from accessing a frame with origin &quot;http://localhost:8000&quot;. Protocols, domains, and ports must match.
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -45,6 +46,7 @@
</span><span class="cx"> PASS: window.open.call(targetWindow, '') should be 'undefined' and is.
</span><span class="cx"> PASS: window.addEventListener.call(targetWindow, 'load', null, false); should be 'undefined' and is.
</span><span class="cx"> PASS: window.removeEventListener.call(targetWindow, 'load', null, false); should be 'undefined' and is.
</span><ins>+PASS: window.dispatchEvent.call(targetWindow, new Event('click')); should be 'undefined' and is.
</ins><span class="cx"> PASS: window.clearTimeout.call(targetWindow, 0); should be 'undefined' and is.
</span><span class="cx"> PASS: window.clearInterval.call(targetWindow, 0); should be 'undefined' and is.
</span><span class="cx"> PASS: window.print.call(targetWindow); should be 'undefined' and is.
</span></span></pre></div>
<a id="trunkLayoutTestshttptestssecuritycrossframeaccesscallhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/security/cross-frame-access-call.html (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/security/cross-frame-access-call.html        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/LayoutTests/http/tests/security/cross-frame-access-call.html        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -42,6 +42,7 @@
</span><span class="cx">     // These always return undefined so we use the error console to detect failure
</span><span class="cx">     shouldBe(&quot;window.addEventListener.call(targetWindow, 'load', null, false);&quot;, &quot;undefined&quot;);
</span><span class="cx">     shouldBe(&quot;window.removeEventListener.call(targetWindow, 'load', null, false);&quot;, &quot;undefined&quot;);
</span><ins>+    shouldBe(&quot;window.dispatchEvent.call(targetWindow, new Event('click'));&quot;, &quot;undefined&quot;);
</ins><span class="cx">     shouldBe(&quot;window.clearTimeout.call(targetWindow, 0);&quot;, &quot;undefined&quot;);
</span><span class="cx">     shouldBe(&quot;window.clearInterval.call(targetWindow, 0);&quot;, &quot;undefined&quot;);
</span><span class="cx">     shouldBe(&quot;window.print.call(targetWindow);&quot;, &quot;undefined&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2016-02-14  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Window and WorkerGlobalScope should inherit EventTarget
+        https://bugs.webkit.org/show_bug.cgi?id=154170
+        &lt;rdar://problem/24642377&gt;
+
+        Reviewed by Darin Adler.
+
+        Rebaseline now that a couple of checks are passing.
+
+        * web-platform-tests/html/dom/interfaces-expected.txt:
+
</ins><span class="cx"> 2016-02-12  Jiewen Tan  &lt;jiewen_tan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         WebKit should expose the DOM 4 Event.isTrusted property
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -3799,14 +3799,10 @@
</span><span class="cx"> FAIL DragEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;DragEvent&quot; expected property &quot;DragEvent&quot; missing
</span><span class="cx"> FAIL DragEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;DragEvent&quot; expected property &quot;DragEvent&quot; missing
</span><span class="cx"> FAIL DragEvent interface: attribute dataTransfer assert_own_property: self does not have own property &quot;DragEvent&quot; expected property &quot;DragEvent&quot; missing
</span><del>-FAIL Window interface: existence and properties of interface object assert_equals: prototype of Window is not EventTarget expected function &quot;function EventTarget() {
-    [native code]
-}&quot; but got function &quot;function () {
-    [native code]
-}&quot;
</del><ins>+PASS Window interface: existence and properties of interface object 
</ins><span class="cx"> PASS Window interface object length 
</span><span class="cx"> PASS Window interface object name 
</span><del>-FAIL Window interface: existence and properties of interface prototype object assert_equals: Class name for prototype of Window.prototype is not &quot;WindowProperties&quot; expected &quot;[object WindowProperties]&quot; but got &quot;[object Object]&quot;
</del><ins>+FAIL Window interface: existence and properties of interface prototype object assert_equals: Class name for prototype of Window.prototype is not &quot;WindowProperties&quot; expected &quot;[object WindowProperties]&quot; but got &quot;[object EventTargetPrototype]&quot;
</ins><span class="cx"> FAIL Window interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: Window.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
</span><span class="cx"> PASS Window interface: attribute self 
</span><span class="cx"> PASS Window interface: attribute name 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/ChangeLog        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -1,3 +1,98 @@
</span><ins>+2016-02-14  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Window and WorkerGlobalScope should inherit EventTarget
+        https://bugs.webkit.org/show_bug.cgi?id=154170
+        &lt;rdar://problem/24642377&gt;
+
+        Reviewed by Darin Adler.
+
+        Window and WorkerGlobalScope should inherit EventTarget instead of
+        duplicating the EventTarget API in their IDL. These were the last
+        interfaces that needed fixing. The next step will be to get rid
+        of the [EventTarget] IDL extended attribute and rely entirely
+        on the EventTarget inheritance.
+
+        Test:
+        - fast/frames/detached-frame-eventListener.html
+        - Covered by existing tests.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        Add JSEventTargetCustom.h header to the project.
+
+        * bindings/js/JSDOMWindowCustom.cpp:
+        Drop custom bindings for Window's addEventListener() and
+        removeEventListener(). The only reason these needed custom
+        code was to add a check for frameless windows. The frameless
+        Window checks was moved to the respective methods in the
+        JSEventTarget generated bindings.
+
+        * bindings/js/JSDOMWindowShell.cpp:
+        (WebCore::JSDOMWindowShell::setWindow):
+        Set WindowPrototype's prototype to EventTarget's prototype.
+
+        * bindings/js/JSDOMWindowShell.h:
+        * bindings/js/JSDictionary.cpp:
+        Include &quot;DOMWindow.h&quot; to fix the build.
+
+        * bindings/js/JSEventTargetCustom.cpp:
+        (WebCore::JSEventTarget::toWrapped):
+        Handle DOMWindow and WorkerGlobalScope explicitely in toWrapped()
+        and get rid of the DOM_EVENT_TARGET_INTERFACES_FOR_EACH(TRY_TO_UNWRAP_WITH_INTERFACE)
+        now that all interfaces inherit EventTarget when they should.
+        The reason DOMWindow and WorkerGlobalScope still need special
+        handling is because their wrappers (JSDOMWindow /
+        JSWorkerGlobalScope) do not subclass JSEventTarget.
+
+        (WebCore::JSEventTargetOrGlobalScope::create):
+        * bindings/js/JSEventTargetCustom.h: Added.
+        (WebCore::JSEventTargetOrGlobalScope::wrapped):
+        (WebCore::JSEventTargetOrGlobalScope::operator JSC::JSObject&amp;):
+        (WebCore::JSEventTargetOrGlobalScope::JSEventTargetOrGlobalScope):
+        Add a wrapper type for JSEventTarget / JSDOMWindow and
+        JSWorkerGlobalScope for use in the generated bindings. This is
+        needed because JSDOMWindow and JSWorkerGlobalScope do not
+        subclass JSEventTarget. Subclassing JSEventTarget would be
+        complicated for them because they already subclass
+        JSDOMWindowBase / JSWorkerGlobalScopeBase, which subclasses
+        JSDOMGlobalObject.
+
+        * bindings/js/WorkerScriptController.cpp:
+        (WebCore::WorkerScriptController::initScript):
+        Set WorkerGlobalScopePrototype's prototype to EventTarget's prototype.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (ShouldGenerateToJSDeclaration):
+        Do not generate to toJS() implementation for interfaces that use
+        the [CustomProxyToJSObject] IDL extended attribute, even if they
+        inherit EventTarget.
+
+        (GetCastingHelperForThisObject):
+        To initialize castedThis from thisValue JSValue, we now use the
+        JSEventTargetOrGlobalScope wrapper for the EventTarget
+        implementation. This is to work around the fact that JSDOMWindow
+        and JSWorkerGlobalScope do not subclass JSEventTarget.
+
+        (GenerateFunctionCastedThis):
+        - Drop code handling [WorkerGlobalScope] IDL extended attribute
+          as there is no such attribute.
+        - Use auto instead of auto* type for castedThis because
+          JSEventTargetOrGlobalScope::create() returns a unique_ptr.
+        - Do not check that castedThis inherits JSEventTarget in the
+          EventTarget bindings code as this no longer holds true.
+
+        (GenerateImplementation):
+        Generate frameless window() and security checks for EventTarget
+        methods when thisValue is a JSDOMWindow.
+
+        * dom/EventTarget.idl:
+        Add [JSCustomHeader] IDL Extended attribute as we need a header
+        to expose JSEventTargetOrGlobalScope class.
+
+        * page/DOMWindow.idl:
+        * workers/WorkerGlobalScope.idl:
+        Inherit EventTarget and stop duplicating the EventTarget API.
+        This matches the HTML specification.
+
</ins><span class="cx"> 2016-02-14  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Small tweaks to some SimpleLineLayout code
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -1709,6 +1709,7 @@
</span><span class="cx">                 4669B2871B852A0B000F905F /* JSDOMNamedFlowCollectionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46F2768E1B85297F005C2556 /* JSDOMNamedFlowCollectionCustom.cpp */; };
</span><span class="cx">                 467302021C4EFE7800BCB357 /* IgnoreOpensDuringUnloadCountIncrementer.h in Headers */ = {isa = PBXBuildFile; fileRef = 467302011C4EFE6600BCB357 /* IgnoreOpensDuringUnloadCountIncrementer.h */; };
</span><span class="cx">                 4689F1AF1267BAE100E8D380 /* FileMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 4689F1AE1267BAE100E8D380 /* FileMetadata.h */; };
</span><ins>+                46B63F6C1C6E8D19002E914B /* JSEventTargetCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B63F6B1C6E8CDF002E914B /* JSEventTargetCustom.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 46C83EFD1A9BBE2900A79A41 /* GeoNotifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46C83EFB1A9BBE2900A79A41 /* GeoNotifier.cpp */; };
</span><span class="cx">                 46C83EFE1A9BBE2900A79A41 /* GeoNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 46C83EFC1A9BBE2900A79A41 /* GeoNotifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 46DB7D571B20FE46005651B2 /* VNodeTrackerCocoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46DB7D561B20FE3C005651B2 /* VNodeTrackerCocoa.cpp */; };
</span><span class="lines">@@ -9192,6 +9193,7 @@
</span><span class="cx">                 463EB6211B8789CB0096ED51 /* TagCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TagCollection.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 467302011C4EFE6600BCB357 /* IgnoreOpensDuringUnloadCountIncrementer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IgnoreOpensDuringUnloadCountIncrementer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4689F1AE1267BAE100E8D380 /* FileMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileMetadata.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                46B63F6B1C6E8CDF002E914B /* JSEventTargetCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEventTargetCustom.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 46C83EFB1A9BBE2900A79A41 /* GeoNotifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeoNotifier.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 46C83EFC1A9BBE2900A79A41 /* GeoNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeoNotifier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 46DB7D561B20FE3C005651B2 /* VNodeTrackerCocoa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VNodeTrackerCocoa.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -22197,6 +22199,7 @@
</span><span class="cx">                                 F3D461461161D53200CA0D09 /* JSErrorHandler.cpp */,
</span><span class="cx">                                 F3D461471161D53200CA0D09 /* JSErrorHandler.h */,
</span><span class="cx">                                 BC60901E0E91B8EC000C68B5 /* JSEventTargetCustom.cpp */,
</span><ins>+                                46B63F6B1C6E8CDF002E914B /* JSEventTargetCustom.h */,
</ins><span class="cx">                                 3314ACE910892086000F0E56 /* JSExceptionBase.cpp */,
</span><span class="cx">                                 3314ACEA10892086000F0E56 /* JSExceptionBase.h */,
</span><span class="cx">                                 8F934D841189F1EE00508D5D /* JSMainThreadExecState.cpp */,
</span><span class="lines">@@ -24987,6 +24990,7 @@
</span><span class="cx">                                 2EDEF1F7121B0EFC00726DB2 /* BlobRegistryImpl.h in Headers */,
</span><span class="cx">                                 2EB4BCD3121F03E300EC4885 /* BlobResourceHandle.h in Headers */,
</span><span class="cx">                                 976D6C7F122B8A3D001FD1F7 /* BlobURL.h in Headers */,
</span><ins>+                                46B63F6C1C6E8D19002E914B /* JSEventTargetCustom.h in Headers */,
</ins><span class="cx">                                 93F199BE08245E59001E9ABC /* BlockExceptions.h in Headers */,
</span><span class="cx">                                 BC5EB5E10E81BE8700B25965 /* BorderData.h in Headers */,
</span><span class="cx">                                 589556ED18D4A44000764B03 /* BorderEdge.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -751,34 +751,6 @@
</span><span class="cx">     return jsNumber(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSDOMWindow::addEventListener(ExecState&amp; state)
-{
-    Frame* frame = wrapped().frame();
-    if (!frame)
-        return jsUndefined();
-
-    JSValue listener = state.argument(1);
-    if (!listener.isObject())
-        return jsUndefined();
-
-    wrapped().addEventListener(state.argument(0).toString(&amp;state)-&gt;toAtomicString(&amp;state), JSEventListener::create(asObject(listener), this, false, globalObject()-&gt;world()), state.argument(2).toBoolean(&amp;state));
-    return jsUndefined();
-}
-
-JSValue JSDOMWindow::removeEventListener(ExecState&amp; state)
-{
-    Frame* frame = wrapped().frame();
-    if (!frame)
-        return jsUndefined();
-
-    JSValue listener = state.argument(1);
-    if (!listener.isObject())
-        return jsUndefined();
-
-    wrapped().removeEventListener(state.argument(0).toString(&amp;state)-&gt;toAtomicString(&amp;state), JSEventListener::create(asObject(listener), this, false, globalObject()-&gt;world()).ptr(), state.argument(2).toBoolean(&amp;state));
-    return jsUndefined();
-}
-
</del><span class="cx"> DOMWindow* JSDOMWindow::toWrapped(JSValue value)
</span><span class="cx"> {
</span><span class="cx">     if (!value.isObject())
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowShellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;GCController.h&quot;
</span><span class="cx"> #include &quot;JSDOMWindow.h&quot;
</span><del>-#include &quot;DOMWindow.h&quot;
</del><ins>+#include &quot;JSEventTarget.h&quot;
</ins><span class="cx"> #include &quot;ScriptController.h&quot;
</span><span class="cx"> #include &lt;heap/StrongInlines.h&gt;
</span><span class="cx"> #include &lt;runtime/JSObject.h&gt;
</span><span class="lines">@@ -85,6 +85,7 @@
</span><span class="cx">     Structure* structure = JSDOMWindow::createStructure(vm, 0, prototype.get());
</span><span class="cx">     JSDOMWindow* jsDOMWindow = JSDOMWindow::create(vm, structure, *domWindow, this);
</span><span class="cx">     prototype-&gt;structure()-&gt;setGlobalObject(vm, jsDOMWindow);
</span><ins>+    prototype-&gt;structure()-&gt;setPrototypeWithoutTransition(vm, JSEventTarget::getPrototype(vm, jsDOMWindow));
</ins><span class="cx">     setWindow(vm, jsDOMWindow);
</span><span class="cx">     ASSERT(jsDOMWindow-&gt;globalObject() == jsDOMWindow);
</span><span class="cx">     ASSERT(prototype-&gt;globalObject() == jsDOMWindow);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowShellh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -29,12 +29,12 @@
</span><span class="cx"> #ifndef JSDOMWindowShell_h
</span><span class="cx"> #define JSDOMWindowShell_h
</span><span class="cx"> 
</span><ins>+#include &quot;DOMWindow.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindow.h&quot;
</span><span class="cx"> #include &lt;runtime/JSProxy.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-    class DOMWindow;
</del><span class="cx">     class Frame;
</span><span class="cx"> 
</span><span class="cx">     class JSDOMWindowShell : public JSC::JSProxy {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDictionarycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDictionary.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDictionary.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/js/JSDictionary.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include &quot;JSDictionary.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ArrayValue.h&quot;
</span><ins>+#include &quot;DOMWindow.h&quot;
</ins><span class="cx"> #include &quot;Dictionary.h&quot;
</span><span class="cx"> #include &quot;JSCSSFontFaceRule.h&quot;
</span><span class="cx"> #include &quot;JSDOMError.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventTargetCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2008, 2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -26,10 +26,15 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;JSEventTarget.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;DOMWindow.h&quot;
+#include &quot;EventTarget.h&quot;
</ins><span class="cx"> #include &quot;EventTargetHeaders.h&quot;
</span><span class="cx"> #include &quot;EventTargetInterfaces.h&quot;
</span><ins>+#include &quot;JSDOMWindow.h&quot;
</ins><span class="cx"> #include &quot;JSDOMWindowShell.h&quot;
</span><span class="cx"> #include &quot;JSEventListener.h&quot;
</span><ins>+#include &quot;JSWorkerGlobalScope.h&quot;
+#include &quot;WorkerGlobalScope.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="cx"> 
</span><span class="lines">@@ -61,12 +66,23 @@
</span><span class="cx"> EventTarget* JSEventTarget::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><span class="cx">     TRY_TO_UNWRAP_WITH_INTERFACE(DOMWindowShell)
</span><ins>+    TRY_TO_UNWRAP_WITH_INTERFACE(DOMWindow)
+    TRY_TO_UNWRAP_WITH_INTERFACE(WorkerGlobalScope)
</ins><span class="cx">     TRY_TO_UNWRAP_WITH_INTERFACE(EventTarget)
</span><del>-    // FIXME: Remove this once all event targets extend EventTarget
-    DOM_EVENT_TARGET_INTERFACES_FOR_EACH(TRY_TO_UNWRAP_WITH_INTERFACE)
-    return 0;
</del><ins>+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #undef TRY_TO_UNWRAP_WITH_INTERFACE
</span><span class="cx"> 
</span><ins>+std::unique_ptr&lt;JSEventTargetWrapper&gt; jsEventTargetCast(JSC::JSValue thisValue)
+{
+    if (auto* target = JSC::jsDynamicCast&lt;JSEventTarget*&gt;(thisValue))
+        return std::make_unique&lt;JSEventTargetWrapper&gt;(target-&gt;wrapped(), *target);
+    if (auto* window = toJSDOMWindow(thisValue))
+        return std::make_unique&lt;JSEventTargetWrapper&gt;(window-&gt;wrapped(), *window);
+    if (auto* scope = toJSWorkerGlobalScope(thisValue))
+        return std::make_unique&lt;JSEventTargetWrapper&gt;(scope-&gt;wrapped(), *scope);
+    return nullptr;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventTargetCustomh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h (0 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -0,0 +1,55 @@
</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.
+ */
+
+#ifndef JSEventTargetCustom_h
+#define JSEventTargetCustom_h
+
+#include &quot;JSDOMBinding.h&quot;
+
+namespace WebCore {
+
+// Wrapper type for JSEventTarget's castedThis because JSDOMWindow and JSWorkerGlobalScope do not inherit JSEventTarget.
+class JSEventTargetWrapper {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    JSEventTargetWrapper(EventTarget&amp; wrapped, JSC::JSObject&amp; wrapper)
+        : m_wrapped(wrapped)
+        , m_wrapper(wrapper)
+    { }
+
+    EventTarget&amp; wrapped() { return m_wrapped; }
+
+    operator JSC::JSObject&amp;() { return m_wrapper; }
+
+private:
+    EventTarget&amp; m_wrapped;
+    JSC::JSObject&amp; m_wrapper;
+};
+
+std::unique_ptr&lt;JSEventTargetWrapper&gt; jsEventTargetCast(JSC::JSValue thisValue);
+
+} // namespace WebCore
+
+#endif // JSEventTargetCustom_h
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsWorkerScriptControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/WorkerScriptController.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/WorkerScriptController.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/js/WorkerScriptController.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><span class="cx"> #include &quot;JSDedicatedWorkerGlobalScope.h&quot;
</span><ins>+#include &quot;JSEventTarget.h&quot;
</ins><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><span class="cx"> #include &quot;WebCoreJSClientData.h&quot;
</span><span class="cx"> #include &quot;WorkerGlobalScope.h&quot;
</span><span class="lines">@@ -89,6 +90,7 @@
</span><span class="cx">         ASSERT(structure-&gt;globalObject() == m_workerGlobalScopeWrapper);
</span><span class="cx">         ASSERT(m_workerGlobalScopeWrapper-&gt;structure()-&gt;globalObject() == m_workerGlobalScopeWrapper);
</span><span class="cx">         workerGlobalScopePrototype-&gt;structure()-&gt;setGlobalObject(*m_vm, m_workerGlobalScopeWrapper.get());
</span><ins>+        workerGlobalScopePrototype-&gt;structure()-&gt;setPrototypeWithoutTransition(*m_vm, JSEventTarget::getPrototype(*m_vm, m_workerGlobalScopeWrapper.get()));
</ins><span class="cx">         dedicatedContextPrototype-&gt;structure()-&gt;setGlobalObject(*m_vm, m_workerGlobalScopeWrapper.get());
</span><span class="cx">     }
</span><span class="cx">     ASSERT(m_workerGlobalScopeWrapper-&gt;globalObject() == m_workerGlobalScopeWrapper);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -558,6 +558,7 @@
</span><span class="cx">     return 0 if ($interface-&gt;extendedAttributes-&gt;{&quot;SuppressToJSObject&quot;});
</span><span class="cx">     return 0 if not NeedsImplementationClass($interface);
</span><span class="cx">     return 0 if $interface-&gt;name eq &quot;AbstractView&quot;;
</span><ins>+    return 0 if $interface-&gt;extendedAttributes-&gt;{&quot;CustomProxyToJSObject&quot;};
</ins><span class="cx">     return 1 if (!$hasParent or $interface-&gt;extendedAttributes-&gt;{&quot;JSGenerateToJSObject&quot;} or $interface-&gt;extendedAttributes-&gt;{&quot;CustomToJSObject&quot;});
</span><span class="cx">     return 1 if $interface-&gt;parent &amp;&amp; $interface-&gt;parent eq &quot;EventTarget&quot;;
</span><span class="cx">     return 0;
</span><span class="lines">@@ -1730,17 +1731,13 @@
</span><span class="cx"> sub GetCastingHelperForThisObject
</span><span class="cx"> {
</span><span class="cx">     my $interface = shift;
</span><ins>+    my $interfaceName = $interface-&gt;name;
</ins><span class="cx"> 
</span><del>-    if ($interface-&gt;name eq &quot;Node&quot;) {
-        return &quot;jsNodeCast&quot;;
-    }
-    if ($interface-&gt;name eq &quot;Element&quot;) {
-        return &quot;jsElementCast&quot;;
-    }
-    if ($interface-&gt;name eq &quot;Document&quot;) {
-        return &quot;jsDocumentCast&quot;;
-    }
-    return &quot;jsDynamicCast&lt;JS&quot; . $interface-&gt;name . &quot;*&gt;&quot;;
</del><ins>+    return &quot;jsNodeCast&quot; if $interfaceName eq &quot;Node&quot;;
+    return &quot;jsElementCast&quot; if $interfaceName eq &quot;Element&quot;;
+    return &quot;jsDocumentCast&quot; if $interfaceName eq &quot;Document&quot;;
+    return &quot;jsEventTargetCast&quot; if $interfaceName eq &quot;EventTarget&quot;;
+    return &quot;jsDynamicCast&lt;JS$interfaceName*&gt;&quot;;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> sub GetIndexedGetterExpression
</span><span class="lines">@@ -2944,6 +2941,14 @@
</span><span class="cx">                         $implIncludes{&quot;ExceptionCode.h&quot;} = 1;
</span><span class="cx">                     }
</span><span class="cx"> 
</span><ins>+                    # EventTarget needs to do some extra checks if castedThis is a JSDOMWindow.
+                    if ($interface-&gt;name eq &quot;EventTarget&quot;) {
+                        $implIncludes{&quot;DOMWindow.h&quot;} = 1;
+                        push(@implContent, &quot;    if (auto* window = castedThis-&gt;wrapped().toDOMWindow()) {\n&quot;);
+                        push(@implContent, &quot;        if (!window-&gt;frame() || !BindingSecurity::shouldAllowAccessToDOMWindow(state, *window))\n&quot;);
+                        push(@implContent, &quot;            return JSValue::encode(jsUndefined());\n&quot;);
+                        push(@implContent, &quot;    }\n&quot;);
+                    }
</ins><span class="cx">                     # For compatibility with legacy content, the EventListener calls are generated without GenerateArgumentsCountCheck.
</span><span class="cx">                     if ($function-&gt;signature-&gt;name eq &quot;addEventListener&quot;) {
</span><span class="cx">                         push(@implContent, GenerateEventListenerCall(&quot;add&quot;));
</span><span class="lines">@@ -3228,19 +3233,15 @@
</span><span class="cx">         push(@implContent, &quot;    $className* castedThis = to${className}(state-&gt;thisValue().toThis(state, NotStrictMode));\n&quot;);
</span><span class="cx">         push(@implContent, &quot;    if (UNLIKELY(!castedThis))\n&quot;);
</span><span class="cx">         push(@implContent, &quot;        return throwVMTypeError(state);\n&quot;);
</span><del>-    } elsif ($interface-&gt;extendedAttributes-&gt;{&quot;WorkerGlobalScope&quot;}) {
-        push(@implContent, &quot;    $className* castedThis = to${className}(state-&gt;thisValue().toThis(state, NotStrictMode));\n&quot;);
-        push(@implContent, &quot;    if (UNLIKELY(!castedThis))\n&quot;);
-        push(@implContent, &quot;        return throwVMTypeError(state);\n&quot;);
</del><span class="cx">     } else {
</span><span class="cx">         push(@implContent, &quot;    JSValue thisValue = state-&gt;thisValue();\n&quot;);
</span><del>-        push(@implContent, &quot;    $className* castedThis = &quot; . GetCastingHelperForThisObject($interface) . &quot;(thisValue);\n&quot;);
</del><ins>+        push(@implContent, &quot;    auto castedThis = &quot; . GetCastingHelperForThisObject($interface) . &quot;(thisValue);\n&quot;);
</ins><span class="cx">         my $domFunctionName = $function-&gt;signature-&gt;name;
</span><span class="cx">         push(@implContent, &quot;    if (UNLIKELY(!castedThis))\n&quot;);
</span><span class="cx">         push(@implContent, &quot;        return throwThisTypeError(*state, \&quot;$interfaceName\&quot;, \&quot;$domFunctionName\&quot;);\n&quot;);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    push(@implContent, &quot;    ASSERT_GC_OBJECT_INHERITS(castedThis, ${className}::info());\n&quot;);
</del><ins>+    push(@implContent, &quot;    ASSERT_GC_OBJECT_INHERITS(castedThis, ${className}::info());\n&quot;) unless $interfaceName eq &quot;EventTarget&quot;;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> sub GenerateCallWith
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -200,7 +200,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestActiveDOMObjectPrototypeFunctionExcitingFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestActiveDOMObject* castedThis = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestActiveDOMObject&quot;, &quot;excitingFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestActiveDOMObject::info());
</span><span class="lines">@@ -219,7 +219,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestActiveDOMObjectPrototypeFunctionPostMessage(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestActiveDOMObject* castedThis = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestActiveDOMObject&quot;, &quot;postMessage&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestActiveDOMObject::info());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -186,7 +186,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestCustomNamedGetterPrototypeFunctionAnotherFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestCustomNamedGetter* castedThis = jsDynamicCast&lt;JSTestCustomNamedGetter*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestCustomNamedGetter*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestCustomNamedGetter&quot;, &quot;anotherFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestCustomNamedGetter::info());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -198,7 +198,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionItem(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestEventTarget* castedThis = jsDynamicCast&lt;JSTestEventTarget*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestEventTarget*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestEventTarget&quot;, &quot;item&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestEventTarget::info());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -765,7 +765,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionImplementsMethod1(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestInterface&quot;, &quot;implementsMethod1&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="lines">@@ -780,7 +780,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionImplementsMethod2(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestInterface&quot;, &quot;implementsMethod2&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="lines">@@ -809,7 +809,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionImplementsMethod3(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestInterface&quot;, &quot;implementsMethod3&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="lines">@@ -831,7 +831,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionSupplementalMethod1(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestInterface&quot;, &quot;supplementalMethod1&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="lines">@@ -846,7 +846,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionSupplementalMethod2(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestInterface&quot;, &quot;supplementalMethod2&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="lines">@@ -875,7 +875,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionSupplementalMethod3(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestInterface&quot;, &quot;supplementalMethod3&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -199,7 +199,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestJSBuiltinConstructorPrototypeFunctionTestCustomFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestJSBuiltinConstructor* castedThis = jsDynamicCast&lt;JSTestJSBuiltinConstructor*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestJSBuiltinConstructor*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestJSBuiltinConstructor&quot;, &quot;testCustomFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestJSBuiltinConstructor::info());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestMediaQueryListListenerPrototypeFunctionMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestMediaQueryListListener* castedThis = jsDynamicCast&lt;JSTestMediaQueryListListener*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestMediaQueryListListener*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestMediaQueryListListener&quot;, &quot;method&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestMediaQueryListListener::info());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -421,7 +421,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestNondeterministicPrototypeFunctionNondeterministicZeroArgFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestNondeterministic* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestNondeterministic&quot;, &quot;nondeterministicZeroArgFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestNondeterministic::info());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -3018,7 +3018,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;voidMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3030,7 +3030,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethodWithArgs(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;voidMethodWithArgs&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3053,7 +3053,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionByteMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;byteMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3065,7 +3065,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionByteMethodWithArgs(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;byteMethodWithArgs&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3088,7 +3088,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOctetMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;octetMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3100,7 +3100,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOctetMethodWithArgs(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;octetMethodWithArgs&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3123,7 +3123,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionLongMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;longMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3135,7 +3135,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionLongMethodWithArgs(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;longMethodWithArgs&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3158,7 +3158,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;objMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3170,7 +3170,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethodWithArgs(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;objMethodWithArgs&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3193,7 +3193,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithSequenceArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithSequenceArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3210,7 +3210,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodReturningSequence(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodReturningSequence&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3227,7 +3227,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithEnumArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithEnumArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3248,7 +3248,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValue(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithOptionalEnumArgAndDefaultValue&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3277,7 +3277,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodThatRequiresAllArgsAndThrows&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3300,7 +3300,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;serializedValue&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3317,7 +3317,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOptionsObject(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;optionsObject&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3337,7 +3337,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithException(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithException&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3351,7 +3351,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithExceptionWithMessage(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithExceptionWithMessage&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3365,7 +3365,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;customMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3375,7 +3375,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethodWithArgs(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;customMethodWithArgs&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3385,7 +3385,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionPrivateMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;privateMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3402,7 +3402,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAddEventListener(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;addEventListener&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3417,7 +3417,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionRemoveEventListener(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;removeEventListener&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3432,7 +3432,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoid(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;withScriptStateVoid&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3444,7 +3444,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObj(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;withScriptStateObj&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3458,7 +3458,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoidException(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;withScriptStateVoidException&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3472,7 +3472,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObjException(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;withScriptStateObjException&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3489,7 +3489,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContext(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;withScriptExecutionContext&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3504,7 +3504,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptState(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptState&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3519,7 +3519,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjException(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateObjException&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3539,7 +3539,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateWithSpaces(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateWithSpaces&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3556,7 +3556,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptArgumentsAndCallStack(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;withScriptArgumentsAndCallStack&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3569,7 +3569,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithOptionalArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3591,7 +3591,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalArgAndDefaultValue(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithOptionalArgAndDefaultValue&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3613,7 +3613,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithNonOptionalArgAndOptionalArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3640,7 +3640,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithNonOptionalArgAndTwoOptionalArgs&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3675,7 +3675,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalString(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithOptionalString&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3697,7 +3697,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalStringAndDefaultValue(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithOptionalStringAndDefaultValue&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3719,7 +3719,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefined(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithOptionalStringIsUndefined&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3734,7 +3734,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalStringIsNullString(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithOptionalStringIsNullString&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3749,7 +3749,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithCallbackArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3766,7 +3766,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithNonCallbackArgAndCallbackArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3786,7 +3786,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithCallbackAndOptionalArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3804,7 +3804,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackFunctionArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithCallbackFunctionArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3821,7 +3821,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithNonCallbackArgAndCallbackFunctionArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3841,7 +3841,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackFunctionAndOptionalArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithCallbackFunctionAndOptionalArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3883,7 +3883,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod1(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;conditionalMethod1&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3898,7 +3898,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod2(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;conditionalMethod2&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3913,7 +3913,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod3(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;conditionalMethod3&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3927,7 +3927,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod1(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3947,7 +3947,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod2(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3974,7 +3974,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod3(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -3991,7 +3991,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod4(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4008,7 +4008,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod5(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4025,7 +4025,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod6(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4042,7 +4042,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod7(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4059,7 +4059,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod8(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4076,7 +4076,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod9(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4093,7 +4093,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod10(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4110,7 +4110,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod11(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4127,7 +4127,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod12(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4179,7 +4179,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethodWithOptionalParameter&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4206,7 +4206,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;overloadedMethodWithOptionalParameter&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4323,7 +4323,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethodWithClamp(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;classMethodWithClamp&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4353,7 +4353,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithUnsignedLongSequence(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithUnsignedLongSequence&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4370,7 +4370,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStringArrayFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;stringArrayFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4390,7 +4390,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionDomStringListFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;domStringListFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4410,7 +4410,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithAndWithoutNullableSequence&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4430,7 +4430,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence2(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;methodWithAndWithoutNullableSequence2&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4450,7 +4450,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionGetSVGDocument(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;getSVGDocument&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4467,7 +4467,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert1(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;convert1&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4484,7 +4484,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert2(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;convert2&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4501,7 +4501,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert4(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;convert4&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4518,7 +4518,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert5(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;convert5&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4535,7 +4535,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMutablePointFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;mutablePointFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4547,7 +4547,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionImmutablePointFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;immutablePointFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4559,7 +4559,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOrange(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;orange&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4571,7 +4571,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStrictFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;strictFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4597,7 +4597,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStrictFunctionWithSequence(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;strictFunctionWithSequence&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4622,7 +4622,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStrictFunctionWithArray(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;strictFunctionWithArray&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4647,7 +4647,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVariadicStringMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;variadicStringMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4667,7 +4667,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVariadicDoubleMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;variadicDoubleMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4687,7 +4687,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVariadicNodeMethod(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;variadicNodeMethod&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4710,7 +4710,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAny(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;any&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4736,7 +4736,7 @@
</span><span class="cx"> static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionPromise(ExecState* state, JSPromiseDeferred* promiseDeferred)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;testPromiseFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4754,7 +4754,7 @@
</span><span class="cx"> static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise(ExecState* state, JSPromiseDeferred* promiseDeferred)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;testPromiseFunctionWithFloatArgument&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4781,7 +4781,7 @@
</span><span class="cx"> static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise(ExecState* state, JSPromiseDeferred* promiseDeferred)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;testPromiseFunctionWithException&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="lines">@@ -4801,7 +4801,7 @@
</span><span class="cx"> static inline EncodedJSValue jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentPromise(ExecState* state, JSPromiseDeferred* promiseDeferred)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestObj&quot;, &quot;testPromiseFunctionWithOptionalIntArgument&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestOverrideBuiltinsPrototypeFunctionNamedItem(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestOverrideBuiltins* castedThis = jsDynamicCast&lt;JSTestOverrideBuiltins*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestOverrideBuiltins*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestOverrideBuiltins&quot;, &quot;namedItem&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestOverrideBuiltins::info());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -458,7 +458,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionFunc(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestTypedefs&quot;, &quot;func&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="lines">@@ -480,7 +480,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionSetShadow(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestTypedefs&quot;, &quot;setShadow&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="lines">@@ -521,7 +521,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionMethodWithSequenceArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestTypedefs&quot;, &quot;methodWithSequenceArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="lines">@@ -538,7 +538,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionNullableArrayArg(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestTypedefs&quot;, &quot;nullableArrayArg&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="lines">@@ -555,7 +555,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionFuncWithClamp(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestTypedefs&quot;, &quot;funcWithClamp&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="lines">@@ -592,7 +592,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionImmutablePointFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestTypedefs&quot;, &quot;immutablePointFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="lines">@@ -604,7 +604,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionStringArrayFunction(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestTypedefs&quot;, &quot;stringArrayFunction&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="lines">@@ -624,7 +624,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionStringArrayFunction2(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestTypedefs&quot;, &quot;stringArrayFunction2&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="lines">@@ -644,7 +644,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionCallWithSequenceThatRequiresInclude(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestTypedefs&quot;, &quot;callWithSequenceThatRequiresInclude&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="lines">@@ -661,7 +661,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionMethodWithException(ExecState* state)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = state-&gt;thisValue();
</span><del>-    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return throwThisTypeError(*state, &quot;TestTypedefs&quot;, &quot;methodWithException&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventTargetidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventTarget.idl (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventTarget.idl        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/dom/EventTarget.idl        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx">     CustomToJSObject,
</span><span class="cx">     JSCustomToNativeObject,
</span><span class="cx">     EventTarget,
</span><ins>+    JSCustomHeader,
</ins><span class="cx"> ] interface EventTarget {
</span><span class="cx">     [ObjCLegacyUnnamedParameters] void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</span><span class="cx">     [ObjCLegacyUnnamedParameters] void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</span></span></pre></div>
<a id="trunkSourceWebCoredomScriptExecutionContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ScriptExecutionContext.cpp (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ScriptExecutionContext.cpp        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/dom/ScriptExecutionContext.cpp        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -390,7 +390,7 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><del>-    if (target == target-&gt;toDOMWindow() &amp;&amp; is&lt;Document&gt;(*this)) {
</del><ins>+    if (target-&gt;toDOMWindow() &amp;&amp; is&lt;Document&gt;(*this)) {
</ins><span class="cx">         Settings* settings = downcast&lt;Document&gt;(*this).settings();
</span><span class="cx">         if (settings &amp;&amp; !settings-&gt;shouldDispatchJavaScriptWindowOnErrorEvents())
</span><span class="cx">             return false;
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.idl (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.idl        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/page/DOMWindow.idl        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -36,10 +36,9 @@
</span><span class="cx">     JSCustomToNativeObject,
</span><span class="cx">     CustomPutFunction,
</span><span class="cx">     EventTarget,
</span><del>-    JSGenerateToNativeObject,
</del><span class="cx">     JSLegacyParent=JSDOMWindowBase,
</span><span class="cx">     InterfaceName=Window,
</span><del>-] interface DOMWindow {
</del><ins>+] interface DOMWindow : EventTarget {
</ins><span class="cx">     // DOM Level 0
</span><span class="cx">     [Replaceable] readonly attribute Screen screen;
</span><span class="cx">     [Replaceable] readonly attribute History history;
</span><span class="lines">@@ -186,11 +185,6 @@
</span><span class="cx"> 
</span><span class="cx">     [Replaceable] readonly attribute DOMWindowCSS CSS;
</span><span class="cx"> 
</span><del>-    // EventTarget interface
-    [Custom] void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [Custom] void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [ImplementedAs=dispatchEventForBindings, RaisesException] boolean dispatchEvent(Event event);
-
</del><span class="cx">     void captureEvents(/*in long eventFlags*/);
</span><span class="cx">     void releaseEvents(/*in long eventFlags*/);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerGlobalScopeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerGlobalScope.idl (196562 => 196563)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerGlobalScope.idl        2016-02-15 01:42:31 UTC (rev 196562)
+++ trunk/Source/WebCore/workers/WorkerGlobalScope.idl        2016-02-15 02:17:33 UTC (rev 196563)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx">     JSCustomGetOwnPropertySlotAndDescriptor,
</span><span class="cx">     EventTarget,
</span><span class="cx">     JSLegacyParent=JSWorkerGlobalScopeBase,
</span><del>-] interface WorkerGlobalScope {
</del><ins>+] interface WorkerGlobalScope : EventTarget {
</ins><span class="cx"> 
</span><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><span class="cx">     [Replaceable] readonly attribute  WorkerGlobalScope self;
</span><span class="lines">@@ -48,12 +48,6 @@
</span><span class="cx">     [Custom] void importScripts(/*[Variadic] DOMString urls */);
</span><span class="cx">     [Replaceable] readonly attribute WorkerNavigator navigator;
</span><span class="cx"> 
</span><del>-    // EventTarget interface
-
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [ImplementedAs=dispatchEventForBindings, RaisesException] boolean dispatchEvent(Event event);
-
</del><span class="cx">     // Additional constructors
</span><span class="cx"> 
</span><span class="cx">     attribute DOMURLConstructor webkitURL; // FIXME: deprecate this.
</span></span></pre>
</div>
</div>

</body>
</html>