<!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>[196466] 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/196466">196466</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-02-11 23:28:32 -0800 (Thu, 11 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Web IDL] interfaces should inherit EventTarget instead of duplicating the EventTarget API
https://bugs.webkit.org/show_bug.cgi?id=154121
&lt;rdar://problem/24613234&gt;

Reviewed by Gavin Barraclough.

LayoutTests/imported/w3c:

Rebaseline several W3C tests now that more checks are passing.

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

Source/WebCore:

Interfaces should inherit EventTarget instead of duplicating the
EventTarget API in their IDL. Not only the duplication is ugly and
error-prone, but this also does not match the specifications and
have subtle web-exposed differences.

This patch takes care of all interfaces except for DOMWindow and
WorkerGlobalScope. Those will be updated in the follow-up patch
as they will require a little bit more work and testing.

We should also be able to get rid of the [EventTarget] WebKit IDL
attribute in a follow-up.

No new tests, already covered by existing tests.

* Modules/battery/BatteryManager.idl:
* Modules/encryptedmedia/MediaKeySession.idl:
* Modules/indexeddb/IDBDatabase.h:
* Modules/indexeddb/IDBDatabase.idl:
* Modules/indexeddb/IDBRequest.h:
* Modules/indexeddb/IDBRequest.idl:
* Modules/indexeddb/IDBTransaction.h:
* Modules/indexeddb/IDBTransaction.idl:
* Modules/mediasession/MediaRemoteControls.idl:
* Modules/mediasource/MediaSource.h:
* Modules/mediasource/MediaSource.idl:
* Modules/mediasource/SourceBuffer.h:
* Modules/mediasource/SourceBuffer.idl:
* Modules/mediasource/SourceBufferList.h:
* Modules/mediasource/SourceBufferList.idl:
* Modules/mediastream/MediaStream.h:
* Modules/mediastream/MediaStream.idl:
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.idl:
* Modules/mediastream/RTCDTMFSender.h:
* Modules/mediastream/RTCDTMFSender.idl:
* Modules/mediastream/RTCDataChannel.h:
* Modules/mediastream/RTCDataChannel.idl:
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/RTCPeerConnection.idl:
* Modules/notifications/Notification.idl:
* Modules/speech/SpeechSynthesisUtterance.idl:
* Modules/webaudio/AudioContext.idl:
* Modules/webaudio/AudioNode.idl:
* Modules/websockets/WebSocket.idl:
* css/FontLoader.idl:
* dom/EventTarget.h:
* dom/MessagePort.idl:
* dom/Node.h:
* dom/Node.idl:
* dom/WebKitNamedFlow.idl:
* fileapi/FileReader.idl:
* html/MediaController.idl:
* html/track/AudioTrackList.idl:
* html/track/TextTrack.idl:
* html/track/TextTrackCue.idl:
* html/track/TextTrackList.idl:
* html/track/VideoTrackList.idl:
* loader/appcache/DOMApplicationCache.h:
* loader/appcache/DOMApplicationCache.idl:
* page/EventSource.idl:
* page/Performance.h:
* page/Performance.idl:
* workers/Worker.idl:
* xml/XMLHttpRequest.h:
* xml/XMLHttpRequest.idl:
* xml/XMLHttpRequestUpload.idl:
- Drop hardcoded EventTarget operations and inherit EventTarget instead.
- Drop JSGenerateToNativeObject / JSGenerateToJSObject IDL extended
  attributes for interfaces inheriting the EventTarget interface as
  the bindings generator now does this automatically for us.
- On native side, have EventTarget subclass ScriptWrappable instead of
  each of its subclasses doing so. The issue was that
  EventTargetOwner::finalize() was calling uncacheWrapper() with an
  EventTarget*, which would not clear inlined cached wrapped (see
  clearInlineCachedWrapper()) because EventTarget did not subclass
  ScriptWrappable. However, cacheWrapper() is called is a specific
  subtype pointer (e.g. Node*) and we would decide to create an
  inline cached wrapper because Node subclassed ScriptWrappable
  (as well as EventTarget).

* WebCore.xcodeproj/project.pbxproj:
Export JSEventTarget.h as private header to fix the build.

* bindings/js/JSDOMBinding.h:
(WebCore::wrapperKey):
(WebCore::getCachedWrapper):
(WebCore::cacheWrapper):
(WebCore::uncacheWrapper):
Use new wrapperKey() function that is generated for each bindings
class that also has wrapperOwner(). This is used instead of the
C cast to void* in order to cast to the base wrapped type to fix
issues with multiple inheritance. The issue was that cacheWrapper()
was getting called with a DOM object subtype pointer (e.g.
AudioContext*) but uncacheWrapper() was getting called with a base
wrapped type pointer (e.g. EventTarget*). Most of our DOM classes
use multiple inheritance and thus the pointer values (used as keys
in the weak map) may differ.

* bindings/js/JSTrackCustom.cpp:
(WebCore::toJS):
Call CREATE_DOM_WRAPPER() with an actual wrapped type (e.g. AudioTrack)
instead of TrackBase type. TrackBase does not have corresponding
generated bindings and therefore does not have a wrapperKey()
function.

* bindings/scripts/CodeGeneratorJS.pm:
(ShouldGenerateToWrapped):
(ShouldGenerateToJSDeclaration):
(GenerateHeader):
- Generate a wrapperKey() utility function along-side wrapperOwner()
  to help cast to the base wrapped type.
- Generate toWrapped() / toJS() utility functions for interfaces
  that inherit EventTarget as those are required by our
  implementation and this avoids having to explicitly have them in
  the IDL.

* bindings/scripts/test/*:
Rebaseline bindings tests.

LayoutTests:

Rebaseline a couple of layout tests now that interfaces inherit EventTarget
instead of duplicating the EventTarget API in their IDL.

* fast/dom/Window/window-properties-performance-expected.txt:
* fast/dom/prototype-chain-expected.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastdomWindowwindowpropertiesperformanceexpectedtxt">trunk/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomprototypechainexpectedtxt">trunk/LayoutTests/fast/dom/prototype-chain-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt</a></li>
<li><a href="#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="#trunkSourceWebCoreModulesbatteryBatteryManageridl">trunk/Source/WebCore/Modules/battery/BatteryManager.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesencryptedmediaMediaKeySessionidl">trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBDatabaseh">trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBDatabaseidl">trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBRequesth">trunk/Source/WebCore/Modules/indexeddb/IDBRequest.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBRequestidl">trunk/Source/WebCore/Modules/indexeddb/IDBRequest.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBTransactionh">trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBTransactionidl">trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasessionMediaRemoteControlsidl">trunk/Source/WebCore/Modules/mediasession/MediaRemoteControls.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceMediaSourceh">trunk/Source/WebCore/Modules/mediasource/MediaSource.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceMediaSourceidl">trunk/Source/WebCore/Modules/mediasource/MediaSource.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceSourceBufferh">trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceSourceBufferidl">trunk/Source/WebCore/Modules/mediasource/SourceBuffer.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceSourceBufferListh">trunk/Source/WebCore/Modules/mediasource/SourceBufferList.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceSourceBufferListidl">trunk/Source/WebCore/Modules/mediasource/SourceBufferList.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamh">trunk/Source/WebCore/Modules/mediastream/MediaStream.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamidl">trunk/Source/WebCore/Modules/mediastream/MediaStream.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackh">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDTMFSenderh">trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDTMFSenderidl">trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDataChannelh">trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDataChannelidl">trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCPeerConnectionh">trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCPeerConnectionidl">trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesnotificationsNotificationidl">trunk/Source/WebCore/Modules/notifications/Notification.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesspeechSpeechSynthesisUtteranceidl">trunk/Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioContextidl">trunk/Source/WebCore/Modules/webaudio/AudioContext.idl</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioNodeidl">trunk/Source/WebCore/Modules/webaudio/AudioNode.idl</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketidl">trunk/Source/WebCore/Modules/websockets/WebSocket.idl</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorGObjectpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorObjCpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjecth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjecth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGetterh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargeth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptionh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachableh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenerh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministich">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfaceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSattributeh">trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSreadonlyh">trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestEventTargeth">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventTarget.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestEventTargetmm">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventTarget.mm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestTestEventTargetidl">trunk/Source/WebCore/bindings/scripts/test/TestEventTarget.idl</a></li>
<li><a href="#trunkSourceWebCorecssFontLoaderidl">trunk/Source/WebCore/css/FontLoader.idl</a></li>
<li><a href="#trunkSourceWebCoredomEventTargeth">trunk/Source/WebCore/dom/EventTarget.h</a></li>
<li><a href="#trunkSourceWebCoredomMessagePortidl">trunk/Source/WebCore/dom/MessagePort.idl</a></li>
<li><a href="#trunkSourceWebCoredomNodeh">trunk/Source/WebCore/dom/Node.h</a></li>
<li><a href="#trunkSourceWebCoredomNodeidl">trunk/Source/WebCore/dom/Node.idl</a></li>
<li><a href="#trunkSourceWebCoredomWebKitNamedFlowidl">trunk/Source/WebCore/dom/WebKitNamedFlow.idl</a></li>
<li><a href="#trunkSourceWebCorefileapiFileReaderidl">trunk/Source/WebCore/fileapi/FileReader.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlMediaControlleridl">trunk/Source/WebCore/html/MediaController.idl</a></li>
<li><a href="#trunkSourceWebCorehtmltrackAudioTrackListidl">trunk/Source/WebCore/html/track/AudioTrackList.idl</a></li>
<li><a href="#trunkSourceWebCorehtmltrackTextTrackidl">trunk/Source/WebCore/html/track/TextTrack.idl</a></li>
<li><a href="#trunkSourceWebCorehtmltrackTextTrackCueidl">trunk/Source/WebCore/html/track/TextTrackCue.idl</a></li>
<li><a href="#trunkSourceWebCorehtmltrackTextTrackListidl">trunk/Source/WebCore/html/track/TextTrackList.idl</a></li>
<li><a href="#trunkSourceWebCorehtmltrackVideoTrackListidl">trunk/Source/WebCore/html/track/VideoTrackList.idl</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheDOMApplicationCacheh">trunk/Source/WebCore/loader/appcache/DOMApplicationCache.h</a></li>
<li><a href="#trunkSourceWebCoreloaderappcacheDOMApplicationCacheidl">trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl</a></li>
<li><a href="#trunkSourceWebCorepageEventSourceidl">trunk/Source/WebCore/page/EventSource.idl</a></li>
<li><a href="#trunkSourceWebCorepagePerformanceh">trunk/Source/WebCore/page/Performance.h</a></li>
<li><a href="#trunkSourceWebCorepagePerformanceidl">trunk/Source/WebCore/page/Performance.idl</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkeridl">trunk/Source/WebCore/workers/Worker.idl</a></li>
<li><a href="#trunkSourceWebCorexmlXMLHttpRequesth">trunk/Source/WebCore/xml/XMLHttpRequest.h</a></li>
<li><a href="#trunkSourceWebCorexmlXMLHttpRequestidl">trunk/Source/WebCore/xml/XMLHttpRequest.idl</a></li>
<li><a href="#trunkSourceWebCorexmlXMLHttpRequestUploadidl">trunk/Source/WebCore/xml/XMLHttpRequestUpload.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/LayoutTests/ChangeLog        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-02-11  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        [Web IDL] interfaces should inherit EventTarget instead of duplicating the EventTarget API
+        https://bugs.webkit.org/show_bug.cgi?id=154121
+        &lt;rdar://problem/24613234&gt;
+
+        Reviewed by Gavin Barraclough.
+
+        Rebaseline a couple of layout tests now that interfaces inherit EventTarget
+        instead of duplicating the EventTarget API in their IDL.
+
+        * fast/dom/Window/window-properties-performance-expected.txt:
+        * fast/dom/prototype-chain-expected.txt:
+
</ins><span class="cx"> 2016-02-11  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Subpixel rendering: Make focusring painting subpixel aware.
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowwindowpropertiesperformanceexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -1,6 +1,8 @@
</span><span class="cx"> This test dumps all of the properties that are reachable from the window.performance object, along with their types.
</span><span class="cx"> 
</span><span class="cx"> window.performance [object Performance]
</span><ins>+window.performance.addEventListener [function]
+window.performance.dispatchEvent [function]
</ins><span class="cx"> window.performance.navigation [object PerformanceNavigation]
</span><span class="cx"> window.performance.navigation.TYPE_BACK_FORWARD [number]
</span><span class="cx"> window.performance.navigation.TYPE_NAVIGATE [number]
</span><span class="lines">@@ -9,6 +11,7 @@
</span><span class="cx"> window.performance.navigation.redirectCount [number]
</span><span class="cx"> window.performance.navigation.type [number]
</span><span class="cx"> window.performance.now [function]
</span><ins>+window.performance.removeEventListener [function]
</ins><span class="cx"> window.performance.timing [object PerformanceTiming]
</span><span class="cx"> window.performance.timing.connectEnd [number]
</span><span class="cx"> window.performance.timing.connectStart [number]
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomprototypechainexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/prototype-chain-expected.txt (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/prototype-chain-expected.txt        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/LayoutTests/fast/dom/prototype-chain-expected.txt        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -2,20 +2,24 @@
</span><span class="cx"> 
</span><span class="cx"> NOTE: This test will start failing if you change the layout of a related prototype chain in WebCore. That does not necessarily mean that you have done something wrong; you may just need to check in new results.
</span><span class="cx"> 
</span><del>------ [object HTMLDocument] (4 prototypes) -----
</del><ins>+----- [object HTMLDocument] (5 prototypes) -----
</ins><span class="cx"> 
</span><span class="cx"> [object Object]
</span><span class="cx"> 
</span><ins>+[object EventTargetPrototype]
+
</ins><span class="cx"> [object NodePrototype]
</span><span class="cx"> 
</span><span class="cx"> [object DocumentPrototype]
</span><span class="cx"> 
</span><span class="cx"> [object HTMLDocumentPrototype]
</span><span class="cx"> 
</span><del>------ [object HTMLDivElement] (5 prototypes) -----
</del><ins>+----- [object HTMLDivElement] (6 prototypes) -----
</ins><span class="cx"> 
</span><span class="cx"> [object Object]
</span><span class="cx"> 
</span><ins>+[object EventTargetPrototype]
+
</ins><span class="cx"> [object NodePrototype]
</span><span class="cx"> 
</span><span class="cx"> [object ElementPrototype]
</span><span class="lines">@@ -24,10 +28,12 @@
</span><span class="cx"> 
</span><span class="cx"> [object HTMLDivElementPrototype]
</span><span class="cx"> 
</span><del>------ [object HTMLFormElement] (5 prototypes) -----
</del><ins>+----- [object HTMLFormElement] (6 prototypes) -----
</ins><span class="cx"> 
</span><span class="cx"> [object Object]
</span><span class="cx"> 
</span><ins>+[object EventTargetPrototype]
+
</ins><span class="cx"> [object NodePrototype]
</span><span class="cx"> 
</span><span class="cx"> [object ElementPrototype]
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -1,5 +1,18 @@
</span><span class="cx"> 2016-02-11  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        [Web IDL] interfaces should inherit EventTarget instead of duplicating the EventTarget API
+        https://bugs.webkit.org/show_bug.cgi?id=154121
+        &lt;rdar://problem/24613234&gt;
+
+        Reviewed by Gavin Barraclough.
+
+        Rebaseline several W3C tests now that more checks are passing.
+
+        * web-platform-tests/dom/interfaces-expected.txt:
+        * web-platform-tests/html/dom/interfaces-expected.txt:
+
+2016-02-11  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Move 'length' property to the prototype
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=154051
</span><span class="cx">         &lt;rdar://problem/24577385&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -170,14 +170,10 @@
</span><span class="cx"> PASS MutationRecord interface: attribute attributeName 
</span><span class="cx"> PASS MutationRecord interface: attribute attributeNamespace 
</span><span class="cx"> PASS MutationRecord interface: attribute oldValue 
</span><del>-FAIL Node interface: existence and properties of interface object assert_equals: prototype of Node is not EventTarget expected function &quot;function EventTarget() {
-    [native code]
-}&quot; but got function &quot;function () {
-    [native code]
-}&quot;
</del><ins>+PASS Node interface: existence and properties of interface object 
</ins><span class="cx"> PASS Node interface object length 
</span><span class="cx"> PASS Node interface object name 
</span><del>-FAIL Node interface: existence and properties of interface prototype object assert_equals: prototype of Node.prototype is not EventTarget.prototype expected object &quot;[object EventTargetPrototype]&quot; but got object &quot;[object Object]&quot;
</del><ins>+PASS Node interface: existence and properties of interface prototype object 
</ins><span class="cx"> PASS Node interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS Node interface: constant ELEMENT_NODE on interface object 
</span><span class="cx"> PASS Node interface: constant ELEMENT_NODE on interface prototype object 
</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 (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -2233,14 +2233,10 @@
</span><span class="cx"> FAIL VideoTrack interface: attribute label assert_own_property: self does not have own property &quot;VideoTrack&quot; expected property &quot;VideoTrack&quot; missing
</span><span class="cx"> FAIL VideoTrack interface: attribute language assert_own_property: self does not have own property &quot;VideoTrack&quot; expected property &quot;VideoTrack&quot; missing
</span><span class="cx"> FAIL VideoTrack interface: attribute selected assert_own_property: self does not have own property &quot;VideoTrack&quot; expected property &quot;VideoTrack&quot; missing
</span><del>-FAIL MediaController interface: existence and properties of interface object assert_equals: prototype of MediaController is not EventTarget expected function &quot;function EventTarget() {
-    [native code]
-}&quot; but got function &quot;function () {
-    [native code]
-}&quot;
</del><ins>+PASS MediaController interface: existence and properties of interface object 
</ins><span class="cx"> PASS MediaController interface object length 
</span><span class="cx"> PASS MediaController interface object name 
</span><del>-FAIL MediaController interface: existence and properties of interface prototype object assert_equals: prototype of MediaController.prototype is not EventTarget.prototype expected object &quot;[object EventTargetPrototype]&quot; but got object &quot;[object Object]&quot;
</del><ins>+PASS MediaController interface: existence and properties of interface prototype object 
</ins><span class="cx"> PASS MediaController interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> FAIL MediaController interface: attribute readyState assert_true: The prototype object must have a property &quot;readyState&quot; expected true got false
</span><span class="cx"> PASS MediaController interface: attribute buffered 
</span><span class="lines">@@ -2312,14 +2308,10 @@
</span><span class="cx"> }&quot; did not throw
</span><span class="cx"> PASS EventTarget interface: new MediaController() must inherit property &quot;dispatchEvent&quot; with the proper type (2) 
</span><span class="cx"> PASS EventTarget interface: calling dispatchEvent(Event) on new MediaController() with too few arguments must throw TypeError 
</span><del>-FAIL TextTrackList interface: existence and properties of interface object assert_equals: prototype of TextTrackList is not EventTarget expected function &quot;function EventTarget() {
-    [native code]
-}&quot; but got function &quot;function () {
-    [native code]
-}&quot;
</del><ins>+PASS TextTrackList interface: existence and properties of interface object 
</ins><span class="cx"> PASS TextTrackList interface object length 
</span><span class="cx"> PASS TextTrackList interface object name 
</span><del>-FAIL TextTrackList interface: existence and properties of interface prototype object assert_equals: prototype of TextTrackList.prototype is not EventTarget.prototype expected object &quot;[object EventTargetPrototype]&quot; but got object &quot;[object Object]&quot;
</del><ins>+PASS TextTrackList interface: existence and properties of interface prototype object 
</ins><span class="cx"> PASS TextTrackList interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS TextTrackList interface: attribute length 
</span><span class="cx"> PASS TextTrackList interface: operation getTrackById(DOMString) 
</span><span class="lines">@@ -2344,14 +2336,10 @@
</span><span class="cx"> }&quot; did not throw
</span><span class="cx"> PASS EventTarget interface: document.createElement(&quot;video&quot;).textTracks must inherit property &quot;dispatchEvent&quot; with the proper type (2) 
</span><span class="cx"> PASS EventTarget interface: calling dispatchEvent(Event) on document.createElement(&quot;video&quot;).textTracks with too few arguments must throw TypeError 
</span><del>-FAIL TextTrack interface: existence and properties of interface object assert_equals: prototype of TextTrack is not EventTarget expected function &quot;function EventTarget() {
-    [native code]
-}&quot; but got function &quot;function () {
-    [native code]
-}&quot;
</del><ins>+PASS TextTrack interface: existence and properties of interface object 
</ins><span class="cx"> PASS TextTrack interface object length 
</span><span class="cx"> PASS TextTrack interface object name 
</span><del>-FAIL TextTrack interface: existence and properties of interface prototype object assert_equals: prototype of TextTrack.prototype is not EventTarget.prototype expected object &quot;[object EventTargetPrototype]&quot; but got object &quot;[object Object]&quot;
</del><ins>+PASS TextTrack interface: existence and properties of interface prototype object 
</ins><span class="cx"> PASS TextTrack interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> FAIL TextTrack interface: attribute kind assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function &quot;function kind() {
</span><span class="cx">     [native code]
</span><span class="lines">@@ -2405,14 +2393,10 @@
</span><span class="cx"> PASS TextTrackCueList interface: document.createElement(&quot;video&quot;).addTextTrack(&quot;subtitles&quot;).cues must inherit property &quot;length&quot; with the proper type (0) 
</span><span class="cx"> PASS TextTrackCueList interface: document.createElement(&quot;video&quot;).addTextTrack(&quot;subtitles&quot;).cues must inherit property &quot;getCueById&quot; with the proper type (2) 
</span><span class="cx"> PASS TextTrackCueList interface: calling getCueById(DOMString) on document.createElement(&quot;video&quot;).addTextTrack(&quot;subtitles&quot;).cues with too few arguments must throw TypeError 
</span><del>-FAIL TextTrackCue interface: existence and properties of interface object assert_equals: prototype of TextTrackCue is not EventTarget expected function &quot;function EventTarget() {
-    [native code]
-}&quot; but got function &quot;function () {
-    [native code]
-}&quot;
</del><ins>+PASS TextTrackCue interface: existence and properties of interface object 
</ins><span class="cx"> FAIL TextTrackCue interface object length assert_equals: wrong value for TextTrackCue.length expected 0 but got 3
</span><span class="cx"> PASS TextTrackCue interface object name 
</span><del>-FAIL TextTrackCue interface: existence and properties of interface prototype object assert_equals: prototype of TextTrackCue.prototype is not EventTarget.prototype expected object &quot;[object EventTargetPrototype]&quot; but got object &quot;[object Object]&quot;
</del><ins>+PASS TextTrackCue interface: existence and properties of interface prototype object 
</ins><span class="cx"> PASS TextTrackCue interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS TextTrackCue interface: attribute track 
</span><span class="cx"> PASS TextTrackCue interface: attribute id 
</span><span class="lines">@@ -4208,14 +4192,10 @@
</span><span class="cx"> PASS BeforeUnloadEvent interface: existence and properties of interface prototype object 
</span><span class="cx"> PASS BeforeUnloadEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS BeforeUnloadEvent interface: attribute returnValue 
</span><del>-FAIL ApplicationCache interface: existence and properties of interface object assert_equals: prototype of ApplicationCache is not EventTarget expected function &quot;function EventTarget() {
-    [native code]
-}&quot; but got function &quot;function () {
-    [native code]
-}&quot;
</del><ins>+PASS ApplicationCache interface: existence and properties of interface object 
</ins><span class="cx"> PASS ApplicationCache interface object length 
</span><span class="cx"> PASS ApplicationCache interface object name 
</span><del>-FAIL ApplicationCache interface: existence and properties of interface prototype object assert_equals: prototype of ApplicationCache.prototype is not EventTarget.prototype expected object &quot;[object EventTargetPrototype]&quot; but got object &quot;[object Object]&quot;
</del><ins>+PASS ApplicationCache interface: existence and properties of interface prototype object 
</ins><span class="cx"> PASS ApplicationCache interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS ApplicationCache interface: constant UNCACHED on interface object 
</span><span class="cx"> PASS ApplicationCache interface: constant UNCACHED on interface prototype object 
</span><span class="lines">@@ -4406,14 +4386,10 @@
</span><span class="cx"> PASS MessageEvent interface: attribute source 
</span><span class="cx"> PASS MessageEvent interface: attribute ports 
</span><span class="cx"> FAIL MessageEvent interface: operation initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object],[object Object],MessagePort) assert_equals: property has wrong .length expected 8 but got 0
</span><del>-FAIL EventSource interface: existence and properties of interface object assert_equals: prototype of EventSource is not EventTarget expected function &quot;function EventTarget() {
-    [native code]
-}&quot; but got function &quot;function () {
-    [native code]
-}&quot;
</del><ins>+PASS EventSource interface: existence and properties of interface object 
</ins><span class="cx"> PASS EventSource interface object length 
</span><span class="cx"> PASS EventSource interface object name 
</span><del>-FAIL EventSource interface: existence and properties of interface prototype object assert_equals: prototype of EventSource.prototype is not EventTarget.prototype expected object &quot;[object EventTargetPrototype]&quot; but got object &quot;[object Object]&quot;
</del><ins>+PASS EventSource interface: existence and properties of interface prototype object 
</ins><span class="cx"> PASS EventSource interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS EventSource interface: attribute url 
</span><span class="cx"> PASS EventSource interface: attribute withCredentials 
</span><span class="lines">@@ -4428,14 +4404,10 @@
</span><span class="cx"> PASS EventSource interface: attribute onmessage 
</span><span class="cx"> PASS EventSource interface: attribute onerror 
</span><span class="cx"> PASS EventSource interface: operation close() 
</span><del>-FAIL WebSocket interface: existence and properties of interface object assert_equals: prototype of WebSocket is not EventTarget expected function &quot;function EventTarget() {
-    [native code]
-}&quot; but got function &quot;function () {
-    [native code]
-}&quot;
</del><ins>+PASS WebSocket interface: existence and properties of interface object 
</ins><span class="cx"> PASS WebSocket interface object length 
</span><span class="cx"> PASS WebSocket interface object name 
</span><del>-FAIL WebSocket interface: existence and properties of interface prototype object assert_equals: prototype of WebSocket.prototype is not EventTarget.prototype expected object &quot;[object EventTargetPrototype]&quot; but got object &quot;[object Object]&quot;
</del><ins>+PASS WebSocket interface: existence and properties of interface prototype object 
</ins><span class="cx"> PASS WebSocket interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS WebSocket interface: attribute url 
</span><span class="cx"> PASS WebSocket interface: constant CONNECTING on interface object 
</span><span class="lines">@@ -4536,14 +4508,10 @@
</span><span class="cx"> PASS MessageChannel interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS MessageChannel interface: attribute port1 
</span><span class="cx"> PASS MessageChannel interface: attribute port2 
</span><del>-FAIL MessagePort interface: existence and properties of interface object assert_equals: prototype of MessagePort is not EventTarget expected function &quot;function EventTarget() {
-    [native code]
-}&quot; but got function &quot;function () {
-    [native code]
-}&quot;
</del><ins>+PASS MessagePort interface: existence and properties of interface object 
</ins><span class="cx"> PASS MessagePort interface object length 
</span><span class="cx"> PASS MessagePort interface object name 
</span><del>-FAIL MessagePort interface: existence and properties of interface prototype object assert_equals: prototype of MessagePort.prototype is not EventTarget.prototype expected object &quot;[object EventTargetPrototype]&quot; but got object &quot;[object Object]&quot;
</del><ins>+PASS MessagePort interface: existence and properties of interface prototype object 
</ins><span class="cx"> PASS MessagePort interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS MessagePort interface: operation postMessage(any,[object Object]) 
</span><span class="cx"> PASS MessagePort interface: operation start() 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/ChangeLog        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -1,3 +1,130 @@
</span><ins>+2016-02-11  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        [Web IDL] interfaces should inherit EventTarget instead of duplicating the EventTarget API
+        https://bugs.webkit.org/show_bug.cgi?id=154121
+        &lt;rdar://problem/24613234&gt;
+
+        Reviewed by Gavin Barraclough.
+
+        Interfaces should inherit EventTarget instead of duplicating the
+        EventTarget API in their IDL. Not only the duplication is ugly and
+        error-prone, but this also does not match the specifications and
+        have subtle web-exposed differences.
+
+        This patch takes care of all interfaces except for DOMWindow and
+        WorkerGlobalScope. Those will be updated in the follow-up patch
+        as they will require a little bit more work and testing.
+
+        We should also be able to get rid of the [EventTarget] WebKit IDL
+        attribute in a follow-up.
+
+        No new tests, already covered by existing tests.
+
+        * Modules/battery/BatteryManager.idl:
+        * Modules/encryptedmedia/MediaKeySession.idl:
+        * Modules/indexeddb/IDBDatabase.h:
+        * Modules/indexeddb/IDBDatabase.idl:
+        * Modules/indexeddb/IDBRequest.h:
+        * Modules/indexeddb/IDBRequest.idl:
+        * Modules/indexeddb/IDBTransaction.h:
+        * Modules/indexeddb/IDBTransaction.idl:
+        * Modules/mediasession/MediaRemoteControls.idl:
+        * Modules/mediasource/MediaSource.h:
+        * Modules/mediasource/MediaSource.idl:
+        * Modules/mediasource/SourceBuffer.h:
+        * Modules/mediasource/SourceBuffer.idl:
+        * Modules/mediasource/SourceBufferList.h:
+        * Modules/mediasource/SourceBufferList.idl:
+        * Modules/mediastream/MediaStream.h:
+        * Modules/mediastream/MediaStream.idl:
+        * Modules/mediastream/MediaStreamTrack.h:
+        * Modules/mediastream/MediaStreamTrack.idl:
+        * Modules/mediastream/RTCDTMFSender.h:
+        * Modules/mediastream/RTCDTMFSender.idl:
+        * Modules/mediastream/RTCDataChannel.h:
+        * Modules/mediastream/RTCDataChannel.idl:
+        * Modules/mediastream/RTCPeerConnection.h:
+        * Modules/mediastream/RTCPeerConnection.idl:
+        * Modules/notifications/Notification.idl:
+        * Modules/speech/SpeechSynthesisUtterance.idl:
+        * Modules/webaudio/AudioContext.idl:
+        * Modules/webaudio/AudioNode.idl:
+        * Modules/websockets/WebSocket.idl:
+        * css/FontLoader.idl:
+        * dom/EventTarget.h:
+        * dom/MessagePort.idl:
+        * dom/Node.h:
+        * dom/Node.idl:
+        * dom/WebKitNamedFlow.idl:
+        * fileapi/FileReader.idl:
+        * html/MediaController.idl:
+        * html/track/AudioTrackList.idl:
+        * html/track/TextTrack.idl:
+        * html/track/TextTrackCue.idl:
+        * html/track/TextTrackList.idl:
+        * html/track/VideoTrackList.idl:
+        * loader/appcache/DOMApplicationCache.h:
+        * loader/appcache/DOMApplicationCache.idl:
+        * page/EventSource.idl:
+        * page/Performance.h:
+        * page/Performance.idl:
+        * workers/Worker.idl:
+        * xml/XMLHttpRequest.h:
+        * xml/XMLHttpRequest.idl:
+        * xml/XMLHttpRequestUpload.idl:
+        - Drop hardcoded EventTarget operations and inherit EventTarget instead.
+        - Drop JSGenerateToNativeObject / JSGenerateToJSObject IDL extended
+          attributes for interfaces inheriting the EventTarget interface as
+          the bindings generator now does this automatically for us.
+        - On native side, have EventTarget subclass ScriptWrappable instead of
+          each of its subclasses doing so. The issue was that
+          EventTargetOwner::finalize() was calling uncacheWrapper() with an
+          EventTarget*, which would not clear inlined cached wrapped (see
+          clearInlineCachedWrapper()) because EventTarget did not subclass
+          ScriptWrappable. However, cacheWrapper() is called is a specific
+          subtype pointer (e.g. Node*) and we would decide to create an
+          inline cached wrapper because Node subclassed ScriptWrappable
+          (as well as EventTarget).
+
+        * WebCore.xcodeproj/project.pbxproj:
+        Export JSEventTarget.h as private header to fix the build.
+
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::wrapperKey):
+        (WebCore::getCachedWrapper):
+        (WebCore::cacheWrapper):
+        (WebCore::uncacheWrapper):
+        Use new wrapperKey() function that is generated for each bindings
+        class that also has wrapperOwner(). This is used instead of the
+        C cast to void* in order to cast to the base wrapped type to fix
+        issues with multiple inheritance. The issue was that cacheWrapper()
+        was getting called with a DOM object subtype pointer (e.g.
+        AudioContext*) but uncacheWrapper() was getting called with a base
+        wrapped type pointer (e.g. EventTarget*). Most of our DOM classes
+        use multiple inheritance and thus the pointer values (used as keys
+        in the weak map) may differ.
+
+        * bindings/js/JSTrackCustom.cpp:
+        (WebCore::toJS):
+        Call CREATE_DOM_WRAPPER() with an actual wrapped type (e.g. AudioTrack)
+        instead of TrackBase type. TrackBase does not have corresponding
+        generated bindings and therefore does not have a wrapperKey()
+        function.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (ShouldGenerateToWrapped):
+        (ShouldGenerateToJSDeclaration):
+        (GenerateHeader):
+        - Generate a wrapperKey() utility function along-side wrapperOwner()
+          to help cast to the base wrapped type.
+        - Generate toWrapped() / toJS() utility functions for interfaces
+          that inherit EventTarget as those are required by our
+          implementation and this avoids having to explicitly have them in
+          the IDL.
+
+        * bindings/scripts/test/*:
+        Rebaseline bindings tests.
+
</ins><span class="cx"> 2016-02-11  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Optimize texture-complete checks
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesbatteryBatteryManageridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/battery/BatteryManager.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/battery/BatteryManager.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/battery/BatteryManager.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">     Conditional=BATTERY_STATUS,
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     EventTarget,
</span><del>-] interface BatteryManager {
</del><ins>+] interface BatteryManager : EventTarget {
</ins><span class="cx">     readonly attribute boolean charging;
</span><span class="cx">     readonly attribute unrestricted double chargingTime;
</span><span class="cx">     readonly attribute unrestricted double dischargingTime;
</span><span class="lines">@@ -33,9 +33,4 @@
</span><span class="cx">     attribute EventHandler onchargingtimechange;
</span><span class="cx">     attribute EventHandler ondischargingtimechange;
</span><span class="cx">     attribute EventHandler onlevelchange;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesencryptedmediaMediaKeySessionidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">     EventTarget,
</span><span class="cx">     InterfaceName=WebKitMediaKeySession,
</span><span class="cx">     ActiveDOMObject,
</span><del>-] interface MediaKeySession {
</del><ins>+] interface MediaKeySession : EventTarget {
</ins><span class="cx">     // error state
</span><span class="cx">     readonly attribute MediaKeyError error;
</span><span class="cx"> 
</span><span class="lines">@@ -43,9 +43,4 @@
</span><span class="cx">     attribute EventHandler onwebkitkeyadded;
</span><span class="cx">     attribute EventHandler onwebkitkeyerror;
</span><span class="cx">     attribute EventHandler onwebkitkeymessage;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBDatabaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> struct ExceptionCodeWithMessage;
</span><span class="cx"> 
</span><del>-class IDBDatabase : public RefCounted&lt;IDBDatabase&gt;, public ScriptWrappable, public EventTargetWithInlineData, public ActiveDOMObject {
</del><ins>+class IDBDatabase : public RefCounted&lt;IDBDatabase&gt;, public EventTargetWithInlineData, public ActiveDOMObject {
</ins><span class="cx"> public:
</span><span class="cx">     virtual ~IDBDatabase() { }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBDatabaseidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -28,8 +28,6 @@
</span><span class="cx">     Conditional=INDEXED_DATABASE,
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     EventTarget,
</span><del>-    JSGenerateToJSObject,
-    JSGenerateToNativeObject,
</del><span class="cx">     EnabledAtRuntime=IndexedDB,
</span><span class="cx">     SkipVTableValidation,
</span><span class="cx"> ] interface IDBDatabase : EventTarget {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBRequesth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBRequest.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBRequest.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBRequest.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx">     DeprecatedEarlyDeath = 3, // FIXME: https://bugs.webkit.org/show_bug.cgi?id=149117 - Remove this when removing LegacyIDB
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class IDBRequest : public ScriptWrappable, public EventTargetWithInlineData, public ActiveDOMObject {
</del><ins>+class IDBRequest : public EventTargetWithInlineData, public ActiveDOMObject {
</ins><span class="cx"> public:
</span><span class="cx">     virtual ~IDBRequest() { }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBRequestidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBRequest.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBRequest.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBRequest.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -32,8 +32,6 @@
</span><span class="cx">     EnabledAtRuntime=IndexedDB,
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     EventTarget,
</span><del>-    JSGenerateToJSObject,
-    JSGenerateToNativeObject,
</del><span class="cx">     SkipVTableValidation,
</span><span class="cx">     GenerateIsReachable=Impl,
</span><span class="cx"> ] interface IDBRequest : EventTarget {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBTransactionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> struct ExceptionCodeWithMessage;
</span><span class="cx"> struct IDBObjectStoreMetadata;
</span><span class="cx"> 
</span><del>-class IDBTransaction : public ScriptWrappable, public RefCounted&lt;IDBTransaction&gt;, public EventTargetWithInlineData, public ActiveDOMObject {
</del><ins>+class IDBTransaction : public RefCounted&lt;IDBTransaction&gt;, public EventTargetWithInlineData, public ActiveDOMObject {
</ins><span class="cx"> public:
</span><span class="cx">     virtual ~IDBTransaction() { }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBTransactionidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -28,8 +28,6 @@
</span><span class="cx">     Conditional=INDEXED_DATABASE,
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     EventTarget,
</span><del>-    JSGenerateToJSObject,
-    JSGenerateToNativeObject,
</del><span class="cx">     EnabledAtRuntime=IndexedDB,
</span><span class="cx">     SkipVTableValidation,
</span><span class="cx"> ] interface IDBTransaction : EventTarget {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasessionMediaRemoteControlsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasession/MediaRemoteControls.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasession/MediaRemoteControls.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediasession/MediaRemoteControls.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx">     Constructor,
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><span class="cx">     EventTarget,
</span><del>-    JSGenerateToJSObject,
</del><span class="cx"> ] interface MediaRemoteControls : EventTarget {
</span><span class="cx">     attribute boolean previousTrackEnabled;
</span><span class="cx">     attribute boolean nextTrackEnabled;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceMediaSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/MediaSource.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/MediaSource.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediasource/MediaSource.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> 
</span><span class="cx"> class GenericEventQueue;
</span><span class="cx"> 
</span><del>-class MediaSource : public MediaSourcePrivateClient, public ActiveDOMObject, public EventTargetWithInlineData, public ScriptWrappable, public URLRegistrable {
</del><ins>+class MediaSource : public MediaSourcePrivateClient, public ActiveDOMObject, public EventTargetWithInlineData, public URLRegistrable {
</ins><span class="cx"> public:
</span><span class="cx">     static void setRegistry(URLRegistry*);
</span><span class="cx">     static MediaSource* lookup(const String&amp; url) { return s_registry ? static_cast&lt;MediaSource*&gt;(s_registry-&gt;lookup(url)) : 0; }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceMediaSourceidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/MediaSource.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/MediaSource.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediasource/MediaSource.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -38,8 +38,6 @@
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     EventTarget,
</span><span class="cx">     EnabledBySetting=MediaSource,
</span><del>-    JSGenerateToJSObject,
-    JSGenerateToNativeObject,
</del><span class="cx">     Constructor,
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><span class="cx"> ] interface MediaSource : EventTarget {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceSourceBufferh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> class TimeRanges;
</span><span class="cx"> class VideoTrackList;
</span><span class="cx"> 
</span><del>-class SourceBuffer final : public RefCounted&lt;SourceBuffer&gt;, public ActiveDOMObject, public EventTargetWithInlineData, public ScriptWrappable, public SourceBufferPrivateClient, public AudioTrackClient, public VideoTrackClient, public TextTrackClient {
</del><ins>+class SourceBuffer final : public RefCounted&lt;SourceBuffer&gt;, public ActiveDOMObject, public EventTargetWithInlineData, public SourceBufferPrivateClient, public AudioTrackClient, public VideoTrackClient, public TextTrackClient {
</ins><span class="cx"> public:
</span><span class="cx">     static Ref&lt;SourceBuffer&gt; create(Ref&lt;SourceBufferPrivate&gt;&amp;&amp;, MediaSource*);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceSourceBufferidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/SourceBuffer.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/SourceBuffer.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediasource/SourceBuffer.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -38,8 +38,6 @@
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     EventTarget,
</span><del>-    JSGenerateToJSObject,
-    JSGenerateToNativeObject,
</del><span class="cx"> ] interface SourceBuffer : EventTarget {
</span><span class="cx"> 
</span><span class="cx">     [SetterRaisesException] attribute AppendMode mode;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceSourceBufferListh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/SourceBufferList.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/SourceBufferList.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediasource/SourceBufferList.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> 
</span><span class="cx"> class SourceBuffer;
</span><span class="cx"> 
</span><del>-class SourceBufferList final : public RefCounted&lt;SourceBufferList&gt;, public ScriptWrappable, public EventTargetWithInlineData {
</del><ins>+class SourceBufferList final : public RefCounted&lt;SourceBufferList&gt;, public EventTargetWithInlineData {
</ins><span class="cx"> public:
</span><span class="cx">     static Ref&lt;SourceBufferList&gt; create(ScriptExecutionContext* context)
</span><span class="cx">     {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceSourceBufferListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/SourceBufferList.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/SourceBufferList.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediasource/SourceBufferList.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -32,8 +32,6 @@
</span><span class="cx">     Conditional=MEDIA_SOURCE,
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx">     EventTarget,
</span><del>-    JSGenerateToJSObject,
-    JSGenerateToNativeObject,
</del><span class="cx">     GenerateIsReachable=Impl,
</span><span class="cx">     CallWith=ScriptExecutionContext,
</span><span class="cx"> ] interface SourceBufferList : EventTarget {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStream.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class MediaStream final : public URLRegistrable, public ScriptWrappable, public EventTargetWithInlineData, public ContextDestructionObserver, public MediaStreamTrack::Observer, public MediaStreamPrivate::Observer, public RefCounted&lt;MediaStream&gt; {
</del><ins>+class MediaStream final : public URLRegistrable, public EventTargetWithInlineData, public ContextDestructionObserver, public MediaStreamTrack::Observer, public MediaStreamPrivate::Observer, public RefCounted&lt;MediaStream&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     class Observer {
</span><span class="cx">     public:
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStream.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">     Constructor(MediaStream stream),
</span><span class="cx">     Constructor(MediaStreamTrack[] tracks),
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><del>-] interface MediaStream {
</del><ins>+] interface MediaStream : EventTarget {
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute DOMString id;
</span><span class="cx"> 
</span><span class="lines">@@ -49,10 +49,5 @@
</span><span class="cx">     attribute EventHandler oninactive;
</span><span class="cx">     attribute EventHandler onaddtrack;
</span><span class="cx">     attribute EventHandler onremovetrack;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> class MediaSourceSettings;
</span><span class="cx"> class MediaTrackConstraints;
</span><span class="cx"> 
</span><del>-class MediaStreamTrack final : public RefCounted&lt;MediaStreamTrack&gt;, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamTrackPrivate::Observer {
</del><ins>+class MediaStreamTrack final : public RefCounted&lt;MediaStreamTrack&gt;, public ActiveDOMObject, public EventTargetWithInlineData, public MediaStreamTrackPrivate::Observer {
</ins><span class="cx"> public:
</span><span class="cx">     class Observer {
</span><span class="cx">     public:
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx">     EventTarget,
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     SkipVTableValidation,
</span><del>-] interface MediaStreamTrack {
</del><ins>+] interface MediaStreamTrack : EventTarget {
</ins><span class="cx">     readonly attribute DOMString kind;
</span><span class="cx">     readonly attribute DOMString id;
</span><span class="cx">     readonly attribute DOMString label;
</span><span class="lines">@@ -52,10 +52,5 @@
</span><span class="cx">     void applyConstraints(Dictionary constraints);
</span><span class="cx"> 
</span><span class="cx">     attribute EventHandler onoverconstrained;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDTMFSenderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> class RTCPeerConnectionHandler;
</span><span class="cx"> class RTCDTMFSenderHandler;
</span><span class="cx"> 
</span><del>-class RTCDTMFSender final : public RefCounted&lt;RTCDTMFSender&gt;, public ScriptWrappable, public EventTargetWithInlineData, public RTCDTMFSenderHandlerClient, public ActiveDOMObject {
</del><ins>+class RTCDTMFSender final : public RefCounted&lt;RTCDTMFSender&gt;, public EventTargetWithInlineData, public RTCDTMFSenderHandlerClient, public ActiveDOMObject {
</ins><span class="cx"> public:
</span><span class="cx">     static RefPtr&lt;RTCDTMFSender&gt; create(ScriptExecutionContext*, RTCPeerConnectionHandler*, PassRefPtr&lt;MediaStreamTrack&gt;, ExceptionCode&amp;);
</span><span class="cx">     ~RTCDTMFSender();
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDTMFSenderidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">     Conditional=MEDIA_STREAM,
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     EventTarget,
</span><del>-] interface RTCDTMFSender {
</del><ins>+] interface RTCDTMFSender : EventTarget {
</ins><span class="cx">     readonly attribute boolean canInsertDTMF;
</span><span class="cx">     readonly attribute MediaStreamTrack track;
</span><span class="cx">     readonly attribute DOMString toneBuffer;
</span><span class="lines">@@ -38,9 +38,4 @@
</span><span class="cx">     [RaisesException] void insertDTMF(DOMString tones, optional long duration, optional long interToneGap);
</span><span class="cx"> 
</span><span class="cx">     attribute EventHandler ontonechange;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDataChannelh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> class RTCDataChannelHandler;
</span><span class="cx"> class RTCPeerConnectionHandler;
</span><span class="cx"> 
</span><del>-class RTCDataChannel final : public RefCounted&lt;RTCDataChannel&gt;, public ScriptWrappable, public EventTargetWithInlineData, public RTCDataChannelHandlerClient {
</del><ins>+class RTCDataChannel final : public RefCounted&lt;RTCDataChannel&gt;, public EventTargetWithInlineData, public RTCDataChannelHandlerClient {
</ins><span class="cx"> public:
</span><span class="cx">     static Ref&lt;RTCDataChannel&gt; create(ScriptExecutionContext*, std::unique_ptr&lt;RTCDataChannelHandler&gt;);
</span><span class="cx">     static RefPtr&lt;RTCDataChannel&gt; create(ScriptExecutionContext*, RTCPeerConnectionHandler*, const String&amp; label, const Dictionary&amp; options, ExceptionCode&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDataChannelidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx">     Conditional=MEDIA_STREAM,
</span><span class="cx">     EventTarget,
</span><del>-] interface RTCDataChannel {
</del><ins>+] interface RTCDataChannel : EventTarget {
</ins><span class="cx">     readonly attribute DOMString label;
</span><span class="cx">     readonly attribute boolean ordered;
</span><span class="cx">     readonly attribute unsigned short maxRetransmitTime;
</span><span class="lines">@@ -50,9 +50,4 @@
</span><span class="cx">     attribute EventHandler onerror;
</span><span class="cx">     attribute EventHandler onclose;
</span><span class="cx">     attribute EventHandler onmessage;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCPeerConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> class RTCSessionDescription;
</span><span class="cx"> class RTCStatsCallback;
</span><span class="cx"> 
</span><del>-class RTCPeerConnection final : public RefCounted&lt;RTCPeerConnection&gt;, public ScriptWrappable, public PeerConnectionBackendClient, public RTCRtpSenderClient, public EventTargetWithInlineData, public ActiveDOMObject {
</del><ins>+class RTCPeerConnection final : public RefCounted&lt;RTCPeerConnection&gt;, public PeerConnectionBackendClient, public RTCRtpSenderClient, public EventTargetWithInlineData, public ActiveDOMObject {
</ins><span class="cx"> public:
</span><span class="cx">     static RefPtr&lt;RTCPeerConnection&gt; create(ScriptExecutionContext&amp;, const Dictionary&amp; rtcConfiguration, ExceptionCode&amp;);
</span><span class="cx">     ~RTCPeerConnection();
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCPeerConnectionidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">     ConstructorRaisesException,
</span><span class="cx">     EventTarget,
</span><span class="cx">     InterfaceName=webkitRTCPeerConnection,
</span><del>-] interface RTCPeerConnection {
</del><ins>+] interface RTCPeerConnection : EventTarget {
</ins><span class="cx"> 
</span><span class="cx">     // Private functions called by runQueuedOperation() (RTCPeerConnectionInternals.js)
</span><span class="cx">     [Private] Promise queuedCreateOffer(optional Dictionary offerOptions);
</span><span class="lines">@@ -112,9 +112,4 @@
</span><span class="cx">     attribute EventHandler oniceconnectionstatechange;
</span><span class="cx">     attribute EventHandler onicegatheringstatechange;
</span><span class="cx">     attribute EventHandler ondatachannel;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesnotificationsNotificationidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/notifications/Notification.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/notifications/Notification.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/notifications/Notification.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">     Constructor(DOMString title, [Default=Undefined] optional Dictionary options),
</span><span class="cx">     ConstructorCallWith=Document,
</span><span class="cx"> #endif
</span><del>-] interface Notification {
</del><ins>+] interface Notification : EventTarget {
</ins><span class="cx">     void show();
</span><span class="cx">     [Conditional=LEGACY_NOTIFICATIONS] void cancel();
</span><span class="cx">     [Conditional=NOTIFICATIONS] void close();
</span><span class="lines">@@ -54,10 +54,5 @@
</span><span class="cx">     [Conditional=LEGACY_NOTIFICATIONS] attribute DOMString dir;
</span><span class="cx">     [Conditional=LEGACY_NOTIFICATIONS] attribute DOMString replaceId;
</span><span class="cx">     [Conditional=NOTIFICATIONS] attribute DOMString tag;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesspeechSpeechSynthesisUtteranceidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -28,7 +28,8 @@
</span><span class="cx">     EventTarget,
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><span class="cx">     Constructor([Default=NullString] optional DOMString text)
</span><del>-] interface SpeechSynthesisUtterance {
</del><ins>+] interface SpeechSynthesisUtterance : EventTarget
+{
</ins><span class="cx">     attribute DOMString text;
</span><span class="cx">     attribute DOMString lang;
</span><span class="cx">     attribute SpeechSynthesisVoice voice;
</span><span class="lines">@@ -43,9 +44,4 @@
</span><span class="cx">     attribute EventHandler onresume;
</span><span class="cx">     attribute EventHandler onmark;
</span><span class="cx">     attribute EventHandler onboundary;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioContextidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioContext.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">     CustomConstructor,
</span><span class="cx">     EventTarget,
</span><span class="cx">     InterfaceName=webkitAudioContext,
</span><del>-] interface AudioContext {
</del><ins>+] interface AudioContext : EventTarget {
</ins><span class="cx">     // All rendered audio ultimately connects to destination, which represents the audio hardware.
</span><span class="cx">     readonly attribute AudioDestinationNode destination;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioNode.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioNode.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/webaudio/AudioNode.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -24,8 +24,6 @@
</span><span class="cx"> 
</span><span class="cx"> [
</span><span class="cx">     Conditional=WEB_AUDIO,
</span><del>-    JSGenerateToJSObject,
-    JSGenerateToNativeObject,
</del><span class="cx">     GenerateIsReachable=Impl,
</span><span class="cx">     EventTarget,
</span><span class="cx"> ] interface AudioNode : EventTarget {
</span><span class="lines">@@ -40,8 +38,4 @@
</span><span class="cx">     [RaisesException] void connect(AudioNode? destination, [Default=Undefined] optional unsigned long output, [Default=Undefined] optional unsigned long input);
</span><span class="cx">     [RaisesException] void connect(AudioParam? destination, [Default=Undefined] optional unsigned long output);
</span><span class="cx">     [RaisesException] void disconnect([Default=Undefined] optional unsigned long output);
</span><del>-
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocket.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocket.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/Modules/websockets/WebSocket.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx">     ConstructorRaisesException,
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><span class="cx">     EventTarget,
</span><del>-] interface WebSocket {
</del><ins>+] interface WebSocket : EventTarget {
</ins><span class="cx">     readonly attribute DOMString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
</span><span class="cx">     readonly attribute DOMString url;
</span><span class="cx"> 
</span><span class="lines">@@ -69,9 +69,4 @@
</span><span class="cx">     [RaisesException] void send(DOMString data);
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void close([Clamp] optional unsigned short code, optional DOMString reason);
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -2416,7 +2416,7 @@
</span><span class="cx">                 5EA725D61ACABD5700EAD17B /* NavigatorMediaDevices.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EA725CB1ACABCB500EAD17B /* NavigatorMediaDevices.h */; };
</span><span class="cx">                 5F2DBBE9178E3C8100141486 /* CertificateInfoMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5F2DBBE7178E332D00141486 /* CertificateInfoMac.mm */; };
</span><span class="cx">                 5FA904CA178E61F5004C8A2D /* CertificateInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F2DBBE8178E336900141486 /* CertificateInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                5FC7DC26CFE2563200B85AE4 /* JSEventTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FC7DC26CFE2563200B85AE5 /* JSEventTarget.h */; };
</del><ins>+                5FC7DC26CFE2563200B85AE4 /* JSEventTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FC7DC26CFE2563200B85AE5 /* JSEventTarget.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 5FE1D292178FD1F3001AA3C3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FE1D291178FD1F3001AA3C3 /* Security.framework */; };
</span><span class="cx">                 626CDE0E1140424C001E5A68 /* SpatialNavigation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 626CDE0C1140424C001E5A68 /* SpatialNavigation.cpp */; };
</span><span class="cx">                 626CDE0F1140424C001E5A68 /* SpatialNavigation.h in Headers */ = {isa = PBXBuildFile; fileRef = 626CDE0D1140424C001E5A68 /* SpatialNavigation.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -177,6 +177,11 @@
</span><span class="cx">     return static_cast&lt;WebCoreTypedArrayController*&gt;(world.vm().m_typedArrayController.get())-&gt;wrapperOwner();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(JSC::ArrayBuffer* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> inline JSDOMObject* getInlineCachedWrapper(DOMWrapperWorld&amp;, void*) { return nullptr; }
</span><span class="cx"> inline bool setInlineCachedWrapper(DOMWrapperWorld&amp;, void*, JSDOMObject*, JSC::WeakHandleOwner*) { return false; }
</span><span class="cx"> inline bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, void*, JSDOMObject*) { return false; }
</span><span class="lines">@@ -231,7 +236,7 @@
</span><span class="cx"> {
</span><span class="cx">     if (JSC::JSObject* wrapper = getInlineCachedWrapper(world, domObject))
</span><span class="cx">         return wrapper;
</span><del>-    return world.m_wrappers.get(domObject);
</del><ins>+    return world.m_wrappers.get(wrapperKey(domObject));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename DOMClass, typename WrapperClass&gt; inline void cacheWrapper(DOMWrapperWorld&amp; world, DOMClass* domObject, WrapperClass* wrapper)
</span><span class="lines">@@ -239,14 +244,14 @@
</span><span class="cx">     JSC::WeakHandleOwner* owner = wrapperOwner(world, domObject);
</span><span class="cx">     if (setInlineCachedWrapper(world, domObject, wrapper, owner))
</span><span class="cx">         return;
</span><del>-    weakAdd(world.m_wrappers, (void*)domObject, JSC::Weak&lt;JSC::JSObject&gt;(wrapper, owner, &amp;world));
</del><ins>+    weakAdd(world.m_wrappers, wrapperKey(domObject), JSC::Weak&lt;JSC::JSObject&gt;(wrapper, owner, &amp;world));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename DOMClass, typename WrapperClass&gt; inline void uncacheWrapper(DOMWrapperWorld&amp; world, DOMClass* domObject, WrapperClass* wrapper)
</span><span class="cx"> {
</span><span class="cx">     if (clearInlineCachedWrapper(world, domObject, wrapper))
</span><span class="cx">         return;
</span><del>-    weakRemove(world.m_wrappers, (void*)domObject, wrapper);
</del><ins>+    weakRemove(world.m_wrappers, wrapperKey(domObject), wrapper);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #define CREATE_DOM_WRAPPER(globalObject, className, object) createWrapper&lt;JS##className&gt;(globalObject, static_cast&lt;className*&gt;(object))
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSTrackCustom.cpp (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSTrackCustom.cpp        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/js/JSTrackCustom.cpp        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -58,10 +58,6 @@
</span><span class="cx">     if (!track)
</span><span class="cx">         return jsNull();
</span><span class="cx">     
</span><del>-    JSObject* wrapper = getCachedWrapper(globalObject-&gt;world(), track);
-    if (wrapper)
-        return wrapper;
-    
</del><span class="cx">     switch (track-&gt;type()) {
</span><span class="cx">     case TrackBase::BaseTrack:
</span><span class="cx">         // This should never happen.
</span><span class="lines">@@ -69,12 +65,18 @@
</span><span class="cx">         break;
</span><span class="cx">         
</span><span class="cx">     case TrackBase::AudioTrack:
</span><ins>+        if (auto* wrapper = getCachedWrapper(globalObject-&gt;world(), toAudioTrack(track)))
+            return wrapper;
</ins><span class="cx">         return CREATE_DOM_WRAPPER(globalObject, AudioTrack, track);
</span><span class="cx"> 
</span><span class="cx">     case TrackBase::VideoTrack:
</span><ins>+        if (auto* wrapper = getCachedWrapper(globalObject-&gt;world(), toVideoTrack(track)))
+            return wrapper;
</ins><span class="cx">         return CREATE_DOM_WRAPPER(globalObject, VideoTrack, track);
</span><span class="cx"> 
</span><span class="cx">     case TrackBase::TextTrack:
</span><ins>+        if (auto* wrapper = getCachedWrapper(globalObject-&gt;world(), toTextTrack(track)))
+            return wrapper;
</ins><span class="cx">         return CREATE_DOM_WRAPPER(globalObject, TextTrack, track);
</span><span class="cx">     }
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorGObjectpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -1921,6 +1921,9 @@
</span><span class="cx"> sub GenerateInterface {
</span><span class="cx">     my ($object, $interface, $defines) = @_;
</span><span class="cx"> 
</span><ins>+    # FIXME: GObject bindings do not support EventTarget as base class.
+    $interface-&gt;parent(undef) if $interface-&gt;parent &amp;&amp; $interface-&gt;parent eq &quot;EventTarget&quot;;
+
</ins><span class="cx">     # Set up some global variables
</span><span class="cx">     $className = GetClassName($interface-&gt;name);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -531,9 +531,8 @@
</span><span class="cx">     my ($hasParent, $interface) = @_;
</span><span class="cx"> 
</span><span class="cx">     return 0 if not NeedsImplementationClass($interface);
</span><del>-    if (!$hasParent or $interface-&gt;extendedAttributes-&gt;{&quot;JSGenerateToNativeObject&quot;}) {
-        return 1;
-    }
</del><ins>+    return 1 if !$hasParent or $interface-&gt;extendedAttributes-&gt;{&quot;JSGenerateToNativeObject&quot;};
+    return 1 if $interface-&gt;parent &amp;&amp; $interface-&gt;parent eq &quot;EventTarget&quot;;
</ins><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -560,6 +559,7 @@
</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><span class="cx">     return 1 if (!$hasParent or $interface-&gt;extendedAttributes-&gt;{&quot;JSGenerateToJSObject&quot;} or $interface-&gt;extendedAttributes-&gt;{&quot;CustomToJSObject&quot;});
</span><ins>+    return 1 if $interface-&gt;parent &amp;&amp; $interface-&gt;parent eq &quot;EventTarget&quot;;
</ins><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1243,6 +1243,11 @@
</span><span class="cx">         push(@headerContent, &quot;    return &amp;owner.get();\n&quot;);
</span><span class="cx">         push(@headerContent, &quot;}\n&quot;);
</span><span class="cx">         push(@headerContent, &quot;\n&quot;);
</span><ins>+        push(@headerContent, &quot;inline void* wrapperKey($implType* domObject)\n&quot;);
+        push(@headerContent, &quot;{\n&quot;);
+        push(@headerContent, &quot;    return domObject;\n&quot;);
+        push(@headerContent, &quot;}\n&quot;);
+        push(@headerContent, &quot;\n&quot;);
</ins><span class="cx">     }
</span><span class="cx">     if (ShouldGenerateToJSDeclaration($hasParent, $interface)) {
</span><span class="cx">         # Node and NodeList have custom inline implementations which thus cannot be exported.
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorObjCpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -360,6 +360,10 @@
</span><span class="cx">     $fatalError = 0;
</span><span class="cx"> 
</span><span class="cx">     my $name = $interface-&gt;name;
</span><ins>+
+    # ObjC bindings only support EventTarget as base class for Node.
+    $interface-&gt;parents([grep(!/EventTarget/, @{$interface-&gt;parents})]) if $name ne &quot;Node&quot;;
+
</ins><span class="cx">     my $className = GetClassName($name);
</span><span class="cx">     my $parentClassName = &quot;DOM&quot; . GetParentImplClassName($interface);
</span><span class="cx">     $isProtocol = $interface-&gt;extendedAttributes-&gt;{ObjCProtocol};
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -78,6 +78,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestActiveDOMObject* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestActiveDOMObject*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestActiveDOMObject&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestActiveDOMObject*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -77,6 +77,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestClassWithJSBuiltinConstructor* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestClassWithJSBuiltinConstructor*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestClassWithJSBuiltinConstructor&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestClassWithJSBuiltinConstructor*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -74,6 +74,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestCustomConstructorWithNoInterfaceObject* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestCustomConstructorWithNoInterfaceObject*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestCustomConstructorWithNoInterfaceObject&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestCustomConstructorWithNoInterfaceObject*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGetterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -81,6 +81,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestCustomNamedGetter* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestCustomNamedGetter*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestCustomNamedGetter&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestCustomNamedGetter*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -77,6 +77,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestEventConstructor* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestEventConstructor*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestEventConstructor&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestEventConstructor*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -21,17 +21,13 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;JSTestEventTarget.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Event.h&quot;
</del><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;JSDOMBinding.h&quot;
</span><span class="cx"> #include &quot;JSDOMConstructor.h&quot;
</span><del>-#include &quot;JSEvent.h&quot;
-#include &quot;JSEventListener.h&quot;
</del><span class="cx"> #include &quot;JSNode.h&quot;
</span><span class="cx"> #include &quot;Node.h&quot;
</span><span class="cx"> #include &quot;wtf/text/AtomicString.h&quot;
</span><span class="cx"> #include &lt;runtime/Error.h&gt;
</span><del>-#include &lt;runtime/FunctionPrototype.h&gt;
</del><span class="cx"> #include &lt;runtime/PropertyNameArray.h&gt;
</span><span class="cx"> #include &lt;wtf/GetPtr.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -42,9 +38,6 @@
</span><span class="cx"> // Functions
</span><span class="cx"> 
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionItem(JSC::ExecState*);
</span><del>-JSC::EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionAddEventListener(JSC::ExecState*);
-JSC::EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionRemoveEventListener(JSC::ExecState*);
-JSC::EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionDispatchEvent(JSC::ExecState*);
</del><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><span class="lines">@@ -80,8 +73,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; JSValue JSTestEventTargetConstructor::prototypeForStructure(JSC::VM&amp; vm, const JSDOMGlobalObject&amp; globalObject)
</span><span class="cx"> {
</span><del>-    UNUSED_PARAM(vm);
-    return globalObject.functionPrototype();
</del><ins>+    return JSEventTarget::getConstructor(vm, &amp;globalObject);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; void JSTestEventTargetConstructor::initializeProperties(VM&amp; vm, JSDOMGlobalObject&amp; globalObject)
</span><span class="lines">@@ -99,9 +91,6 @@
</span><span class="cx"> {
</span><span class="cx">     { &quot;constructor&quot;, DontEnum, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestEventTargetConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestEventTargetConstructor) } },
</span><span class="cx">     { &quot;item&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestEventTargetPrototypeFunctionItem), (intptr_t) (1) } },
</span><del>-    { &quot;addEventListener&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestEventTargetPrototypeFunctionAddEventListener), (intptr_t) (2) } },
-    { &quot;removeEventListener&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestEventTargetPrototypeFunctionRemoveEventListener), (intptr_t) (2) } },
-    { &quot;dispatchEvent&quot;, JSC::Function, NoIntrinsic, { (intptr_t)static_cast&lt;NativeFunction&gt;(jsTestEventTargetPrototypeFunctionDispatchEvent), (intptr_t) (1) } },
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> const ClassInfo JSTestEventTargetPrototype::s_info = { &quot;TestEventTargetPrototype&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSTestEventTargetPrototype) };
</span><span class="lines">@@ -115,13 +104,13 @@
</span><span class="cx"> const ClassInfo JSTestEventTarget::s_info = { &quot;TestEventTarget&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSTestEventTarget) };
</span><span class="cx"> 
</span><span class="cx"> JSTestEventTarget::JSTestEventTarget(Structure* structure, JSDOMGlobalObject&amp; globalObject, Ref&lt;TestEventTarget&gt;&amp;&amp; impl)
</span><del>-    : JSDOMWrapper&lt;TestEventTarget&gt;(structure, globalObject, WTFMove(impl))
</del><ins>+    : JSEventTarget(structure, globalObject, WTFMove(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSObject* JSTestEventTarget::createPrototype(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><del>-    return JSTestEventTargetPrototype::create(vm, globalObject, JSTestEventTargetPrototype::createStructure(vm, globalObject, globalObject-&gt;objectPrototype()));
</del><ins>+    return JSTestEventTargetPrototype::create(vm, globalObject, JSTestEventTargetPrototype::createStructure(vm, globalObject, JSEventTarget::getPrototype(vm, globalObject)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSObject* JSTestEventTarget::getPrototype(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -129,12 +118,6 @@
</span><span class="cx">     return getDOMPrototype&lt;JSTestEventTarget&gt;(vm, globalObject);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JSTestEventTarget::destroy(JSC::JSCell* cell)
-{
-    JSTestEventTarget* thisObject = static_cast&lt;JSTestEventTarget*&gt;(cell);
-    thisObject-&gt;JSTestEventTarget::~JSTestEventTarget();
-}
-
</del><span class="cx"> bool JSTestEventTarget::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot&amp; slot)
</span><span class="cx"> {
</span><span class="cx">     auto* thisObject = jsCast&lt;JSTestEventTarget*&gt;(object);
</span><span class="lines">@@ -229,56 +212,6 @@
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionAddEventListener(ExecState* state)
-{
-    JSValue thisValue = state-&gt;thisValue();
-    JSTestEventTarget* castedThis = jsDynamicCast&lt;JSTestEventTarget*&gt;(thisValue);
-    if (UNLIKELY(!castedThis))
-        return throwThisTypeError(*state, &quot;TestEventTarget&quot;, &quot;addEventListener&quot;);
-    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestEventTarget::info());
-    auto&amp; impl = castedThis-&gt;wrapped();
-    JSValue listener = state-&gt;argument(1);
-    if (UNLIKELY(!listener.isObject()))
-        return JSValue::encode(jsUndefined());
-    impl.addEventListener(state-&gt;argument(0).toString(state)-&gt;toAtomicString(state), createJSEventListenerForAdd(*state, *asObject(listener), *castedThis), state-&gt;argument(2).toBoolean(state));
-    return JSValue::encode(jsUndefined());
-}
-
-EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionRemoveEventListener(ExecState* state)
-{
-    JSValue thisValue = state-&gt;thisValue();
-    JSTestEventTarget* castedThis = jsDynamicCast&lt;JSTestEventTarget*&gt;(thisValue);
-    if (UNLIKELY(!castedThis))
-        return throwThisTypeError(*state, &quot;TestEventTarget&quot;, &quot;removeEventListener&quot;);
-    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestEventTarget::info());
-    auto&amp; impl = castedThis-&gt;wrapped();
-    JSValue listener = state-&gt;argument(1);
-    if (UNLIKELY(!listener.isObject()))
-        return JSValue::encode(jsUndefined());
-    impl.removeEventListener(state-&gt;argument(0).toString(state)-&gt;toAtomicString(state), createJSEventListenerForRemove(*state, *asObject(listener), *castedThis).ptr(), state-&gt;argument(2).toBoolean(state));
-    return JSValue::encode(jsUndefined());
-}
-
-EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionDispatchEvent(ExecState* state)
-{
-    JSValue thisValue = state-&gt;thisValue();
-    JSTestEventTarget* castedThis = jsDynamicCast&lt;JSTestEventTarget*&gt;(thisValue);
-    if (UNLIKELY(!castedThis))
-        return throwThisTypeError(*state, &quot;TestEventTarget&quot;, &quot;dispatchEvent&quot;);
-    ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestEventTarget::info());
-    auto&amp; impl = castedThis-&gt;wrapped();
-    if (UNLIKELY(state-&gt;argumentCount() &lt; 1))
-        return throwVMError(state, createNotEnoughArgumentsError(state));
-    ExceptionCode ec = 0;
-    Event* evt = JSEvent::toWrapped(state-&gt;argument(0));
-    if (UNLIKELY(state-&gt;hadException()))
-        return JSValue::encode(jsUndefined());
-    JSValue result = jsBoolean(impl.dispatchEvent(evt, ec));
-
-    setDOMException(state, ec);
-    return JSValue::encode(result);
-}
-
</del><span class="cx"> void JSTestEventTarget::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
</span><span class="cx"> {
</span><span class="cx">     auto* thisObject = jsCast&lt;JSTestEventTarget*&gt;(cell);
</span><span class="lines">@@ -287,22 +220,6 @@
</span><span class="cx">     thisObject-&gt;wrapped().visitJSEventListeners(visitor);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSTestEventTargetOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor)
-{
-    auto* jsTestEventTarget = jsCast&lt;JSTestEventTarget*&gt;(handle.slot()-&gt;asCell());
-    if (jsTestEventTarget-&gt;wrapped().isFiringEventListeners())
-        return true;
-    UNUSED_PARAM(visitor);
-    return false;
-}
-
-void JSTestEventTargetOwner::finalize(JSC::Handle&lt;JSC::Unknown&gt; handle, void* context)
-{
-    auto* jsTestEventTarget = jsCast&lt;JSTestEventTarget*&gt;(handle.slot()-&gt;asCell());
-    auto&amp; world = *static_cast&lt;DOMWrapperWorld*&gt;(context);
-    uncacheWrapper(world, &amp;jsTestEventTarget-&gt;wrapped(), jsTestEventTarget);
-}
-
</del><span class="cx"> #if ENABLE(BINDING_INTEGRITY)
</span><span class="cx"> #if PLATFORM(WIN)
</span><span class="cx"> #pragma warning(disable: 4483)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -21,15 +21,14 @@
</span><span class="cx"> #ifndef JSTestEventTarget_h
</span><span class="cx"> #define JSTestEventTarget_h
</span><span class="cx"> 
</span><del>-#include &quot;JSDOMWrapper.h&quot;
</del><ins>+#include &quot;JSEventTarget.h&quot;
</ins><span class="cx"> #include &quot;TestEventTarget.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class JSTestEventTarget : public JSDOMWrapper&lt;TestEventTarget&gt; {
</del><ins>+class JSTestEventTarget : public JSEventTarget {
</ins><span class="cx"> public:
</span><del>-    typedef JSDOMWrapper&lt;TestEventTarget&gt; Base;
</del><ins>+    typedef JSEventTarget Base;
</ins><span class="cx">     static JSTestEventTarget* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref&lt;TestEventTarget&gt;&amp;&amp; impl)
</span><span class="cx">     {
</span><span class="cx">         globalObject-&gt;masqueradesAsUndefinedWatchpoint()-&gt;fireAll(&quot;Allocated masquerading object&quot;);
</span><span class="lines">@@ -45,7 +44,6 @@
</span><span class="cx">     static TestEventTarget* toWrapped(JSC::JSValue);
</span><span class="cx">     static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;);
</span><span class="cx">     static bool getOwnPropertySlotByIndex(JSC::JSObject*, JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&amp;);
</span><del>-    static void destroy(JSC::JSCell*);
</del><span class="cx"> 
</span><span class="cx">     DECLARE_INFO;
</span><span class="cx"> 
</span><span class="lines">@@ -58,6 +56,10 @@
</span><span class="cx">     static JSC::JSValue getConstructor(JSC::VM&amp;, const JSC::JSGlobalObject*);
</span><span class="cx">     static void visitChildren(JSCell*, JSC::SlotVisitor&amp;);
</span><span class="cx"> 
</span><ins>+    TestEventTarget&amp; wrapped() const
+    {
+        return static_cast&lt;TestEventTarget&amp;&gt;(Base::wrapped());
+    }
</ins><span class="cx"> public:
</span><span class="cx">     static const unsigned StructureFlags = JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::MasqueradesAsUndefined | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | Base::StructureFlags;
</span><span class="cx"> protected:
</span><span class="lines">@@ -73,18 +75,6 @@
</span><span class="cx">     bool nameGetter(JSC::ExecState*, JSC::PropertyName, JSC::JSValue&amp;);
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class JSTestEventTargetOwner : public JSC::WeakHandleOwner {
-public:
-    virtual bool isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt;, void* context, JSC::SlotVisitor&amp;);
-    virtual void finalize(JSC::Handle&lt;JSC::Unknown&gt;, void* context);
-};
-
-inline JSC::WeakHandleOwner* wrapperOwner(DOMWrapperWorld&amp;, TestEventTarget*)
-{
-    static NeverDestroyed&lt;JSTestEventTargetOwner&gt; owner;
-    return &amp;owner.get();
-}
-
</del><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestEventTarget*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestEventTarget&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestEventTarget*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -79,6 +79,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestException* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestException*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestException&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestException*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -75,6 +75,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestGenerateIsReachable* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestGenerateIsReachable*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestGenerateIsReachable&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestGenerateIsReachable*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -102,6 +102,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestInterface* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> WEBCORE_EXPORT JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestInterface*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestInterface&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestInterface*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -75,6 +75,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestMediaQueryListListener* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestMediaQueryListListener*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestMediaQueryListListener&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestMediaQueryListListener*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -76,6 +76,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestNamedConstructor* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestNamedConstructor*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestNamedConstructor&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestNamedConstructor*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministich"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -75,6 +75,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestNondeterministic* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestNondeterministic*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestNondeterministic&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestNondeterministic*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -91,6 +91,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestObj* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestObj*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestObj&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestObj*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -75,6 +75,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestOverloadedConstructors* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestOverloadedConstructors*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestOverloadedConstructors&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestOverloadedConstructors*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -82,6 +82,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestOverrideBuiltins* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestOverrideBuiltins*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestOverrideBuiltins&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestOverrideBuiltins*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -81,6 +81,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestSerializedScriptValueInterface* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestSerializedScriptValueInterface*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestSerializedScriptValueInterface&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestSerializedScriptValueInterface*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -78,6 +78,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(TestTypedefs* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestTypedefs*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TestTypedefs&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, TestTypedefs*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSattributeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -76,6 +76,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(attribute* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, attribute*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, attribute&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, attribute*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSreadonlyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -75,6 +75,11 @@
</span><span class="cx">     return &amp;owner.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+inline void* wrapperKey(readonly* domObject)
+{
+    return domObject;
+}
+
</ins><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, readonly*);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, readonly&amp; impl) { return toJS(state, globalObject, &amp;impl); }
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, readonly*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestEventTargeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventTarget.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventTarget.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventTarget.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -26,15 +26,9 @@
</span><span class="cx"> 
</span><span class="cx"> #import &lt;WebCore/DOMObject.h&gt;
</span><span class="cx"> 
</span><del>-@class DOMEvent;
</del><span class="cx"> @class DOMNode;
</span><del>-@class NSString;
-@protocol DOMEventListener;
</del><span class="cx"> 
</span><span class="cx"> WEBKIT_CLASS_AVAILABLE_MAC(9876_5)
</span><span class="cx"> WEBCORE_EXPORT @interface DOMTestEventTarget : DOMObject
</span><span class="cx"> - (DOMNode *)item:(unsigned)index;
</span><del>-- (void)addEventListener:(NSString *)type listener:(id &lt;DOMEventListener&gt;)listener useCapture:(BOOL)useCapture;
-- (void)removeEventListener:(NSString *)type listener:(id &lt;DOMEventListener&gt;)listener useCapture:(BOOL)useCapture;
-- (BOOL)dispatchEvent:(DOMEvent *)evt;
</del><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestEventTargetmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventTarget.mm (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventTarget.mm        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventTarget.mm        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -32,15 +32,11 @@
</span><span class="cx"> #import &quot;DOMEventInternal.h&quot;
</span><span class="cx"> #import &quot;DOMNodeInternal.h&quot;
</span><span class="cx"> #import &quot;DOMTestEventTargetInternal.h&quot;
</span><del>-#import &quot;Event.h&quot;
-#import &quot;EventListener.h&quot;
</del><span class="cx"> #import &quot;ExceptionHandlers.h&quot;
</span><span class="cx"> #import &quot;JSMainThreadExecState.h&quot;
</span><span class="cx"> #import &quot;Node.h&quot;
</span><del>-#import &quot;ObjCEventListener.h&quot;
</del><span class="cx"> #import &quot;TestEventTarget.h&quot;
</span><span class="cx"> #import &quot;ThreadCheck.h&quot;
</span><del>-#import &quot;URL.h&quot;
</del><span class="cx"> #import &quot;WebCoreObjCExtras.h&quot;
</span><span class="cx"> #import &quot;WebScriptObjectPrivate.h&quot;
</span><span class="cx"> #import &lt;wtf/GetPtr.h&gt;
</span><span class="lines">@@ -65,29 +61,6 @@
</span><span class="cx">     return kit(WTF::getPtr(IMPL-&gt;item(index)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)addEventListener:(NSString *)type listener:(id &lt;DOMEventListener&gt;)listener useCapture:(BOOL)useCapture
-{
-    WebCore::JSMainThreadNullState state;
-    RefPtr&lt;WebCore::EventListener&gt; nativeEventListener = WebCore::ObjCEventListener::wrap(listener);
-    IMPL-&gt;addEventListener(type, WTF::getPtr(nativeEventListener), useCapture);
-}
-
-- (void)removeEventListener:(NSString *)type listener:(id &lt;DOMEventListener&gt;)listener useCapture:(BOOL)useCapture
-{
-    WebCore::JSMainThreadNullState state;
-    RefPtr&lt;WebCore::EventListener&gt; nativeEventListener = WebCore::ObjCEventListener::wrap(listener);
-    IMPL-&gt;removeEventListener(type, WTF::getPtr(nativeEventListener), useCapture);
-}
-
-- (BOOL)dispatchEvent:(DOMEvent *)evt
-{
-    WebCore::JSMainThreadNullState state;
-    WebCore::ExceptionCode ec = 0;
-    BOOL result = IMPL-&gt;dispatchEvent(core(evt), ec);
-    WebCore::raiseOnDOMError(ec);
-    return result;
-}
-
</del><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> WebCore::TestEventTarget* core(DOMTestEventTarget *wrapper)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestTestEventTargetidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/TestEventTarget.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestEventTarget.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/bindings/scripts/test/TestEventTarget.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -29,17 +29,9 @@
</span><span class="cx"> [
</span><span class="cx">     EventTarget,
</span><span class="cx">     MasqueradesAsUndefined
</span><del>-] interface TestEventTarget {
</del><ins>+] interface TestEventTarget : EventTarget {
</ins><span class="cx"> 
</span><span class="cx">     getter Node item(unsigned long index);
</span><span class="cx">     getter Node (DOMString name);
</span><del>-
-    void addEventListener(DOMString type, 
-                          EventListener listener, 
-                          optional boolean useCapture);
-    void removeEventListener(DOMString type, 
-                             EventListener listener, 
-                             optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event evt);
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecssFontLoaderidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/FontLoader.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/FontLoader.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/css/FontLoader.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     EventTarget,
</span><span class="cx">     GenerateIsReachable=ImplDocument,
</span><del>-] interface FontLoader {
</del><ins>+] interface FontLoader : EventTarget {
</ins><span class="cx"> 
</span><span class="cx">     attribute EventHandler onloading;
</span><span class="cx">     attribute EventHandler onloadingdone;
</span><span class="lines">@@ -46,8 +46,4 @@
</span><span class="cx">     void loadFont(Dictionary params);
</span><span class="cx">     void notifyWhenFontsReady(VoidCallback callback);
</span><span class="cx">     readonly attribute boolean loading;
</span><del>-
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventTargeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventTarget.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventTarget.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/dom/EventTarget.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> #include &quot;EventListenerMap.h&quot;
</span><span class="cx"> #include &quot;EventNames.h&quot;
</span><span class="cx"> #include &quot;EventTargetInterfaces.h&quot;
</span><ins>+#include &quot;ScriptWrappable.h&quot;
</ins><span class="cx"> #include &lt;memory&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="lines">@@ -108,7 +109,7 @@
</span><span class="cx"> 
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class EventTarget {
</del><ins>+class EventTarget : public ScriptWrappable {
</ins><span class="cx"> public:
</span><span class="cx">     void ref() { refEventTarget(); }
</span><span class="cx">     void deref() { derefEventTarget(); }
</span></span></pre></div>
<a id="trunkSourceWebCoredomMessagePortidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MessagePort.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MessagePort.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/dom/MessagePort.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx">     GenerateIsReachable=Impl,
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx">     EventTarget,
</span><del>-] interface MessagePort {
</del><ins>+] interface MessagePort : EventTarget {
</ins><span class="cx"> // We need to have something as an ObjC binding, because MessagePort is used in MessageEvent, which already has one,
</span><span class="cx"> // but we don't want to actually expose the API while it is in flux.
</span><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><span class="lines">@@ -40,11 +40,6 @@
</span><span class="cx">     void close();
</span><span class="cx"> 
</span><span class="cx">     attribute EventHandler onmessage;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/dom/Node.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -30,7 +30,6 @@
</span><span class="cx"> #include &quot;LayoutRect.h&quot;
</span><span class="cx"> #include &quot;MutationObserver.h&quot;
</span><span class="cx"> #include &quot;RenderStyleConstants.h&quot;
</span><del>-#include &quot;ScriptWrappable.h&quot;
</del><span class="cx"> #include &quot;TreeScope.h&quot;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/ListHashSet.h&gt;
</span><span class="lines">@@ -113,7 +112,7 @@
</span><span class="cx">     RenderObject* m_renderer;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class Node : public EventTarget, public ScriptWrappable {
</del><ins>+class Node : public EventTarget {
</ins><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> 
</span><span class="cx">     friend class Document;
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/dom/Node.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -25,12 +25,13 @@
</span><span class="cx">     CustomIsReachable,
</span><span class="cx">     CustomToJSObject,
</span><span class="cx">     EventTarget,
</span><del>-    JSGenerateToNativeObject,
</del><span class="cx">     ObjCPolymorphic,
</span><span class="cx"> ] interface Node
</span><span class="cx"> #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C
</span><span class="cx">     : Object, EventTarget
</span><del>-#endif /* defined(LANGUAGE_OBJECTIVE_C) */
</del><ins>+#else
+    : EventTarget
+#endif
</ins><span class="cx">  {
</span><span class="cx">     // NodeType
</span><span class="cx">     const unsigned short      ELEMENT_NODE                   = 1;
</span><span class="lines">@@ -125,12 +126,5 @@
</span><span class="cx"> 
</span><span class="cx">     void inspect();
</span><span class="cx"> #endif
</span><del>-
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
-#endif
-
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomWebKitNamedFlowidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/WebKitNamedFlow.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/WebKitNamedFlow.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/dom/WebKitNamedFlow.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -30,18 +30,16 @@
</span><span class="cx"> [
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx">     EventTarget,
</span><del>-    JSGenerateToJSObject,
</del><span class="cx">     GenerateIsReachable=ImplOwnerNodeRoot,
</span><del>-] interface WebKitNamedFlow {
</del><ins>+] interface WebKitNamedFlow
+#if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
+: EventTarget
+#endif
+{
</ins><span class="cx">     readonly attribute DOMString name;
</span><span class="cx">     readonly attribute boolean overset;
</span><span class="cx">     readonly attribute long firstEmptyRegionIndex;
</span><span class="cx">     NodeList getRegionsByContent(Node contentNode);
</span><span class="cx">     NodeList getRegions();
</span><span class="cx">     NodeList getContent();
</span><del>-    
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorefileapiFileReaderidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/fileapi/FileReader.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/fileapi/FileReader.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/fileapi/FileReader.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx">     Constructor,
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><span class="cx">     EventTarget,
</span><del>-] interface FileReader {
</del><ins>+] interface FileReader : EventTarget {
</ins><span class="cx">     // ready states
</span><span class="cx">     const unsigned short EMPTY = 0;
</span><span class="cx">     const unsigned short LOADING = 1;
</span><span class="lines">@@ -55,11 +55,6 @@
</span><span class="cx"> 
</span><span class="cx">     readonly attribute FileError error;
</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);
-    [RaisesException] boolean dispatchEvent(Event event);
-
</del><span class="cx">     attribute EventHandler onloadstart;
</span><span class="cx">     attribute EventHandler onprogress;
</span><span class="cx">     attribute EventHandler onload;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlMediaControlleridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/MediaController.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/MediaController.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/html/MediaController.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -27,9 +27,8 @@
</span><span class="cx">     Conditional=VIDEO,
</span><span class="cx">     Constructor,
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><del>-    JSGenerateToJSObject,
</del><span class="cx">     EventTarget,
</span><del>-] interface MediaController {
</del><ins>+] interface MediaController : EventTarget {
</ins><span class="cx">     readonly attribute TimeRanges buffered;
</span><span class="cx">     readonly attribute TimeRanges seekable;
</span><span class="cx"> 
</span><span class="lines">@@ -48,9 +47,4 @@
</span><span class="cx"> 
</span><span class="cx">     [SetterRaisesException] attribute unrestricted double volume;
</span><span class="cx">     attribute boolean muted;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackAudioTrackListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/AudioTrackList.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/AudioTrackList.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/html/track/AudioTrackList.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">     GenerateIsReachable=ImplElementRoot,
</span><span class="cx">     EventTarget,
</span><span class="cx">     JSCustomMarkFunction,
</span><del>-] interface AudioTrackList {
</del><ins>+] interface AudioTrackList : EventTarget {
</ins><span class="cx">     readonly attribute unsigned long length;
</span><span class="cx">     getter AudioTrack item(unsigned long index);
</span><span class="cx">     AudioTrack getTrackById(DOMString id);
</span><span class="lines">@@ -37,9 +37,5 @@
</span><span class="cx">     attribute EventHandler onchange;
</span><span class="cx">     attribute EventHandler onaddtrack;
</span><span class="cx">     attribute EventHandler onremovetrack;
</span><del>-
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrack.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrack.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/html/track/TextTrack.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx">     GenerateIsReachable=ImplElementRoot,
</span><span class="cx">     JSCustomMarkFunction,
</span><span class="cx">     SkipVTableValidation,
</span><del>-] interface TextTrack {
</del><ins>+] interface TextTrack : EventTarget {
</ins><span class="cx">     readonly attribute DOMString id;
</span><span class="cx">     [CustomSetter] attribute TextTrackKind kind;
</span><span class="cx">     readonly attribute DOMString label;
</span><span class="lines">@@ -54,9 +54,4 @@
</span><span class="cx">     void addRegion(VTTRegion region);
</span><span class="cx">     [RaisesException] void removeRegion(VTTRegion region);
</span><span class="cx"> #endif
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackCueidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrackCue.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackCue.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/html/track/TextTrackCue.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -25,7 +25,6 @@
</span><span class="cx"> 
</span><span class="cx"> [
</span><span class="cx">     Conditional=VIDEO_TRACK,
</span><del>-    JSGenerateToNativeObject,
</del><span class="cx">     Constructor(unrestricted double startTime, unrestricted double endTime, DOMString text),
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><span class="cx">     EventTarget,
</span><span class="lines">@@ -33,7 +32,7 @@
</span><span class="cx">     CustomIsReachable,
</span><span class="cx">     CustomToJSObject,
</span><span class="cx">     SkipVTableValidation,
</span><del>-] interface TextTrackCue {
</del><ins>+] interface TextTrackCue : EventTarget {
</ins><span class="cx">     readonly attribute TextTrack track;
</span><span class="cx"> 
</span><span class="cx">     attribute DOMString id;
</span><span class="lines">@@ -43,10 +42,5 @@
</span><span class="cx"> 
</span><span class="cx">     attribute EventHandler onenter;
</span><span class="cx">     attribute EventHandler onexit;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrackList.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackList.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/html/track/TextTrackList.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">     GenerateIsReachable=ImplElementRoot,
</span><span class="cx">     EventTarget,
</span><span class="cx">     JSCustomMarkFunction,
</span><del>-] interface TextTrackList {
</del><ins>+] interface TextTrackList : EventTarget {
</ins><span class="cx">     readonly attribute unsigned long length;
</span><span class="cx">     getter TextTrack item(unsigned long index);
</span><span class="cx">     TextTrack getTrackById(DOMString id);
</span><span class="lines">@@ -36,9 +36,5 @@
</span><span class="cx">     attribute EventHandler onaddtrack;
</span><span class="cx">     attribute EventHandler onchange;
</span><span class="cx">     attribute EventHandler onremovetrack;
</span><del>-
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVideoTrackListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VideoTrackList.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VideoTrackList.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/html/track/VideoTrackList.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">     GenerateIsReachable=ImplElementRoot,
</span><span class="cx">     EventTarget,
</span><span class="cx">     JSCustomMarkFunction,
</span><del>-] interface VideoTrackList {
</del><ins>+] interface VideoTrackList : EventTarget {
</ins><span class="cx">     readonly attribute unsigned long length;
</span><span class="cx">     getter VideoTrack item(unsigned long index);
</span><span class="cx">     VideoTrack getTrackById(DOMString id);
</span><span class="lines">@@ -38,9 +38,5 @@
</span><span class="cx">     attribute EventHandler onchange;
</span><span class="cx">     attribute EventHandler onaddtrack;
</span><span class="cx">     attribute EventHandler onremovetrack;
</span><del>-
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheDOMApplicationCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/DOMApplicationCache.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/DOMApplicationCache.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/loader/appcache/DOMApplicationCache.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> class Frame;
</span><span class="cx"> class URL;
</span><span class="cx"> 
</span><del>-class DOMApplicationCache final : public ScriptWrappable, public RefCounted&lt;DOMApplicationCache&gt;, public EventTargetWithInlineData, public DOMWindowProperty {
</del><ins>+class DOMApplicationCache final : public RefCounted&lt;DOMApplicationCache&gt;, public EventTargetWithInlineData, public DOMWindowProperty {
</ins><span class="cx"> public:
</span><span class="cx">     static Ref&lt;DOMApplicationCache&gt; create(Frame* frame) { return adoptRef(*new DOMApplicationCache(frame)); }
</span><span class="cx">     virtual ~DOMApplicationCache() { ASSERT(!m_frame); }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheDOMApplicationCacheidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">     DoNotCheckConstants,
</span><span class="cx">     GenerateIsReachable=ImplFrame,
</span><span class="cx">     InterfaceName=ApplicationCache,
</span><del>-] interface DOMApplicationCache {
</del><ins>+] interface DOMApplicationCache : EventTarget {
</ins><span class="cx">     // update status
</span><span class="cx">     const unsigned short UNCACHED = 0;
</span><span class="cx">     const unsigned short IDLE = 1;
</span><span class="lines">@@ -50,10 +50,5 @@
</span><span class="cx">     attribute EventHandler onupdateready;
</span><span class="cx">     attribute EventHandler oncached;
</span><span class="cx">     attribute EventHandler onobsolete;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventSourceidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventSource.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventSource.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/page/EventSource.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><span class="cx">     ConstructorRaisesException,
</span><span class="cx">     EventTarget,
</span><del>-] interface EventSource {
</del><ins>+] interface EventSource : EventTarget {
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute DOMString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
</span><span class="cx">     readonly attribute DOMString url;
</span><span class="lines">@@ -53,10 +53,4 @@
</span><span class="cx">     attribute EventHandler onmessage;
</span><span class="cx">     attribute EventHandler onerror;
</span><span class="cx">     void close();
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
-
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorepagePerformanceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Performance.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Performance.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/page/Performance.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> class ResourceResponse;
</span><span class="cx"> class UserTiming;
</span><span class="cx"> 
</span><del>-class Performance final : public ScriptWrappable, public RefCounted&lt;Performance&gt;, public DOMWindowProperty, public EventTargetWithInlineData {
</del><ins>+class Performance final : public RefCounted&lt;Performance&gt;, public DOMWindowProperty, public EventTargetWithInlineData {
</ins><span class="cx"> public:
</span><span class="cx">     static Ref&lt;Performance&gt; create(Frame&amp; frame) { return adoptRef(*new Performance(frame)); }
</span><span class="cx">     ~Performance();
</span></span></pre></div>
<a id="trunkSourceWebCorepagePerformanceidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Performance.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Performance.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/page/Performance.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> [
</span><span class="cx">     Conditional=WEB_TIMING,
</span><span class="cx">     EventTarget,
</span><del>-] interface Performance {
</del><ins>+] interface Performance : EventTarget {
</ins><span class="cx">     readonly attribute PerformanceNavigation navigation;
</span><span class="cx">     readonly attribute PerformanceTiming timing;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkeridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/Worker.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/Worker.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/workers/Worker.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -27,8 +27,6 @@
</span><span class="cx"> 
</span><span class="cx"> [
</span><span class="cx">     CustomConstructor(DOMString scriptUrl),
</span><del>-    JSGenerateToNativeObject,
-    JSGenerateToJSObject,
</del><span class="cx">     ActiveDOMObject,
</span><span class="cx"> ] interface Worker : EventTarget {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLHttpRequesth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLHttpRequest.h (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLHttpRequest.h        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.h        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> class TextResourceDecoder;
</span><span class="cx"> class ThreadableLoader;
</span><span class="cx"> 
</span><del>-class XMLHttpRequest final : public ScriptWrappable, public RefCounted&lt;XMLHttpRequest&gt;, public EventTargetWithInlineData, private ThreadableLoaderClient, public ActiveDOMObject {
</del><ins>+class XMLHttpRequest final : public RefCounted&lt;XMLHttpRequest&gt;, public EventTargetWithInlineData, private ThreadableLoaderClient, public ActiveDOMObject {
</ins><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;XMLHttpRequest&gt; create(ScriptExecutionContext&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLHttpRequestidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLHttpRequest.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLHttpRequest.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx">     ConstructorCallWith=ScriptExecutionContext,
</span><span class="cx">     JSCustomMarkFunction,
</span><span class="cx">     EventTarget,
</span><del>-] interface XMLHttpRequest {
</del><ins>+] interface XMLHttpRequest : EventTarget {
</ins><span class="cx">     // From XMLHttpRequestEventTarget
</span><span class="cx">     attribute EventHandler onabort;
</span><span class="cx">     attribute EventHandler onerror;
</span><span class="lines">@@ -91,9 +91,4 @@
</span><span class="cx"> 
</span><span class="cx">     // Extension
</span><span class="cx">     [RaisesException] void overrideMimeType(DOMString override);
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLHttpRequestUploadidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLHttpRequestUpload.idl (196465 => 196466)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLHttpRequestUpload.idl        2016-02-12 05:21:29 UTC (rev 196465)
+++ trunk/Source/WebCore/xml/XMLHttpRequestUpload.idl        2016-02-12 07:28:32 UTC (rev 196466)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> [
</span><span class="cx">     GenerateIsReachable=Impl,
</span><span class="cx">     EventTarget,
</span><del>-] interface XMLHttpRequestUpload {
</del><ins>+] interface XMLHttpRequestUpload : EventTarget {
</ins><span class="cx">     // From XMLHttpRequestEventTarget
</span><span class="cx">     attribute EventHandler onabort;
</span><span class="cx">     attribute EventHandler onerror;
</span><span class="lines">@@ -38,10 +38,5 @@
</span><span class="cx">     attribute EventHandler onloadstart;
</span><span class="cx">     attribute EventHandler onprogress;
</span><span class="cx">     attribute EventHandler ontimeout;
</span><del>-
-    // EventTarget interface
-    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
-    [RaisesException] boolean dispatchEvent(Event event);
</del><span class="cx"> };
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>