<!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>[181507] 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/181507">181507</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2015-03-15 10:00:33 -0700 (Sun, 15 Mar 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>More event handler improvements
https://bugs.webkit.org/show_bug.cgi?id=142701

Reviewed by Anders Carlsson.

Source/WebCore:

These are the improvements:

- Use EventHandler rather than EventListener as the the type for event handler
  attributes. This matches the HTML specification, and also makes sense, since
  EventListener means something else (and we use it to mean that!). Also renamed
  JSWindowEventListener to WindowEventHandler. Even though this only affects the
  JavaScript code generated, it's not really a JavaScript-specific flag.

- Tweak formatting on addEventListener/removeEventListener/dispatchEvent in
  all the IDL files where the appear. This includes changing the spelling from
  &quot;evt&quot; to &quot;event&quot;. Some day we should fix this so these functions only need to
  appear in EventTarget.idl.

- Tweak formatting a bit on the IDL files we had to modify anyway.

- Use [Conditional] more often and #if less often in IDL files.

- Added a new [DocumentEventHandler] attribute for the selectionchange event.
  This involved adding new event handler attribute functions to JSEventListener.h
  for use by the JavaScript bindings.

- Removed a little unused code from the JavaScript code bindings generator.

- Improved the mechanism used by HTMLElement and SVGElement to share the list of
  content attributes that are event handlers so there is only one map rather than
  two. Made a similar mechanism so that HTMLBodyElement and HTMLFrameSetElement
  can share the list of window event handlers.

- Followed the HTML specification by putting all the event handler support in
  the HTMLElement class rather than having event handlers apply only a the
  particular element that uses those events. We already did this for most of
  our event handlers, but we are now doing it for all of them.

* Modules/battery/BatteryManager.idl: Use EventHandler instead of EventListener
as appropriate. Also reformatted addEventListener/removeEventListener/dispatchEvent.
* Modules/encryptedmedia/MediaKeySession.idl: Ditto.
* Modules/indexeddb/IDBDatabase.idl: Ditto.
* Modules/indexeddb/IDBOpenDBRequest.idl: Ditto.
* Modules/indexeddb/IDBRequest.idl: Ditto.
* Modules/indexeddb/IDBTransaction.idl: Ditto.
* Modules/mediastream/MediaStream.idl: Ditto.
* Modules/mediastream/MediaStreamTrack.idl: Ditto.
* Modules/mediastream/RTCDTMFSender.idl: Ditto.
* Modules/mediastream/RTCDataChannel.idl: Ditto.
* Modules/mediastream/RTCPeerConnection.idl: Ditto.
* Modules/speech/SpeechSynthesisUtterance.idl: Ditto.
* Modules/webaudio/AudioBufferSourceNode.idl: Ditto.
* Modules/webaudio/AudioContext.idl: Ditto.
* Modules/webaudio/OscillatorNode.idl: Ditto.
* Modules/webaudio/ScriptProcessorNode.idl: Ditto.
* Modules/websockets/WebSocket.idl: Ditto.
* css/FontLoader.idl: Ditto.
* dom/EventListener.idl: Ditto.
* dom/EventTarget.idl: Ditto.
* dom/MessagePort.idl: Ditto.
* dom/Node.idl: Ditto.
* dom/WebKitNamedFlow.idl: Ditto.
* fileapi/FileReader.idl: Ditto.
* html/MediaController.idl: Ditto.
* html/track/AudioTrackList.idl: Ditto.
* html/track/TextTrackCue.idl: Ditto.
* html/track/TextTrackList.idl: Ditto.
* html/track/VideoTrackList.idl: Ditto.
* loader/appcache/DOMApplicationCache.idl: Ditto.
* page/EventSource.idl: Ditto.
* page/Performance.idl: Ditto.
* workers/AbstractWorker.idl: Ditto.
* workers/DedicatedWorkerGlobalScope.idl: Ditto.
* workers/Worker.idl: Ditto.
* workers/WorkerGlobalScope.idl: Ditto.
* xml/XMLHttpRequest.idl: Ditto.
* xml/XMLHttpRequestUpload.idl: Ditto.

* Modules/notifications/Notification.idl: Did the above, but also used
[Conditional] instead of #if throughout.
* html/track/TextTrack.idl: Ditto.

* Modules/webaudio/AudioNode.idl: Tweaked paragraphing of this file.

* bindings/js/JSEventListener.cpp:
(WebCore::windowEventHandlerAttribute): Renamed to take the word &quot;forwarded&quot;
out of this. More closely matches the terminology used in IDL files and the
HTML specification.
(WebCore::setWindowEventHandlerAttribute): Ditto.
(WebCore::documentEventHandlerAttribute): Added.
(WebCore::setDocumentEventHandlerAttribute): Added.
* bindings/js/JSEventListener.h: Updated for above changes.

* bindings/objc/PublicDOMInterfaces.h: Renamed argument from &quot;evt&quot; to &quot;event&quot;.

* bindings/scripts/CodeGeneratorGObject.pm:
(SkipAttribute): Skip attributes of type &quot;EventHandler&quot; rather than attributes
of type &quot;EventListener&quot;.
* bindings/scripts/CodeGeneratorObjC.pm:
(SkipAttribute): Ditto.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation): Look for the type EventHandler instead of the type
EventListener for event handler attributes. Also added code to handle the new
DocumentEventHandler, and use the name WindowEventHandler instead of the name
JSWindowEventListener. Removed unneeded preflight check to see if we have
writable attributes; it was not doing us any good. (That caused a lot of code
to be un-indented and makes the diff hard to read.)

* bindings/scripts/IDLAttributes.txt: Removed JSWindowEventListener, and added
WindowEventHandler and DocumentEventHandler.

* bindings/scripts/test/TestObj.idl: Use the type EventHandler instead of the
type EventListener. The test output is unchanged, though.

* dom/Document.idl: Got rid of the conditionals and merged all the event handler
attributes into a single sorted, unconditional list. Added some that were missing,
as detected by the event-handler-attributes.html test.

* dom/Element.idl: Ditto. This includes moving attributes here that were formerly
only in certain element classes. Note that the script event handler attribute
support is still here, even though it should be in HTMLElement and SVGElement
instead. There's a FIXME about that, but no real urgency in fixing it.

* html/HTMLAttributeNames.in: Added onmessage. Previously, the support for this
was from the script attribute only, not the content attribute.

* html/HTMLBodyElement.cpp:
(WebCore::HTMLBodyElement::createWindowEventHandlerNameMap): Added. This
contains the list of all the window event handlers that can be set on a body
or frameset element and which are triggered by events on the window.
(WebCore::HTMLBodyElement::eventNameForWindowEventHandlerAttribute): Added.
This is the function to call to use the map above. Given an attribute, it
returns either null if it is not a window event handler attribute, or the
event type if it is one.
(WebCore::HTMLBodyElement::parseAttribute): Updated to use the new
functions above. Handling of these attributes is now unconditional, but
also we don't have to keep the nested if statements here up to date, just
the list of event handler attributes names in the map create function above.

* html/HTMLBodyElement.h: Added public eventNameForWindowEventHandlerAttribute
and private createWindowEventHandlerNameMap functions.

* html/HTMLBodyElement.idl: Updated to use WindowEventHandler, DocumentEventHandler,
and EventHandler. Also made everything unconditional. Also filled out the list here
to match the list handled as content attributes. All covered by the test.

* html/HTMLElement.cpp:
(WebCore::HTMLElement::createEventHandlerNameMap): Added. Replaces the old
populate function. Changed the list of event handler attributes to be a bit more
complete, and to be entirely unconditional. Also refactored this function to use
a new populateEventHandlerNameMap helper, shared with HTMLBodyElement.
(WebCore::HTMLElement::populateEventHandlerNameMap): Added. Factors out the code
that both this class and HTMLBodyElement use to build event handler name maps.
(WebCore::HTMLElement::eventNameForEventHandlerAttribute): Added. This is the
function that call to use the map above. Given an attribute it returns either
null if it is not an event handler attribute, or the event type if it is one.
This is actually two functions. One is a protected function for use by both this
class and HTMLBodyElement so they can share things like the optimization to look
for the &quot;on&quot; prefix. The other is the public function that we actually use in
HTMLElement and SVGElement.
(WebCore::HTMLElement::editabilityFromContentEditableAttr): Tweaked and refactored
to use lineageOfType. Would have been even simpler if this took an element instead
of a node. Unrelated to the event handler changes.
(WebCore::HTMLElement::parseAttribute): Removed long-obsolete code that decided
whether to call through to the base class. The base class function is empty and
never needs to be called, and in any case there is no value in doing work to
decide whether to call through to an empty function. Changed the style of the
function to use early return instead of else. Worth considering whether we want
to return early or call through to base class in this family of functions. It's
more efficient to return early, but doesn't work well if both the derived class
and base class want to respond to changes to the same attribute. The new logic
for event handler attributes is more straightforward than the old, since the
eventNameForEventHandlerAttribute has the logic.
(WebCore::HTMLElement::textToFragment): Tweaked and refactored a bit, and also
changed to return a Ref since this never fails and needs to return null.

* html/HTMLElement.h: Updated for above changes. This includes a template version
of populateEventHandlerNameMap that extracts the array size at compile time and
passes it to the non-template function that does the work.

* html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::parseAttribute): Removed unneeded code to handle
event handler attributes handled by HTMLElement.
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::parseAttribute): Ditto.
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::parseAttribute): Ditto.
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::parseAttribute): Ditto.
* html/HTMLScriptElement.cpp:
(WebCore::HTMLScriptElement::parseAttribute): Ditto.

* html/HTMLFrameSetElement.cpp:
(WebCore::HTMLFrameSetElement::parseAttribute): Changed function to early return
style, and added FIXMEs about the many problems in the attribute handling code.
Replaced all the code to handle window event handlers with a new bit of code that
calls HTMLBodyElement::eventNameForWindowEventHandlerAttribute.

* html/HTMLFrameSetElement.idl: Changed to match the list of window event handlers
in HTMLBodyElement.idl, although I did not add the document event handler here.
As in the various other cases, having some extra event handlers does not seem to
do harm and this is covered by the event-handler-attributes.html test.

* html/HTMLMarqueeElement.idl: Renamed EventListener to EventHandler in comment.

* page/DOMWindow.idl: As with Element and Document, removed conditionals, and
filled out the list of event handlers so all the tests in
event-handler-attributes.html will pass.

* svg/SVGElement.cpp:
(WebCore::SVGElement::parseAttribute): Changed code to the early return style,
and replaced the event handler attribute code with new much simpler code that
uses the new HTMLElement::eventNameForEventHandlerAttribute. Also changed the
way we call through to base classes. Just call through to the
SVGLangSpace::parseAttribute function unconditionally, and don't try to use
early return style to arbitrate among base classes. We should make this
simplification throughout the SVG code; there's no need for the complexity
that was there before just to cut down slightly on calls through to base
class parseAttribute functions.

* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::parseAttribute): Changed some of this code to the
early return style and corrected some comments about the window event handler
attributes here. These could use some further testing and might later need to be
properly supported when the attributes are set in script, not just in content.

* svg/SVGScriptElement.cpp:
(WebCore::SVGScriptElement::isSupportedAttribute): Deleted.
(WebCore::SVGScriptElement::parseAttribute): Changed this function to use the
early return style and also to call through to all three base classes. This is
a pattern we should follow elsewhere in SVG to simplify the code. There is no
need for the supportedAttributes sets like the one in this calass, and the code
is unnecessarily complex, perhaps in an attempt to optimize performance. I'm
pretty sure the old code was slower than this new code will be. No need for the
extra hash table lookup every time. Also removed handling of event handler
attribute which is taken care of by SVGElement now.
(WebCore::SVGScriptElement::svgAttributeChanged): Made similar changes for
the same reason as in parseAttribute. This function really needs a new name:
It's the same as parseAttribute, except it's also used when implementing
changes due to SVG animation.

* svg/SVGScriptElement.h: Removed isSupportedAttribute.

LayoutTests:

* fast/dom/event-handler-attributes-expected.txt: Updated to expect more passing tests,
and to accomodate some changes to what's tested and expected.

* fast/dom/event-handler-attributes.html: Update test to cover more events since we
no longer compile the event handlers conditionally; it's OK to have some handlers for
events even if the features in question aren't turned on.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastdomeventhandlerattributesexpectedtxt">trunk/LayoutTests/fast/dom/event-handler-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomeventhandlerattributeshtml">trunk/LayoutTests/fast/dom/event-handler-attributes.html</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="#trunkSourceWebCoreModulesindexeddbIDBDatabaseidl">trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBOpenDBRequestidl">trunk/Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBRequestidl">trunk/Source/WebCore/Modules/indexeddb/IDBRequest.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBTransactionidl">trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamidl">trunk/Source/WebCore/Modules/mediastream/MediaStream.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDTMFSenderidl">trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDataChannelidl">trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl</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="#trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodeidl">trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.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="#trunkSourceWebCoreModuleswebaudioOscillatorNodeidl">trunk/Source/WebCore/Modules/webaudio/OscillatorNode.idl</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioScriptProcessorNodeidl">trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.idl</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketidl">trunk/Source/WebCore/Modules/websockets/WebSocket.idl</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventListenercpp">trunk/Source/WebCore/bindings/js/JSEventListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventListenerh">trunk/Source/WebCore/bindings/js/JSEventListener.h</a></li>
<li><a href="#trunkSourceWebCorebindingsobjcPublicDOMInterfacesh">trunk/Source/WebCore/bindings/objc/PublicDOMInterfaces.h</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="#trunkSourceWebCorebindingsscriptsIDLAttributestxt">trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestTestObjidl">trunk/Source/WebCore/bindings/scripts/test/TestObj.idl</a></li>
<li><a href="#trunkSourceWebCorecssFontLoaderidl">trunk/Source/WebCore/css/FontLoader.idl</a></li>
<li><a href="#trunkSourceWebCoredomDocumentidl">trunk/Source/WebCore/dom/Document.idl</a></li>
<li><a href="#trunkSourceWebCoredomElementidl">trunk/Source/WebCore/dom/Element.idl</a></li>
<li><a href="#trunkSourceWebCoredomEventListeneridl">trunk/Source/WebCore/dom/EventListener.idl</a></li>
<li><a href="#trunkSourceWebCoredomEventTargetidl">trunk/Source/WebCore/dom/EventTarget.idl</a></li>
<li><a href="#trunkSourceWebCoredomMessagePortidl">trunk/Source/WebCore/dom/MessagePort.idl</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="#trunkSourceWebCorehtmlHTMLAttributeNamesin">trunk/Source/WebCore/html/HTMLAttributeNames.in</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLBodyElementcpp">trunk/Source/WebCore/html/HTMLBodyElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLBodyElementh">trunk/Source/WebCore/html/HTMLBodyElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLBodyElementidl">trunk/Source/WebCore/html/HTMLBodyElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementcpp">trunk/Source/WebCore/html/HTMLElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementh">trunk/Source/WebCore/html/HTMLElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameElementBasecpp">trunk/Source/WebCore/html/HTMLFrameElementBase.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameSetElementcpp">trunk/Source/WebCore/html/HTMLFrameSetElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameSetElementidl">trunk/Source/WebCore/html/HTMLFrameSetElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLImageElementcpp">trunk/Source/WebCore/html/HTMLImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLLinkElementcpp">trunk/Source/WebCore/html/HTMLLinkElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMarqueeElementidl">trunk/Source/WebCore/html/HTMLMarqueeElement.idl</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLObjectElementcpp">trunk/Source/WebCore/html/HTMLObjectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLScriptElementcpp">trunk/Source/WebCore/html/HTMLScriptElement.cpp</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="#trunkSourceWebCoreloaderappcacheDOMApplicationCacheidl">trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowidl">trunk/Source/WebCore/page/DOMWindow.idl</a></li>
<li><a href="#trunkSourceWebCorepageEventSourceidl">trunk/Source/WebCore/page/EventSource.idl</a></li>
<li><a href="#trunkSourceWebCorepagePerformanceidl">trunk/Source/WebCore/page/Performance.idl</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementcpp">trunk/Source/WebCore/svg/SVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGSVGElementcpp">trunk/Source/WebCore/svg/SVGSVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGScriptElementcpp">trunk/Source/WebCore/svg/SVGScriptElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGScriptElementh">trunk/Source/WebCore/svg/SVGScriptElement.h</a></li>
<li><a href="#trunkSourceWebCoreworkersAbstractWorkeridl">trunk/Source/WebCore/workers/AbstractWorker.idl</a></li>
<li><a href="#trunkSourceWebCoreworkersDedicatedWorkerGlobalScopeidl">trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.idl</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkeridl">trunk/Source/WebCore/workers/Worker.idl</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerGlobalScopeidl">trunk/Source/WebCore/workers/WorkerGlobalScope.idl</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 (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/LayoutTests/ChangeLog        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2015-03-14  Darin Adler  &lt;darin@apple.com&gt;
+
+        More event handler improvements
+        https://bugs.webkit.org/show_bug.cgi?id=142701
+
+        Reviewed by Anders Carlsson.
+
+        * fast/dom/event-handler-attributes-expected.txt: Updated to expect more passing tests,
+        and to accomodate some changes to what's tested and expected.
+
+        * fast/dom/event-handler-attributes.html: Update test to cover more events since we
+        no longer compile the event handlers conditionally; it's OK to have some handlers for
+        events even if the features in question aren't turned on.
+
</ins><span class="cx"> 2015-03-15  David Kilzer  &lt;ddkilzer@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] REGRESSION (r181191): Add results for css3/blending/svg-blend-plus-lighter.html
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomeventhandlerattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/event-handler-attributes-expected.txt (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/event-handler-attributes-expected.txt        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/LayoutTests/fast/dom/event-handler-attributes-expected.txt        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -17,6 +17,8 @@
</span><span class="cx"> PASS testScriptAttribute(window, &quot;click&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;contextmenu&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;dblclick&quot;) is &quot;window&quot;
</span><ins>+PASS testScriptAttribute(window, &quot;devicemotion&quot;) is &quot;window&quot;
+PASS testScriptAttribute(window, &quot;deviceorientation&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testScriptAttribute(window, &quot;drag&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;dragend&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;dragenter&quot;) is &quot;window&quot;
</span><span class="lines">@@ -29,6 +31,9 @@
</span><span class="cx"> PASS testScriptAttribute(window, &quot;ended&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;error&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;focus&quot;) is &quot;window&quot;
</span><ins>+PASS testScriptAttribute(window, &quot;gesturechange&quot;) is &quot;window&quot;
+PASS testScriptAttribute(window, &quot;gestureend&quot;) is &quot;window&quot;
+PASS testScriptAttribute(window, &quot;gesturestart&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testScriptAttribute(window, &quot;hashchange&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;input&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;invalid&quot;) is &quot;window&quot;
</span><span class="lines">@@ -50,6 +55,7 @@
</span><span class="cx"> PASS testScriptAttribute(window, &quot;mousewheel&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;offline&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;online&quot;) is &quot;window&quot;
</span><ins>+PASS testScriptAttribute(window, &quot;orientationchange&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testScriptAttribute(window, &quot;pagehide&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;pageshow&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;pause&quot;) is &quot;window&quot;
</span><span class="lines">@@ -70,6 +76,10 @@
</span><span class="cx"> PASS testScriptAttribute(window, &quot;submit&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;suspend&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;timeupdate&quot;) is &quot;window&quot;
</span><ins>+PASS testScriptAttribute(window, &quot;touchcancel&quot;) is &quot;window&quot;
+PASS testScriptAttribute(window, &quot;touchend&quot;) is &quot;window&quot;
+PASS testScriptAttribute(window, &quot;touchmove&quot;) is &quot;window&quot;
+PASS testScriptAttribute(window, &quot;touchstart&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testScriptAttribute(window, &quot;transitionend&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;unload&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;volumechange&quot;) is &quot;window&quot;
</span><span class="lines">@@ -77,11 +87,18 @@
</span><span class="cx"> PASS testScriptAttribute(window, &quot;webkitanimationend&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;webkitanimationiteration&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;webkitanimationstart&quot;) is &quot;window&quot;
</span><ins>+PASS testScriptAttribute(window, &quot;webkitdeviceproximity&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testScriptAttribute(window, &quot;webkittransitionend&quot;) is &quot;window&quot;
</span><ins>+PASS testScriptAttribute(window, &quot;webkitwillrevealbottom&quot;) is &quot;window&quot;
+PASS testScriptAttribute(window, &quot;webkitwillrevealleft&quot;) is &quot;window&quot;
+PASS testScriptAttribute(window, &quot;webkitwillrevealright&quot;) is &quot;window&quot;
+PASS testScriptAttribute(window, &quot;webkitwillrevealtop&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testScriptAttribute(window, &quot;wheel&quot;) is &quot;window&quot;
</span><span class="cx"> 
</span><span class="cx"> Event names we expect not to be able to set on the window object
</span><span class="cx"> 
</span><ins>+PASS testScriptAttribute(window, &quot;autocomplete&quot;) is &quot;none&quot;
+PASS testScriptAttribute(window, &quot;autocompleteerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testScriptAttribute(window, &quot;beforecopy&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;beforecut&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;beforeload&quot;) is &quot;none&quot;
</span><span class="lines">@@ -92,13 +109,21 @@
</span><span class="cx"> PASS testScriptAttribute(window, &quot;focusout&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;noneventname&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;paste&quot;) is &quot;none&quot;
</span><ins>+PASS testScriptAttribute(window, &quot;pointerlockchange&quot;) is &quot;none&quot;
+PASS testScriptAttribute(window, &quot;pointerlockerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testScriptAttribute(window, &quot;readystatechange&quot;) is &quot;none&quot;
</span><ins>+PASS testScriptAttribute(window, &quot;securitypolicyviolation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testScriptAttribute(window, &quot;selectionchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(window, &quot;selectstart&quot;) is &quot;none&quot;
</span><del>-PASS testScriptAttribute(window, &quot;touchcancel&quot;) is &quot;none&quot;
-PASS testScriptAttribute(window, &quot;touchend&quot;) is &quot;none&quot;
-PASS testScriptAttribute(window, &quot;touchmove&quot;) is &quot;none&quot;
-PASS testScriptAttribute(window, &quot;touchstart&quot;) is &quot;none&quot;
</del><ins>+PASS testScriptAttribute(window, &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;) is &quot;none&quot;
+PASS testScriptAttribute(window, &quot;webkitfullscreenchange&quot;) is &quot;none&quot;
+PASS testScriptAttribute(window, &quot;webkitfullscreenerror&quot;) is &quot;none&quot;
+PASS testScriptAttribute(window, &quot;webkitkeyadded&quot;) is &quot;none&quot;
+PASS testScriptAttribute(window, &quot;webkitkeyerror&quot;) is &quot;none&quot;
+PASS testScriptAttribute(window, &quot;webkitkeymessage&quot;) is &quot;none&quot;
+PASS testScriptAttribute(window, &quot;webkitneedkey&quot;) is &quot;none&quot;
+PASS testScriptAttribute(window, &quot;webkitplaybacktargetavailabilitychanged&quot;) is &quot;none&quot;
+PASS testScriptAttribute(window, &quot;webkitpresentationmodechanged&quot;) is &quot;none&quot;
</ins><span class="cx"> 
</span><span class="cx"> Event names we expect to be able to set on the document
</span><span class="cx"> 
</span><span class="lines">@@ -137,14 +162,27 @@
</span><span class="cx"> PASS testScriptAttribute(document, &quot;mouseup&quot;) is &quot;document&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;mousewheel&quot;) is &quot;document&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;paste&quot;) is &quot;document&quot;
</span><ins>+PASS testScriptAttribute(document, &quot;pointerlockchange&quot;) is &quot;document&quot;
+PASS testScriptAttribute(document, &quot;pointerlockerror&quot;) is &quot;document&quot;
</ins><span class="cx"> PASS testScriptAttribute(document, &quot;readystatechange&quot;) is &quot;document&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;reset&quot;) is &quot;document&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;scroll&quot;) is &quot;document&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;search&quot;) is &quot;document&quot;
</span><ins>+PASS testScriptAttribute(document, &quot;securitypolicyviolation&quot;) is &quot;document&quot;
</ins><span class="cx"> PASS testScriptAttribute(document, &quot;select&quot;) is &quot;document&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;selectionchange&quot;) is &quot;document&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;selectstart&quot;) is &quot;document&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;submit&quot;) is &quot;document&quot;
</span><ins>+PASS testScriptAttribute(document, &quot;touchcancel&quot;) is &quot;document&quot;
+PASS testScriptAttribute(document, &quot;touchend&quot;) is &quot;document&quot;
+PASS testScriptAttribute(document, &quot;touchmove&quot;) is &quot;document&quot;
+PASS testScriptAttribute(document, &quot;touchstart&quot;) is &quot;document&quot;
+PASS testScriptAttribute(document, &quot;webkitfullscreenchange&quot;) is &quot;document&quot;
+PASS testScriptAttribute(document, &quot;webkitfullscreenerror&quot;) is &quot;document&quot;
+PASS testScriptAttribute(document, &quot;webkitwillrevealbottom&quot;) is &quot;document&quot;
+PASS testScriptAttribute(document, &quot;webkitwillrevealleft&quot;) is &quot;document&quot;
+PASS testScriptAttribute(document, &quot;webkitwillrevealright&quot;) is &quot;document&quot;
+PASS testScriptAttribute(document, &quot;webkitwillrevealtop&quot;) is &quot;document&quot;
</ins><span class="cx"> PASS testScriptAttribute(document, &quot;wheel&quot;) is &quot;document&quot;
</span><span class="cx"> 
</span><span class="cx"> Event names we expect not to be able to set on the document
</span><span class="lines">@@ -152,15 +190,22 @@
</span><span class="cx"> PASS testScriptAttribute(document, &quot;animationend&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;animationiteration&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;animationstart&quot;) is &quot;none&quot;
</span><ins>+PASS testScriptAttribute(document, &quot;autocomplete&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;autocompleteerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testScriptAttribute(document, &quot;beforeload&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;beforeunload&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;canplay&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;canplaythrough&quot;) is &quot;none&quot;
</span><ins>+PASS testScriptAttribute(document, &quot;devicemotion&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;deviceorientation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testScriptAttribute(document, &quot;durationchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;emptied&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;ended&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;focusin&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;focusout&quot;) is &quot;none&quot;
</span><ins>+PASS testScriptAttribute(document, &quot;gesturechange&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;gestureend&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;gesturestart&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testScriptAttribute(document, &quot;hashchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;loadeddata&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;loadedmetadata&quot;) is &quot;none&quot;
</span><span class="lines">@@ -169,6 +214,7 @@
</span><span class="cx"> PASS testScriptAttribute(document, &quot;noneventname&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;offline&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;online&quot;) is &quot;none&quot;
</span><ins>+PASS testScriptAttribute(document, &quot;orientationchange&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testScriptAttribute(document, &quot;pagehide&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;pageshow&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;pause&quot;) is &quot;none&quot;
</span><span class="lines">@@ -184,10 +230,6 @@
</span><span class="cx"> PASS testScriptAttribute(document, &quot;storage&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;suspend&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;timeupdate&quot;) is &quot;none&quot;
</span><del>-PASS testScriptAttribute(document, &quot;touchcancel&quot;) is &quot;none&quot;
-PASS testScriptAttribute(document, &quot;touchend&quot;) is &quot;none&quot;
-PASS testScriptAttribute(document, &quot;touchmove&quot;) is &quot;none&quot;
-PASS testScriptAttribute(document, &quot;touchstart&quot;) is &quot;none&quot;
</del><span class="cx"> PASS testScriptAttribute(document, &quot;transitionend&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;unload&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;volumechange&quot;) is &quot;none&quot;
</span><span class="lines">@@ -195,6 +237,14 @@
</span><span class="cx"> PASS testScriptAttribute(document, &quot;webkitanimationend&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;webkitanimationiteration&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testScriptAttribute(document, &quot;webkitanimationstart&quot;) is &quot;none&quot;
</span><ins>+PASS testScriptAttribute(document, &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;webkitdeviceproximity&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;webkitkeyadded&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;webkitkeyerror&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;webkitkeymessage&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;webkitneedkey&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;webkitplaybacktargetavailabilitychanged&quot;) is &quot;none&quot;
+PASS testScriptAttribute(document, &quot;webkitpresentationmodechanged&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testScriptAttribute(document, &quot;webkittransitionend&quot;) is &quot;none&quot;
</span><span class="cx"> 
</span><span class="cx"> Event names we expect to be able to set on an element (tested on the &lt;html&gt; element)
</span><span class="lines">@@ -203,6 +253,8 @@
</span><span class="cx"> PASS testElementAttribute(element, &quot;animationend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;animationiteration&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;animationstart&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(element, &quot;autocomplete&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;autocompleteerror&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(element, &quot;beforecopy&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;beforecut&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;beforeload&quot;) is &quot;target&quot;
</span><span class="lines">@@ -230,6 +282,9 @@
</span><span class="cx"> PASS testElementAttribute(element, &quot;focus&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;focusin&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;focusout&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(element, &quot;gesturechange&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;gestureend&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;gesturestart&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(element, &quot;input&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;invalid&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;keydown&quot;) is &quot;target&quot;
</span><span class="lines">@@ -271,28 +326,48 @@
</span><span class="cx"> PASS testElementAttribute(element, &quot;transitionend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;volumechange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;waiting&quot;) is &quot;target&quot;
</span><del>-FAIL testElementAttribute(element, &quot;webkitanimationend&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(element, &quot;webkitanimationiteration&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(element, &quot;webkitanimationstart&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(element, &quot;webkittransitionend&quot;) should be target. Was script: none; content: target.
</del><ins>+PASS testElementAttribute(element, &quot;webkitanimationend&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitanimationiteration&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitanimationstart&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitfullscreenchange&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitfullscreenerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitkeyadded&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitkeyerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitkeymessage&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitneedkey&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitplaybacktargetavailabilitychanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitpresentationmodechanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkittransitionend&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitwillrevealbottom&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitwillrevealleft&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitwillrevealright&quot;) is &quot;target&quot;
+PASS testElementAttribute(element, &quot;webkitwillrevealtop&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(element, &quot;wheel&quot;) is &quot;target&quot;
</span><span class="cx"> 
</span><span class="cx"> Event names we expect not to be able to set on an element (tested on the &lt;html&gt; element)
</span><span class="cx"> 
</span><span class="cx"> PASS testElementAttribute(element, &quot;beforeunload&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(element, &quot;devicemotion&quot;) is &quot;none&quot;
+PASS testElementAttribute(element, &quot;deviceorientation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(element, &quot;hashchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;message&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;noneventname&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;offline&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;online&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(element, &quot;orientationchange&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(element, &quot;pagehide&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;pageshow&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(element, &quot;pointerlockchange&quot;) is &quot;none&quot;
+PASS testElementAttribute(element, &quot;pointerlockerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(element, &quot;popstate&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;readystatechange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;resize&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(element, &quot;securitypolicyviolation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(element, &quot;selectionchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;storage&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(element, &quot;unload&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(element, &quot;webkitdeviceproximity&quot;) is &quot;none&quot;
</ins><span class="cx"> 
</span><span class="cx"> Event names we expect to be able to set on an element (tested on the &lt;input&gt; element)
</span><span class="cx"> 
</span><span class="lines">@@ -300,6 +375,8 @@
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;animationend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;animationiteration&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;animationstart&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(inputElement, &quot;autocomplete&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;autocompleteerror&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(inputElement, &quot;beforecopy&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;beforecut&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;beforeload&quot;) is &quot;target&quot;
</span><span class="lines">@@ -327,6 +404,9 @@
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;focus&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;focusin&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;focusout&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(inputElement, &quot;gesturechange&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;gestureend&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;gesturestart&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(inputElement, &quot;input&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;invalid&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;keydown&quot;) is &quot;target&quot;
</span><span class="lines">@@ -368,28 +448,48 @@
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;transitionend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;volumechange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;waiting&quot;) is &quot;target&quot;
</span><del>-FAIL testElementAttribute(inputElement, &quot;webkitanimationend&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(inputElement, &quot;webkitanimationiteration&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(inputElement, &quot;webkitanimationstart&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(inputElement, &quot;webkittransitionend&quot;) should be target. Was script: none; content: target.
</del><ins>+PASS testElementAttribute(inputElement, &quot;webkitanimationend&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitanimationiteration&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitanimationstart&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitfullscreenchange&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitfullscreenerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitkeyadded&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitkeyerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitkeymessage&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitneedkey&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitplaybacktargetavailabilitychanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitpresentationmodechanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkittransitionend&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitwillrevealbottom&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitwillrevealleft&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitwillrevealright&quot;) is &quot;target&quot;
+PASS testElementAttribute(inputElement, &quot;webkitwillrevealtop&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(inputElement, &quot;wheel&quot;) is &quot;target&quot;
</span><span class="cx"> 
</span><span class="cx"> Event names we expect not to be able to set on an element (tested on the &lt;input&gt; element)
</span><span class="cx"> 
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;beforeunload&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(inputElement, &quot;devicemotion&quot;) is &quot;none&quot;
+PASS testElementAttribute(inputElement, &quot;deviceorientation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(inputElement, &quot;hashchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;message&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;noneventname&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;offline&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;online&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(inputElement, &quot;orientationchange&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(inputElement, &quot;pagehide&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;pageshow&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(inputElement, &quot;pointerlockchange&quot;) is &quot;none&quot;
+PASS testElementAttribute(inputElement, &quot;pointerlockerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(inputElement, &quot;popstate&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;readystatechange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;resize&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(inputElement, &quot;securitypolicyviolation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(inputElement, &quot;selectionchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;storage&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(inputElement, &quot;unload&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(inputElement, &quot;webkitdeviceproximity&quot;) is &quot;none&quot;
</ins><span class="cx"> 
</span><span class="cx"> Event names we expect to be able to set on an element (tested on the &lt;audio&gt; element)
</span><span class="cx"> 
</span><span class="lines">@@ -397,6 +497,8 @@
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;animationend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;animationiteration&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;animationstart&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(audioElement, &quot;autocomplete&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;autocompleteerror&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(audioElement, &quot;beforecopy&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;beforecut&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;beforeload&quot;) is &quot;target&quot;
</span><span class="lines">@@ -424,6 +526,9 @@
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;focus&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;focusin&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;focusout&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(audioElement, &quot;gesturechange&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;gestureend&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;gesturestart&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(audioElement, &quot;input&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;invalid&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;keydown&quot;) is &quot;target&quot;
</span><span class="lines">@@ -465,28 +570,48 @@
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;transitionend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;volumechange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;waiting&quot;) is &quot;target&quot;
</span><del>-FAIL testElementAttribute(audioElement, &quot;webkitanimationend&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(audioElement, &quot;webkitanimationiteration&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(audioElement, &quot;webkitanimationstart&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(audioElement, &quot;webkittransitionend&quot;) should be target. Was script: none; content: target.
</del><ins>+PASS testElementAttribute(audioElement, &quot;webkitanimationend&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitanimationiteration&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitanimationstart&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitfullscreenchange&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitfullscreenerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitkeyadded&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitkeyerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitkeymessage&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitneedkey&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitplaybacktargetavailabilitychanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitpresentationmodechanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkittransitionend&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitwillrevealbottom&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitwillrevealleft&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitwillrevealright&quot;) is &quot;target&quot;
+PASS testElementAttribute(audioElement, &quot;webkitwillrevealtop&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(audioElement, &quot;wheel&quot;) is &quot;target&quot;
</span><span class="cx"> 
</span><span class="cx"> Event names we expect not to be able to set on an element (tested on the &lt;audio&gt; element)
</span><span class="cx"> 
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;beforeunload&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(audioElement, &quot;devicemotion&quot;) is &quot;none&quot;
+PASS testElementAttribute(audioElement, &quot;deviceorientation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(audioElement, &quot;hashchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;message&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;noneventname&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;offline&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;online&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(audioElement, &quot;orientationchange&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(audioElement, &quot;pagehide&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;pageshow&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(audioElement, &quot;pointerlockchange&quot;) is &quot;none&quot;
+PASS testElementAttribute(audioElement, &quot;pointerlockerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(audioElement, &quot;popstate&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;readystatechange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;resize&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(audioElement, &quot;securitypolicyviolation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(audioElement, &quot;selectionchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;storage&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(audioElement, &quot;unload&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(audioElement, &quot;webkitdeviceproximity&quot;) is &quot;none&quot;
</ins><span class="cx"> 
</span><span class="cx"> Event names we expect to be able to set on an element (tested on the &lt;video&gt; element)
</span><span class="cx"> 
</span><span class="lines">@@ -494,6 +619,8 @@
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;animationend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;animationiteration&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;animationstart&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(videoElement, &quot;autocomplete&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;autocompleteerror&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(videoElement, &quot;beforecopy&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;beforecut&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;beforeload&quot;) is &quot;target&quot;
</span><span class="lines">@@ -521,6 +648,9 @@
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;focus&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;focusin&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;focusout&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(videoElement, &quot;gesturechange&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;gestureend&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;gesturestart&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(videoElement, &quot;input&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;invalid&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;keydown&quot;) is &quot;target&quot;
</span><span class="lines">@@ -562,50 +692,77 @@
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;transitionend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;volumechange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;waiting&quot;) is &quot;target&quot;
</span><del>-FAIL testElementAttribute(videoElement, &quot;webkitanimationend&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(videoElement, &quot;webkitanimationiteration&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(videoElement, &quot;webkitanimationstart&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(videoElement, &quot;webkittransitionend&quot;) should be target. Was script: none; content: target.
</del><ins>+PASS testElementAttribute(videoElement, &quot;webkitanimationend&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitanimationiteration&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitanimationstart&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitfullscreenchange&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitfullscreenerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitkeyadded&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitkeyerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitkeymessage&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitneedkey&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitplaybacktargetavailabilitychanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitpresentationmodechanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkittransitionend&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitwillrevealbottom&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitwillrevealleft&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitwillrevealright&quot;) is &quot;target&quot;
+PASS testElementAttribute(videoElement, &quot;webkitwillrevealtop&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(videoElement, &quot;wheel&quot;) is &quot;target&quot;
</span><span class="cx"> 
</span><span class="cx"> Event names we expect not to be able to set on an element (tested on the &lt;video&gt; element)
</span><span class="cx"> 
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;beforeunload&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(videoElement, &quot;devicemotion&quot;) is &quot;none&quot;
+PASS testElementAttribute(videoElement, &quot;deviceorientation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(videoElement, &quot;hashchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;message&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;noneventname&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;offline&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;online&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(videoElement, &quot;orientationchange&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(videoElement, &quot;pagehide&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;pageshow&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(videoElement, &quot;pointerlockchange&quot;) is &quot;none&quot;
+PASS testElementAttribute(videoElement, &quot;pointerlockerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(videoElement, &quot;popstate&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;readystatechange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;resize&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(videoElement, &quot;securitypolicyviolation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(videoElement, &quot;selectionchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;storage&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(videoElement, &quot;unload&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(videoElement, &quot;webkitdeviceproximity&quot;) is &quot;none&quot;
</ins><span class="cx"> 
</span><span class="cx"> Event names we expect to be forwarded from &lt;body&gt; element to window object)
</span><span class="cx"> 
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;beforeunload&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;blur&quot;) is &quot;window&quot;
</span><del>-FAIL testElementAttribute(bodyElement, &quot;error&quot;) should be window. Was script: window; content: target.
</del><ins>+PASS testElementAttribute(bodyElement, &quot;error&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testElementAttribute(bodyElement, &quot;focus&quot;) is &quot;window&quot;
</span><ins>+PASS testElementAttribute(bodyElement, &quot;focusin&quot;) is &quot;window&quot;
+PASS testElementAttribute(bodyElement, &quot;focusout&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testElementAttribute(bodyElement, &quot;hashchange&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;load&quot;) is &quot;window&quot;
</span><del>-FAIL testElementAttribute(bodyElement, &quot;message&quot;) should be window. Was script: window; content: none.
</del><ins>+PASS testElementAttribute(bodyElement, &quot;message&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testElementAttribute(bodyElement, &quot;offline&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;online&quot;) is &quot;window&quot;
</span><ins>+PASS testElementAttribute(bodyElement, &quot;orientationchange&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testElementAttribute(bodyElement, &quot;pagehide&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;pageshow&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;popstate&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;resize&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;storage&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;unload&quot;) is &quot;window&quot;
</span><ins>+PASS testElementAttribute(bodyElement, &quot;webkitwillrevealbottom&quot;) is &quot;window&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitwillrevealleft&quot;) is &quot;window&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitwillrevealright&quot;) is &quot;window&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitwillrevealtop&quot;) is &quot;window&quot;
</ins><span class="cx"> 
</span><span class="cx"> Event names we expect to be forwarded from &lt;body&gt; element to document)
</span><span class="cx"> 
</span><del>-FAIL testElementAttribute(bodyElement, &quot;selectionchange&quot;) should be document. Was script: none; content: document.
</del><ins>+PASS testElementAttribute(bodyElement, &quot;selectionchange&quot;) is &quot;document&quot;
</ins><span class="cx"> 
</span><span class="cx"> Non-forwarded event names on &lt;body&gt; element
</span><span class="cx"> 
</span><span class="lines">@@ -613,6 +770,8 @@
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;animationend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;animationiteration&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;animationstart&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(bodyElement, &quot;autocomplete&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;autocompleteerror&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(bodyElement, &quot;beforecopy&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;beforecut&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;beforeload&quot;) is &quot;target&quot;
</span><span class="lines">@@ -635,8 +794,9 @@
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;durationchange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;emptied&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;ended&quot;) is &quot;target&quot;
</span><del>-PASS testElementAttribute(bodyElement, &quot;focusin&quot;) is &quot;target&quot;
-PASS testElementAttribute(bodyElement, &quot;focusout&quot;) is &quot;target&quot;
</del><ins>+PASS testElementAttribute(bodyElement, &quot;gesturechange&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;gestureend&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;gesturestart&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(bodyElement, &quot;input&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;invalid&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;keydown&quot;) is &quot;target&quot;
</span><span class="lines">@@ -660,7 +820,7 @@
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;progress&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;ratechange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;reset&quot;) is &quot;target&quot;
</span><del>-FAIL testElementAttribute(bodyElement, &quot;scroll&quot;) should be target. Was script: target; content: window.
</del><ins>+FAIL testElementAttribute(bodyElement, &quot;scroll&quot;) should be target. Was window.
</ins><span class="cx"> PASS testElementAttribute(bodyElement, &quot;search&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;seeked&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;seeking&quot;) is &quot;target&quot;
</span><span class="lines">@@ -677,34 +837,56 @@
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;transitionend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;volumechange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(bodyElement, &quot;waiting&quot;) is &quot;target&quot;
</span><del>-FAIL testElementAttribute(bodyElement, &quot;webkitanimationend&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(bodyElement, &quot;webkitanimationiteration&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(bodyElement, &quot;webkitanimationstart&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(bodyElement, &quot;webkittransitionend&quot;) should be target. Was script: none; content: target.
</del><ins>+PASS testElementAttribute(bodyElement, &quot;webkitanimationend&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitanimationiteration&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitanimationstart&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitfullscreenchange&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitfullscreenerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitkeyadded&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitkeyerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitkeymessage&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitneedkey&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitplaybacktargetavailabilitychanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitpresentationmodechanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(bodyElement, &quot;webkittransitionend&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(bodyElement, &quot;wheel&quot;) is &quot;target&quot;
</span><span class="cx"> 
</span><span class="cx"> Event names we expect to not be able to set on &lt;body&gt; element
</span><span class="cx"> 
</span><ins>+PASS testElementAttribute(bodyElement, &quot;devicemotion&quot;) is &quot;none&quot;
+PASS testElementAttribute(bodyElement, &quot;deviceorientation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(bodyElement, &quot;noneventname&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(bodyElement, &quot;pointerlockchange&quot;) is &quot;none&quot;
+PASS testElementAttribute(bodyElement, &quot;pointerlockerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(bodyElement, &quot;readystatechange&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(bodyElement, &quot;securitypolicyviolation&quot;) is &quot;none&quot;
+PASS testElementAttribute(bodyElement, &quot;webkitdeviceproximity&quot;) is &quot;none&quot;
</ins><span class="cx"> 
</span><span class="cx"> Event names we expect to be forwarded from &lt;frameset&gt; element to window object)
</span><span class="cx"> 
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;beforeunload&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;blur&quot;) is &quot;window&quot;
</span><del>-FAIL testElementAttribute(framesetElement, &quot;error&quot;) should be window. Was script: window; content: target.
</del><ins>+PASS testElementAttribute(framesetElement, &quot;error&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testElementAttribute(framesetElement, &quot;focus&quot;) is &quot;window&quot;
</span><ins>+PASS testElementAttribute(framesetElement, &quot;focusin&quot;) is &quot;window&quot;
+PASS testElementAttribute(framesetElement, &quot;focusout&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testElementAttribute(framesetElement, &quot;hashchange&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;load&quot;) is &quot;window&quot;
</span><del>-FAIL testElementAttribute(framesetElement, &quot;message&quot;) should be window. Was script: window; content: none.
</del><ins>+PASS testElementAttribute(framesetElement, &quot;message&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testElementAttribute(framesetElement, &quot;offline&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;online&quot;) is &quot;window&quot;
</span><del>-FAIL testElementAttribute(framesetElement, &quot;pagehide&quot;) should be window. Was none.
-FAIL testElementAttribute(framesetElement, &quot;pageshow&quot;) should be window. Was none.
</del><ins>+PASS testElementAttribute(framesetElement, &quot;orientationchange&quot;) is &quot;window&quot;
+PASS testElementAttribute(framesetElement, &quot;pagehide&quot;) is &quot;window&quot;
+PASS testElementAttribute(framesetElement, &quot;pageshow&quot;) is &quot;window&quot;
</ins><span class="cx"> PASS testElementAttribute(framesetElement, &quot;popstate&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;resize&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;storage&quot;) is &quot;window&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;unload&quot;) is &quot;window&quot;
</span><ins>+PASS testElementAttribute(framesetElement, &quot;webkitwillrevealbottom&quot;) is &quot;window&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitwillrevealleft&quot;) is &quot;window&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitwillrevealright&quot;) is &quot;window&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitwillrevealtop&quot;) is &quot;window&quot;
</ins><span class="cx"> 
</span><span class="cx"> Event names we expect to be forwarded from &lt;frameset&gt; element to document)
</span><span class="cx"> 
</span><span class="lines">@@ -716,6 +898,8 @@
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;animationend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;animationiteration&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;animationstart&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(framesetElement, &quot;autocomplete&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;autocompleteerror&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(framesetElement, &quot;beforecopy&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;beforecut&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;beforeload&quot;) is &quot;target&quot;
</span><span class="lines">@@ -738,8 +922,9 @@
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;durationchange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;emptied&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;ended&quot;) is &quot;target&quot;
</span><del>-FAIL testElementAttribute(framesetElement, &quot;focusin&quot;) should be target. Was script: target; content: window.
-FAIL testElementAttribute(framesetElement, &quot;focusout&quot;) should be target. Was script: target; content: window.
</del><ins>+PASS testElementAttribute(framesetElement, &quot;gesturechange&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;gestureend&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;gesturestart&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(framesetElement, &quot;input&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;invalid&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;keydown&quot;) is &quot;target&quot;
</span><span class="lines">@@ -763,7 +948,7 @@
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;progress&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;ratechange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;reset&quot;) is &quot;target&quot;
</span><del>-FAIL testElementAttribute(framesetElement, &quot;scroll&quot;) should be target. Was script: target; content: window.
</del><ins>+FAIL testElementAttribute(framesetElement, &quot;scroll&quot;) should be target. Was window.
</ins><span class="cx"> PASS testElementAttribute(framesetElement, &quot;search&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;seeked&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;seeking&quot;) is &quot;target&quot;
</span><span class="lines">@@ -780,16 +965,31 @@
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;transitionend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;volumechange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(framesetElement, &quot;waiting&quot;) is &quot;target&quot;
</span><del>-FAIL testElementAttribute(framesetElement, &quot;webkitanimationend&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(framesetElement, &quot;webkitanimationiteration&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(framesetElement, &quot;webkitanimationstart&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(framesetElement, &quot;webkittransitionend&quot;) should be target. Was script: none; content: target.
</del><ins>+PASS testElementAttribute(framesetElement, &quot;webkitanimationend&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitanimationiteration&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitanimationstart&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitfullscreenchange&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitfullscreenerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitkeyadded&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitkeyerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitkeymessage&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitneedkey&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitplaybacktargetavailabilitychanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitpresentationmodechanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(framesetElement, &quot;webkittransitionend&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(framesetElement, &quot;wheel&quot;) is &quot;target&quot;
</span><span class="cx"> 
</span><span class="cx"> Event names we expect to not be able to set on &lt;frameset&gt; element
</span><span class="cx"> 
</span><ins>+PASS testElementAttribute(framesetElement, &quot;devicemotion&quot;) is &quot;none&quot;
+PASS testElementAttribute(framesetElement, &quot;deviceorientation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(framesetElement, &quot;noneventname&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(framesetElement, &quot;pointerlockchange&quot;) is &quot;none&quot;
+PASS testElementAttribute(framesetElement, &quot;pointerlockerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(framesetElement, &quot;readystatechange&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(framesetElement, &quot;securitypolicyviolation&quot;) is &quot;none&quot;
+PASS testElementAttribute(framesetElement, &quot;webkitdeviceproximity&quot;) is &quot;none&quot;
</ins><span class="cx"> 
</span><span class="cx"> Event names we expect to be able to set on an element (tested on the SVG &lt;rect&gt; element)
</span><span class="cx"> 
</span><span class="lines">@@ -797,6 +997,8 @@
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;animationend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;animationiteration&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;animationstart&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(rectElement, &quot;autocomplete&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;autocompleteerror&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(rectElement, &quot;beforecopy&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;beforecut&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;beforeload&quot;) is &quot;target&quot;
</span><span class="lines">@@ -824,6 +1026,9 @@
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;focus&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;focusin&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;focusout&quot;) is &quot;target&quot;
</span><ins>+PASS testElementAttribute(rectElement, &quot;gesturechange&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;gestureend&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;gesturestart&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(rectElement, &quot;input&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;invalid&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;keydown&quot;) is &quot;target&quot;
</span><span class="lines">@@ -865,28 +1070,48 @@
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;transitionend&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;volumechange&quot;) is &quot;target&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;waiting&quot;) is &quot;target&quot;
</span><del>-FAIL testElementAttribute(rectElement, &quot;webkitanimationend&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(rectElement, &quot;webkitanimationiteration&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(rectElement, &quot;webkitanimationstart&quot;) should be target. Was script: none; content: target.
-FAIL testElementAttribute(rectElement, &quot;webkittransitionend&quot;) should be target. Was script: none; content: target.
</del><ins>+PASS testElementAttribute(rectElement, &quot;webkitanimationend&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitanimationiteration&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitanimationstart&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitfullscreenchange&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitfullscreenerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitkeyadded&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitkeyerror&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitkeymessage&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitneedkey&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitplaybacktargetavailabilitychanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitpresentationmodechanged&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkittransitionend&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitwillrevealbottom&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitwillrevealleft&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitwillrevealright&quot;) is &quot;target&quot;
+PASS testElementAttribute(rectElement, &quot;webkitwillrevealtop&quot;) is &quot;target&quot;
</ins><span class="cx"> PASS testElementAttribute(rectElement, &quot;wheel&quot;) is &quot;target&quot;
</span><span class="cx"> 
</span><span class="cx"> Event names we expect not to be able to set on an element (tested on the SVG &lt;rect&gt; element)
</span><span class="cx"> 
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;beforeunload&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(rectElement, &quot;devicemotion&quot;) is &quot;none&quot;
+PASS testElementAttribute(rectElement, &quot;deviceorientation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(rectElement, &quot;hashchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;message&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;noneventname&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;offline&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;online&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(rectElement, &quot;orientationchange&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(rectElement, &quot;pagehide&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;pageshow&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(rectElement, &quot;pointerlockchange&quot;) is &quot;none&quot;
+PASS testElementAttribute(rectElement, &quot;pointerlockerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(rectElement, &quot;popstate&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;readystatechange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;resize&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(rectElement, &quot;securitypolicyviolation&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(rectElement, &quot;selectionchange&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;storage&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(rectElement, &quot;unload&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(rectElement, &quot;webkitdeviceproximity&quot;) is &quot;none&quot;
</ins><span class="cx"> 
</span><span class="cx"> Event names on a non-HTML element
</span><span class="cx"> 
</span><span class="lines">@@ -894,6 +1119,8 @@
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;animationend&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;animationiteration&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;animationstart&quot;) should be none. Was script: target; content: none.
</span><ins>+FAIL testElementAttribute(nonHTMLElement, &quot;autocomplete&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;autocompleteerror&quot;) should be none. Was script: target; content: none.
</ins><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;beforecopy&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;beforecut&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;beforeload&quot;) should be none. Was script: target; content: none.
</span><span class="lines">@@ -908,6 +1135,8 @@
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;copy&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;cut&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;dblclick&quot;) should be none. Was script: target; content: none.
</span><ins>+PASS testElementAttribute(nonHTMLElement, &quot;devicemotion&quot;) is &quot;none&quot;
+PASS testElementAttribute(nonHTMLElement, &quot;deviceorientation&quot;) is &quot;none&quot;
</ins><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;drag&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;dragend&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;dragenter&quot;) should be none. Was script: target; content: none.
</span><span class="lines">@@ -922,6 +1151,9 @@
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;focus&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;focusin&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;focusout&quot;) should be none. Was script: target; content: none.
</span><ins>+FAIL testElementAttribute(nonHTMLElement, &quot;gesturechange&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;gestureend&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;gesturestart&quot;) should be none. Was script: target; content: none.
</ins><span class="cx"> PASS testElementAttribute(nonHTMLElement, &quot;hashchange&quot;) is &quot;none&quot;
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;input&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;invalid&quot;) should be none. Was script: target; content: none.
</span><span class="lines">@@ -944,12 +1176,15 @@
</span><span class="cx"> PASS testElementAttribute(nonHTMLElement, &quot;noneventname&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(nonHTMLElement, &quot;offline&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(nonHTMLElement, &quot;online&quot;) is &quot;none&quot;
</span><ins>+PASS testElementAttribute(nonHTMLElement, &quot;orientationchange&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(nonHTMLElement, &quot;pagehide&quot;) is &quot;none&quot;
</span><span class="cx"> PASS testElementAttribute(nonHTMLElement, &quot;pageshow&quot;) is &quot;none&quot;
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;paste&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;pause&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;play&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;playing&quot;) should be none. Was script: target; content: none.
</span><ins>+PASS testElementAttribute(nonHTMLElement, &quot;pointerlockchange&quot;) is &quot;none&quot;
+PASS testElementAttribute(nonHTMLElement, &quot;pointerlockerror&quot;) is &quot;none&quot;
</ins><span class="cx"> PASS testElementAttribute(nonHTMLElement, &quot;popstate&quot;) is &quot;none&quot;
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;progress&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;ratechange&quot;) should be none. Was script: target; content: none.
</span><span class="lines">@@ -958,6 +1193,7 @@
</span><span class="cx"> PASS testElementAttribute(nonHTMLElement, &quot;resize&quot;) is &quot;none&quot;
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;scroll&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;search&quot;) should be none. Was script: target; content: none.
</span><ins>+PASS testElementAttribute(nonHTMLElement, &quot;securitypolicyviolation&quot;) is &quot;none&quot;
</ins><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;seeked&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;seeking&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;select&quot;) should be none. Was script: target; content: none.
</span><span class="lines">@@ -976,10 +1212,24 @@
</span><span class="cx"> PASS testElementAttribute(nonHTMLElement, &quot;unload&quot;) is &quot;none&quot;
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;volumechange&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;waiting&quot;) should be none. Was script: target; content: none.
</span><del>-PASS testElementAttribute(nonHTMLElement, &quot;webkitanimationend&quot;) is &quot;none&quot;
-PASS testElementAttribute(nonHTMLElement, &quot;webkitanimationiteration&quot;) is &quot;none&quot;
-PASS testElementAttribute(nonHTMLElement, &quot;webkitanimationstart&quot;) is &quot;none&quot;
-PASS testElementAttribute(nonHTMLElement, &quot;webkittransitionend&quot;) is &quot;none&quot;
</del><ins>+FAIL testElementAttribute(nonHTMLElement, &quot;webkitanimationend&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitanimationiteration&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitanimationstart&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;) should be none. Was script: target; content: none.
+PASS testElementAttribute(nonHTMLElement, &quot;webkitdeviceproximity&quot;) is &quot;none&quot;
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitfullscreenchange&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitfullscreenerror&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitkeyadded&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitkeyerror&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitkeymessage&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitneedkey&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitplaybacktargetavailabilitychanged&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitpresentationmodechanged&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkittransitionend&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitwillrevealbottom&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitwillrevealleft&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitwillrevealright&quot;) should be none. Was script: target; content: none.
+FAIL testElementAttribute(nonHTMLElement, &quot;webkitwillrevealtop&quot;) should be none. Was script: target; content: none.
</ins><span class="cx"> FAIL testElementAttribute(nonHTMLElement, &quot;wheel&quot;) should be none. Was script: target; content: none.
</span><span class="cx"> 
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomeventhandlerattributeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/event-handler-attributes.html (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/event-handler-attributes.html        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/LayoutTests/fast/dom/event-handler-attributes.html        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -25,6 +25,8 @@
</span><span class="cx">     &quot;click&quot;,
</span><span class="cx">     &quot;contextmenu&quot;,
</span><span class="cx">     &quot;dblclick&quot;,
</span><ins>+    &quot;devicemotion&quot;,
+    &quot;deviceorientation&quot;,
</ins><span class="cx">     &quot;drag&quot;,
</span><span class="cx">     &quot;dragend&quot;,
</span><span class="cx">     &quot;dragenter&quot;,
</span><span class="lines">@@ -37,6 +39,9 @@
</span><span class="cx">     &quot;ended&quot;,
</span><span class="cx">     &quot;error&quot;,
</span><span class="cx">     &quot;focus&quot;,
</span><ins>+    &quot;gesturechange&quot;,
+    &quot;gestureend&quot;,
+    &quot;gesturestart&quot;,
</ins><span class="cx">     &quot;hashchange&quot;,
</span><span class="cx">     &quot;input&quot;,
</span><span class="cx">     &quot;invalid&quot;,
</span><span class="lines">@@ -58,6 +63,7 @@
</span><span class="cx">     &quot;mousewheel&quot;,
</span><span class="cx">     &quot;offline&quot;,
</span><span class="cx">     &quot;online&quot;,
</span><ins>+    &quot;orientationchange&quot;,
</ins><span class="cx">     &quot;pagehide&quot;,
</span><span class="cx">     &quot;pageshow&quot;,
</span><span class="cx">     &quot;pause&quot;,
</span><span class="lines">@@ -78,6 +84,10 @@
</span><span class="cx">     &quot;submit&quot;,
</span><span class="cx">     &quot;suspend&quot;,
</span><span class="cx">     &quot;timeupdate&quot;,
</span><ins>+    &quot;touchcancel&quot;,
+    &quot;touchend&quot;,
+    &quot;touchmove&quot;,
+    &quot;touchstart&quot;,
</ins><span class="cx">     &quot;transitionend&quot;,
</span><span class="cx">     &quot;unload&quot;,
</span><span class="cx">     &quot;volumechange&quot;,
</span><span class="lines">@@ -85,7 +95,12 @@
</span><span class="cx">     &quot;webkitanimationend&quot;,
</span><span class="cx">     &quot;webkitanimationiteration&quot;,
</span><span class="cx">     &quot;webkitanimationstart&quot;,
</span><ins>+    &quot;webkitdeviceproximity&quot;,
</ins><span class="cx">     &quot;webkittransitionend&quot;,
</span><ins>+    &quot;webkitwillrevealbottom&quot;,
+    &quot;webkitwillrevealleft&quot;,
+    &quot;webkitwillrevealright&quot;,
+    &quot;webkitwillrevealtop&quot;,
</ins><span class="cx">     &quot;wheel&quot;,
</span><span class="cx"> ];
</span><span class="cx"> 
</span><span class="lines">@@ -125,14 +140,27 @@
</span><span class="cx">     &quot;mouseup&quot;,
</span><span class="cx">     &quot;mousewheel&quot;,
</span><span class="cx">     &quot;paste&quot;,
</span><ins>+    &quot;pointerlockchange&quot;,
+    &quot;pointerlockerror&quot;,
</ins><span class="cx">     &quot;readystatechange&quot;,
</span><span class="cx">     &quot;reset&quot;,
</span><span class="cx">     &quot;scroll&quot;,
</span><span class="cx">     &quot;search&quot;,
</span><ins>+    &quot;securitypolicyviolation&quot;,
</ins><span class="cx">     &quot;select&quot;,
</span><span class="cx">     &quot;selectionchange&quot;,
</span><span class="cx">     &quot;selectstart&quot;,
</span><span class="cx">     &quot;submit&quot;,
</span><ins>+    &quot;touchcancel&quot;,
+    &quot;touchend&quot;,
+    &quot;touchmove&quot;,
+    &quot;touchstart&quot;,
+    &quot;webkitfullscreenchange&quot;,
+    &quot;webkitfullscreenerror&quot;,
+    &quot;webkitwillrevealbottom&quot;,
+    &quot;webkitwillrevealleft&quot;,
+    &quot;webkitwillrevealright&quot;,
+    &quot;webkitwillrevealtop&quot;,
</ins><span class="cx">     &quot;wheel&quot;,
</span><span class="cx"> ];
</span><span class="cx"> 
</span><span class="lines">@@ -141,6 +169,8 @@
</span><span class="cx">     &quot;animationend&quot;,
</span><span class="cx">     &quot;animationiteration&quot;,
</span><span class="cx">     &quot;animationstart&quot;,
</span><ins>+    &quot;autocomplete&quot;,
+    &quot;autocompleteerror&quot;,
</ins><span class="cx">     &quot;beforecopy&quot;,
</span><span class="cx">     &quot;beforecut&quot;,
</span><span class="cx">     &quot;beforeload&quot;,
</span><span class="lines">@@ -168,6 +198,9 @@
</span><span class="cx">     &quot;focus&quot;,
</span><span class="cx">     &quot;focusin&quot;,
</span><span class="cx">     &quot;focusout&quot;,
</span><ins>+    &quot;gesturechange&quot;,
+    &quot;gestureend&quot;,
+    &quot;gesturestart&quot;,
</ins><span class="cx">     &quot;input&quot;,
</span><span class="cx">     &quot;invalid&quot;,
</span><span class="cx">     &quot;keydown&quot;,
</span><span class="lines">@@ -212,7 +245,20 @@
</span><span class="cx">     &quot;webkitanimationend&quot;,
</span><span class="cx">     &quot;webkitanimationiteration&quot;,
</span><span class="cx">     &quot;webkitanimationstart&quot;,
</span><ins>+    &quot;webkitcurrentplaybacktargetiswirelesschanged&quot;,
+    &quot;webkitfullscreenchange&quot;,
+    &quot;webkitfullscreenerror&quot;,
+    &quot;webkitkeyadded&quot;,
+    &quot;webkitkeyerror&quot;,
+    &quot;webkitkeymessage&quot;,
+    &quot;webkitneedkey&quot;,
+    &quot;webkitplaybacktargetavailabilitychanged&quot;,
+    &quot;webkitpresentationmodechanged&quot;,
</ins><span class="cx">     &quot;webkittransitionend&quot;,
</span><ins>+    &quot;webkitwillrevealbottom&quot;,
+    &quot;webkitwillrevealleft&quot;,
+    &quot;webkitwillrevealright&quot;,
+    &quot;webkitwillrevealtop&quot;,
</ins><span class="cx">     &quot;wheel&quot;,
</span><span class="cx"> ];
</span><span class="cx"> 
</span><span class="lines">@@ -221,17 +267,24 @@
</span><span class="cx">     &quot;blur&quot;,
</span><span class="cx">     &quot;error&quot;,
</span><span class="cx">     &quot;focus&quot;,
</span><ins>+    &quot;focusin&quot;,
+    &quot;focusout&quot;,
</ins><span class="cx">     &quot;hashchange&quot;,
</span><span class="cx">     &quot;load&quot;,
</span><span class="cx">     &quot;message&quot;,
</span><span class="cx">     &quot;offline&quot;,
</span><span class="cx">     &quot;online&quot;,
</span><ins>+    &quot;orientationchange&quot;,
</ins><span class="cx">     &quot;pagehide&quot;,
</span><span class="cx">     &quot;pageshow&quot;,
</span><span class="cx">     &quot;popstate&quot;,
</span><span class="cx">     &quot;resize&quot;,
</span><span class="cx">     &quot;storage&quot;,
</span><span class="cx">     &quot;unload&quot;,
</span><ins>+    &quot;webkitwillrevealbottom&quot;,
+    &quot;webkitwillrevealleft&quot;,
+    &quot;webkitwillrevealright&quot;,
+    &quot;webkitwillrevealtop&quot;,
</ins><span class="cx"> ];
</span><span class="cx"> 
</span><span class="cx"> const bodyElementDocumentForwardedEvents = [
</span><span class="lines">@@ -418,52 +471,6 @@
</span><span class="cx"> An alternative would be to always make these event handler attributes work even if the feature
</span><span class="cx"> that sends the events is turned off. See list here of IDL files that include these conditional events.
</span><span class="cx"> 
</span><del>-page/DOMWindow.idl:    [Conditional=ORIENTATION_EVENTS] attribute EventListener onorientationchange;
-page/DOMWindow.idl:    [Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
-page/DOMWindow.idl:    [Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
-page/DOMWindow.idl:    [Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
-page/DOMWindow.idl:    [Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
-page/DOMWindow.idl:    [Conditional=IOS_GESTURE_EVENTS] attribute EventListener ongesturestart;
-page/DOMWindow.idl:    [Conditional=IOS_GESTURE_EVENTS] attribute EventListener ongesturechange;
-page/DOMWindow.idl:    [Conditional=IOS_GESTURE_EVENTS] attribute EventListener ongestureend;
-page/DOMWindow.idl:    [Conditional=DEVICE_ORIENTATION] attribute EventListener ondevicemotion;
-page/DOMWindow.idl:    [Conditional=DEVICE_ORIENTATION] attribute EventListener ondeviceorientation;
-page/DOMWindow.idl:    [Conditional=PROXIMITY_EVENTS] attribute EventListener onwebkitdeviceproximity;
-page/DOMWindow.idl:    [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
-page/DOMWindow.idl:    [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
-page/DOMWindow.idl:    [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
-page/DOMWindow.idl:    [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
-
-dom/Document.idl:    [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
-dom/Document.idl:    [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
-dom/Document.idl:    [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
-dom/Document.idl:    [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
-dom/Document.idl:    [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenchange;
-dom/Document.idl:    [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenerror;
-dom/Document.idl:    [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onpointerlockchange;
-dom/Document.idl:    [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onpointerlockerror;
-dom/Document.idl:    [NotEnumerable, Conditional=CSP_NEXT] attribute EventListener onsecuritypolicyviolation;
-dom/Document.idl:    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
-dom/Document.idl:    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
-dom/Document.idl:    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
-dom/Document.idl:    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
-
-dom/Element.idl:    [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventListener onwebkitkeyadded;
-dom/Element.idl:    [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventListener onwebkitkeyerror;
-dom/Element.idl:    [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventListener onwebkitkeymessage;
-dom/Element.idl:    [NotEnumerable, Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] attribute EventListener onwebkitneedkey;
-dom/Element.idl:    [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenchange;
-dom/Element.idl:    [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenerror;
-dom/Element.idl:    [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventListener onautocomplete;
-dom/Element.idl:    [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventListener onautocompleteerror;
-dom/Element.idl:    [NotEnumerable, Conditional=VIDEO_PRESENTATION_MODE] attribute EventListener onwebkitpresentationmodechanged;
-dom/Element.idl:    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
-dom/Element.idl:    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
-dom/Element.idl:    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
-dom/Element.idl:    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
-dom/Element.idl:    [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventListener onwebkitcurrentplaybacktargetiswirelesschanged;
-dom/Element.idl:    [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventListener onwebkitplaybacktargetavailabilitychanged;
-
</del><span class="cx"> html/HTMLBodyElement.idl:    [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] attribute EventListener onorientationchange;
</span><span class="cx"> 
</span><span class="cx"> html/HTMLFrameSetElement.idl:    [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] attribute EventListener onorientationchange;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/ChangeLog        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -1,3 +1,249 @@
</span><ins>+2015-03-14  Darin Adler  &lt;darin@apple.com&gt;
+
+        More event handler improvements
+        https://bugs.webkit.org/show_bug.cgi?id=142701
+
+        Reviewed by Anders Carlsson.
+
+        These are the improvements:
+
+        - Use EventHandler rather than EventListener as the the type for event handler
+          attributes. This matches the HTML specification, and also makes sense, since
+          EventListener means something else (and we use it to mean that!). Also renamed
+          JSWindowEventListener to WindowEventHandler. Even though this only affects the
+          JavaScript code generated, it's not really a JavaScript-specific flag.
+
+        - Tweak formatting on addEventListener/removeEventListener/dispatchEvent in
+          all the IDL files where the appear. This includes changing the spelling from
+          &quot;evt&quot; to &quot;event&quot;. Some day we should fix this so these functions only need to
+          appear in EventTarget.idl.
+
+        - Tweak formatting a bit on the IDL files we had to modify anyway.
+
+        - Use [Conditional] more often and #if less often in IDL files.
+
+        - Added a new [DocumentEventHandler] attribute for the selectionchange event.
+          This involved adding new event handler attribute functions to JSEventListener.h
+          for use by the JavaScript bindings.
+
+        - Removed a little unused code from the JavaScript code bindings generator.
+
+        - Improved the mechanism used by HTMLElement and SVGElement to share the list of
+          content attributes that are event handlers so there is only one map rather than
+          two. Made a similar mechanism so that HTMLBodyElement and HTMLFrameSetElement
+          can share the list of window event handlers.
+
+        - Followed the HTML specification by putting all the event handler support in
+          the HTMLElement class rather than having event handlers apply only a the
+          particular element that uses those events. We already did this for most of
+          our event handlers, but we are now doing it for all of them.
+
+        * Modules/battery/BatteryManager.idl: Use EventHandler instead of EventListener
+        as appropriate. Also reformatted addEventListener/removeEventListener/dispatchEvent.
+        * Modules/encryptedmedia/MediaKeySession.idl: Ditto.
+        * Modules/indexeddb/IDBDatabase.idl: Ditto.
+        * Modules/indexeddb/IDBOpenDBRequest.idl: Ditto.
+        * Modules/indexeddb/IDBRequest.idl: Ditto.
+        * Modules/indexeddb/IDBTransaction.idl: Ditto.
+        * Modules/mediastream/MediaStream.idl: Ditto.
+        * Modules/mediastream/MediaStreamTrack.idl: Ditto.
+        * Modules/mediastream/RTCDTMFSender.idl: Ditto.
+        * Modules/mediastream/RTCDataChannel.idl: Ditto.
+        * Modules/mediastream/RTCPeerConnection.idl: Ditto.
+        * Modules/speech/SpeechSynthesisUtterance.idl: Ditto.
+        * Modules/webaudio/AudioBufferSourceNode.idl: Ditto.
+        * Modules/webaudio/AudioContext.idl: Ditto.
+        * Modules/webaudio/OscillatorNode.idl: Ditto.
+        * Modules/webaudio/ScriptProcessorNode.idl: Ditto.
+        * Modules/websockets/WebSocket.idl: Ditto.
+        * css/FontLoader.idl: Ditto.
+        * dom/EventListener.idl: Ditto.
+        * dom/EventTarget.idl: Ditto.
+        * dom/MessagePort.idl: Ditto.
+        * dom/Node.idl: Ditto.
+        * dom/WebKitNamedFlow.idl: Ditto.
+        * fileapi/FileReader.idl: Ditto.
+        * html/MediaController.idl: Ditto.
+        * html/track/AudioTrackList.idl: Ditto.
+        * html/track/TextTrackCue.idl: Ditto.
+        * html/track/TextTrackList.idl: Ditto.
+        * html/track/VideoTrackList.idl: Ditto.
+        * loader/appcache/DOMApplicationCache.idl: Ditto.
+        * page/EventSource.idl: Ditto.
+        * page/Performance.idl: Ditto.
+        * workers/AbstractWorker.idl: Ditto.
+        * workers/DedicatedWorkerGlobalScope.idl: Ditto.
+        * workers/Worker.idl: Ditto.
+        * workers/WorkerGlobalScope.idl: Ditto.
+        * xml/XMLHttpRequest.idl: Ditto.
+        * xml/XMLHttpRequestUpload.idl: Ditto.
+
+        * Modules/notifications/Notification.idl: Did the above, but also used
+        [Conditional] instead of #if throughout.
+        * html/track/TextTrack.idl: Ditto.
+
+        * Modules/webaudio/AudioNode.idl: Tweaked paragraphing of this file.
+
+        * bindings/js/JSEventListener.cpp:
+        (WebCore::windowEventHandlerAttribute): Renamed to take the word &quot;forwarded&quot;
+        out of this. More closely matches the terminology used in IDL files and the
+        HTML specification.
+        (WebCore::setWindowEventHandlerAttribute): Ditto.
+        (WebCore::documentEventHandlerAttribute): Added.
+        (WebCore::setDocumentEventHandlerAttribute): Added.
+        * bindings/js/JSEventListener.h: Updated for above changes.
+
+        * bindings/objc/PublicDOMInterfaces.h: Renamed argument from &quot;evt&quot; to &quot;event&quot;.
+
+        * bindings/scripts/CodeGeneratorGObject.pm:
+        (SkipAttribute): Skip attributes of type &quot;EventHandler&quot; rather than attributes
+        of type &quot;EventListener&quot;.
+        * bindings/scripts/CodeGeneratorObjC.pm:
+        (SkipAttribute): Ditto.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation): Look for the type EventHandler instead of the type
+        EventListener for event handler attributes. Also added code to handle the new
+        DocumentEventHandler, and use the name WindowEventHandler instead of the name
+        JSWindowEventListener. Removed unneeded preflight check to see if we have
+        writable attributes; it was not doing us any good. (That caused a lot of code
+        to be un-indented and makes the diff hard to read.)
+
+        * bindings/scripts/IDLAttributes.txt: Removed JSWindowEventListener, and added
+        WindowEventHandler and DocumentEventHandler.
+
+        * bindings/scripts/test/TestObj.idl: Use the type EventHandler instead of the
+        type EventListener. The test output is unchanged, though.
+
+        * dom/Document.idl: Got rid of the conditionals and merged all the event handler
+        attributes into a single sorted, unconditional list. Added some that were missing,
+        as detected by the event-handler-attributes.html test.
+
+        * dom/Element.idl: Ditto. This includes moving attributes here that were formerly
+        only in certain element classes. Note that the script event handler attribute
+        support is still here, even though it should be in HTMLElement and SVGElement
+        instead. There's a FIXME about that, but no real urgency in fixing it.
+
+        * html/HTMLAttributeNames.in: Added onmessage. Previously, the support for this
+        was from the script attribute only, not the content attribute.
+
+        * html/HTMLBodyElement.cpp:
+        (WebCore::HTMLBodyElement::createWindowEventHandlerNameMap): Added. This
+        contains the list of all the window event handlers that can be set on a body
+        or frameset element and which are triggered by events on the window.
+        (WebCore::HTMLBodyElement::eventNameForWindowEventHandlerAttribute): Added.
+        This is the function to call to use the map above. Given an attribute, it
+        returns either null if it is not a window event handler attribute, or the
+        event type if it is one.
+        (WebCore::HTMLBodyElement::parseAttribute): Updated to use the new
+        functions above. Handling of these attributes is now unconditional, but
+        also we don't have to keep the nested if statements here up to date, just
+        the list of event handler attributes names in the map create function above.
+
+        * html/HTMLBodyElement.h: Added public eventNameForWindowEventHandlerAttribute
+        and private createWindowEventHandlerNameMap functions.
+
+        * html/HTMLBodyElement.idl: Updated to use WindowEventHandler, DocumentEventHandler,
+        and EventHandler. Also made everything unconditional. Also filled out the list here
+        to match the list handled as content attributes. All covered by the test.
+
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::createEventHandlerNameMap): Added. Replaces the old
+        populate function. Changed the list of event handler attributes to be a bit more
+        complete, and to be entirely unconditional. Also refactored this function to use
+        a new populateEventHandlerNameMap helper, shared with HTMLBodyElement.
+        (WebCore::HTMLElement::populateEventHandlerNameMap): Added. Factors out the code
+        that both this class and HTMLBodyElement use to build event handler name maps.
+        (WebCore::HTMLElement::eventNameForEventHandlerAttribute): Added. This is the
+        function that call to use the map above. Given an attribute it returns either
+        null if it is not an event handler attribute, or the event type if it is one.
+        This is actually two functions. One is a protected function for use by both this
+        class and HTMLBodyElement so they can share things like the optimization to look
+        for the &quot;on&quot; prefix. The other is the public function that we actually use in
+        HTMLElement and SVGElement.
+        (WebCore::HTMLElement::editabilityFromContentEditableAttr): Tweaked and refactored
+        to use lineageOfType. Would have been even simpler if this took an element instead
+        of a node. Unrelated to the event handler changes.
+        (WebCore::HTMLElement::parseAttribute): Removed long-obsolete code that decided
+        whether to call through to the base class. The base class function is empty and
+        never needs to be called, and in any case there is no value in doing work to
+        decide whether to call through to an empty function. Changed the style of the
+        function to use early return instead of else. Worth considering whether we want
+        to return early or call through to base class in this family of functions. It's
+        more efficient to return early, but doesn't work well if both the derived class
+        and base class want to respond to changes to the same attribute. The new logic
+        for event handler attributes is more straightforward than the old, since the
+        eventNameForEventHandlerAttribute has the logic.
+        (WebCore::HTMLElement::textToFragment): Tweaked and refactored a bit, and also
+        changed to return a Ref since this never fails and needs to return null.
+
+        * html/HTMLElement.h: Updated for above changes. This includes a template version
+        of populateEventHandlerNameMap that extracts the array size at compile time and
+        passes it to the non-template function that does the work.
+
+        * html/HTMLFrameElementBase.cpp:
+        (WebCore::HTMLFrameElementBase::parseAttribute): Removed unneeded code to handle
+        event handler attributes handled by HTMLElement.
+        * html/HTMLImageElement.cpp:
+        (WebCore::HTMLImageElement::parseAttribute): Ditto.
+        * html/HTMLLinkElement.cpp:
+        (WebCore::HTMLLinkElement::parseAttribute): Ditto.
+        * html/HTMLObjectElement.cpp:
+        (WebCore::HTMLObjectElement::parseAttribute): Ditto.
+        * html/HTMLScriptElement.cpp:
+        (WebCore::HTMLScriptElement::parseAttribute): Ditto.
+
+        * html/HTMLFrameSetElement.cpp:
+        (WebCore::HTMLFrameSetElement::parseAttribute): Changed function to early return
+        style, and added FIXMEs about the many problems in the attribute handling code.
+        Replaced all the code to handle window event handlers with a new bit of code that
+        calls HTMLBodyElement::eventNameForWindowEventHandlerAttribute.
+
+        * html/HTMLFrameSetElement.idl: Changed to match the list of window event handlers
+        in HTMLBodyElement.idl, although I did not add the document event handler here.
+        As in the various other cases, having some extra event handlers does not seem to
+        do harm and this is covered by the event-handler-attributes.html test.
+
+        * html/HTMLMarqueeElement.idl: Renamed EventListener to EventHandler in comment.
+
+        * page/DOMWindow.idl: As with Element and Document, removed conditionals, and
+        filled out the list of event handlers so all the tests in
+        event-handler-attributes.html will pass.
+
+        * svg/SVGElement.cpp:
+        (WebCore::SVGElement::parseAttribute): Changed code to the early return style,
+        and replaced the event handler attribute code with new much simpler code that
+        uses the new HTMLElement::eventNameForEventHandlerAttribute. Also changed the
+        way we call through to base classes. Just call through to the
+        SVGLangSpace::parseAttribute function unconditionally, and don't try to use
+        early return style to arbitrate among base classes. We should make this
+        simplification throughout the SVG code; there's no need for the complexity
+        that was there before just to cut down slightly on calls through to base
+        class parseAttribute functions.
+
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::parseAttribute): Changed some of this code to the
+        early return style and corrected some comments about the window event handler
+        attributes here. These could use some further testing and might later need to be
+        properly supported when the attributes are set in script, not just in content.
+
+        * svg/SVGScriptElement.cpp:
+        (WebCore::SVGScriptElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGScriptElement::parseAttribute): Changed this function to use the
+        early return style and also to call through to all three base classes. This is
+        a pattern we should follow elsewhere in SVG to simplify the code. There is no
+        need for the supportedAttributes sets like the one in this calass, and the code
+        is unnecessarily complex, perhaps in an attempt to optimize performance. I'm
+        pretty sure the old code was slower than this new code will be. No need for the
+        extra hash table lookup every time. Also removed handling of event handler
+        attribute which is taken care of by SVGElement now.
+        (WebCore::SVGScriptElement::svgAttributeChanged): Made similar changes for
+        the same reason as in parseAttribute. This function really needs a new name:
+        It's the same as parseAttribute, except it's also used when implementing
+        changes due to SVG animation.
+
+        * svg/SVGScriptElement.h: Removed isSupportedAttribute.
+
</ins><span class="cx"> 2015-03-14  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Clean up use of flags in localToContainer-type functions
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesbatteryBatteryManageridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/battery/BatteryManager.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/battery/BatteryManager.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/battery/BatteryManager.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -29,17 +29,13 @@
</span><span class="cx">     readonly attribute unrestricted double dischargingTime;
</span><span class="cx">     readonly attribute unrestricted double level;
</span><span class="cx"> 
</span><del>-    attribute EventListener onchargingchange;
-    attribute EventListener onchargingtimechange;
-    attribute EventListener ondischargingtimechange;
-    attribute EventListener onlevelchange;
</del><ins>+    attribute EventHandler onchargingchange;
+    attribute EventHandler onchargingtimechange;
+    attribute EventHandler ondischargingtimechange;
+    attribute EventHandler onlevelchange;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</span><del>-    void addEventListener(DOMString type,
-                          EventListener listener,
-                          optional boolean useCapture);
-    void removeEventListener(DOMString type,
-                             EventListener listener,
-                             optional boolean useCapture);
</del><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</ins><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesencryptedmediaMediaKeySessionidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -40,17 +40,12 @@
</span><span class="cx">     [RaisesException] void update(Uint8Array key);
</span><span class="cx">     void close();
</span><span class="cx">     
</span><del>-    // EventListeners
-    attribute EventListener onwebkitkeyadded;
-    attribute EventListener onwebkitkeyerror;
-    attribute EventListener onwebkitkeymessage;
</del><ins>+    attribute EventHandler onwebkitkeyadded;
+    attribute EventHandler onwebkitkeyerror;
+    attribute EventHandler onwebkitkeymessage;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBDatabaseidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -41,9 +41,9 @@
</span><span class="cx">     [CallWith=ScriptExecutionContext, RaisesException] IDBTransaction transaction(sequence&lt;DOMString&gt; storeNames, [Default=NullString] optional DOMString mode);
</span><span class="cx">     void close();
</span><span class="cx"> 
</span><del>-    attribute EventListener onabort;
-    attribute EventListener onerror;
-    attribute EventListener onversionchange;
</del><ins>+    attribute EventHandler onabort;
+    attribute EventHandler onerror;
+    attribute EventHandler onversionchange;
</ins><span class="cx"> 
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBOpenDBRequestidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -29,6 +29,6 @@
</span><span class="cx">     JSGenerateToJSObject,
</span><span class="cx">     JSGenerateToNativeObject
</span><span class="cx"> ] interface IDBOpenDBRequest : IDBRequest {
</span><del>-    attribute EventListener onblocked;
-    attribute EventListener onupgradeneeded;
</del><ins>+    attribute EventHandler onblocked;
+    attribute EventHandler onupgradeneeded;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBRequestidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBRequest.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBRequest.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBRequest.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -40,6 +40,6 @@
</span><span class="cx">     readonly attribute IDBTransaction transaction;
</span><span class="cx">     readonly attribute DOMString readyState;
</span><span class="cx"> 
</span><del>-    attribute EventListener onsuccess;
-    attribute EventListener onerror;
</del><ins>+    attribute EventHandler onsuccess;
+    attribute EventHandler onerror;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBTransactionidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">     [RaisesException] IDBObjectStore objectStore (DOMString name);
</span><span class="cx">     [RaisesException] void abort ();
</span><span class="cx"> 
</span><del>-    attribute EventListener onabort;
-    attribute EventListener oncomplete;
-    attribute EventListener onerror;
</del><ins>+    attribute EventHandler onabort;
+    attribute EventHandler oncomplete;
+    attribute EventHandler onerror;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStream.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -45,18 +45,14 @@
</span><span class="cx"> 
</span><span class="cx">     readonly attribute boolean active;
</span><span class="cx"> 
</span><del>-    attribute EventListener onactive;
-    attribute EventListener oninactive;
-    attribute EventListener onaddtrack;
-    attribute EventListener onremovetrack;
</del><ins>+    attribute EventHandler onactive;
+    attribute EventHandler oninactive;
+    attribute EventHandler onaddtrack;
+    attribute EventHandler onremovetrack;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</span><del>-    void addEventListener(DOMString type,
-                          EventListener listener,
-                          optional boolean useCapture);
-    void removeEventListener(DOMString type,
-                             EventListener listener,
-                             optional boolean useCapture);
</del><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</ins><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -34,15 +34,15 @@
</span><span class="cx">     readonly attribute DOMString kind;
</span><span class="cx">     readonly attribute DOMString id;
</span><span class="cx">     readonly attribute DOMString label;
</span><del>-             attribute boolean enabled;
</del><ins>+    attribute boolean enabled;
</ins><span class="cx">     readonly attribute boolean muted;
</span><del>-    attribute EventListener onmute;
-    attribute EventListener onunmute;
</del><ins>+    attribute EventHandler onmute;
+    attribute EventHandler onunmute;
</ins><span class="cx">     readonly attribute boolean _readonly;
</span><span class="cx">     readonly attribute boolean remote;
</span><span class="cx">     readonly attribute MediaStreamTrackState readyState;
</span><del>-    attribute EventListener onstarted;
-    attribute EventListener onended;
</del><ins>+    attribute EventHandler onstarted;
+    attribute EventHandler onended;
</ins><span class="cx"> 
</span><span class="cx">     [CallWith=ScriptExecutionContext, RaisesException] static void getSources(MediaStreamTrackSourcesCallback callback);
</span><span class="cx"> 
</span><span class="lines">@@ -54,17 +54,13 @@
</span><span class="cx"> 
</span><span class="cx">     void applyConstraints(Dictionary constraints);
</span><span class="cx"> 
</span><del>-    attribute EventListener onoverconstrained;
</del><ins>+    attribute EventHandler onoverconstrained;
</ins><span class="cx">     MediaStreamTrack clone();
</span><span class="cx">     [ImplementedAs=stopProducingData] void stop();
</span><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</span><del>-    void addEventListener(DOMString type,
-                          EventListener listener,
-                          optional boolean useCapture);
-    void removeEventListener(DOMString type,
-                             EventListener listener,
-                             optional boolean useCapture);
</del><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</ins><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDTMFSenderidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -37,14 +37,10 @@
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void insertDTMF(DOMString tones, optional long duration, optional long interToneGap);
</span><span class="cx"> 
</span><del>-    attribute EventListener ontonechange;
</del><ins>+    attribute EventHandler ontonechange;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</span><del>-    void addEventListener(DOMString type,
-                          EventListener listener,
-                          optional boolean useCapture);
-    void removeEventListener(DOMString type,
-                             EventListener listener,
-                             optional boolean useCapture);
</del><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</ins><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDataChannelidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -46,17 +46,13 @@
</span><span class="cx"> 
</span><span class="cx">     void close();
</span><span class="cx"> 
</span><del>-    attribute EventListener onopen;
-    attribute EventListener onerror;
-    attribute EventListener onclose;
-    attribute EventListener onmessage;
</del><ins>+    attribute EventHandler onopen;
+    attribute EventHandler onerror;
+    attribute EventHandler onclose;
+    attribute EventHandler onmessage;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</span><del>-    void addEventListener(DOMString type,
-                          EventListener listener,
-                          optional boolean useCapture);
-    void removeEventListener(DOMString type,
-                             EventListener listener,
-                             optional boolean useCapture);
</del><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</ins><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCPeerConnectionidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -75,21 +75,17 @@
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void close();
</span><span class="cx"> 
</span><del>-    attribute EventListener onnegotiationneeded;
-    attribute EventListener onicecandidate;
-    attribute EventListener onsignalingstatechange;
-    attribute EventListener onaddstream;
-    attribute EventListener onremovestream;
-    attribute EventListener oniceconnectionstatechange;
-    attribute EventListener ondatachannel;
</del><ins>+    attribute EventHandler onnegotiationneeded;
+    attribute EventHandler onicecandidate;
+    attribute EventHandler onsignalingstatechange;
+    attribute EventHandler onaddstream;
+    attribute EventHandler onremovestream;
+    attribute EventHandler oniceconnectionstatechange;
+    attribute EventHandler ondatachannel;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</span><del>-    void addEventListener(DOMString type,
-                          EventListener listener,
-                          optional boolean useCapture);
-    void removeEventListener(DOMString type,
-                             EventListener listener,
-                             optional boolean useCapture);
</del><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</ins><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesnotificationsNotificationidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/notifications/Notification.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/notifications/Notification.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/notifications/Notification.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -39,42 +39,25 @@
</span><span class="cx"> #endif
</span><span class="cx"> ] interface Notification {
</span><span class="cx">     void show();
</span><del>-#if defined(ENABLE_LEGACY_NOTIFICATIONS) &amp;&amp; ENABLE_LEGACY_NOTIFICATIONS
-    void cancel();
-#endif
-#if defined(ENABLE_NOTIFICATIONS) &amp;&amp; ENABLE_NOTIFICATIONS
-    void close();
-#endif
</del><ins>+    [Conditional=LEGACY_NOTIFICATIONS] void cancel();
+    [Conditional=NOTIFICATIONS] void close();
</ins><span class="cx"> 
</span><ins>+    [Conditional=NOTIFICATIONS, CallWith=ScriptExecutionContext] static readonly attribute DOMString permission;
+    [Conditional=NOTIFICATIONS, CallWith=ScriptExecutionContext] static void requestPermission(optional NotificationPermissionCallback callback);
</ins><span class="cx"> 
</span><del>-#if defined(ENABLE_NOTIFICATIONS) &amp;&amp; ENABLE_NOTIFICATIONS
-    [CallWith=ScriptExecutionContext] static readonly attribute DOMString permission;
-    [CallWith=ScriptExecutionContext] static void requestPermission(optional NotificationPermissionCallback callback);
-#endif
</del><ins>+    attribute EventHandler onclick;
+    attribute EventHandler onclose;
+    attribute EventHandler ondisplay;
+    attribute EventHandler onerror;
+    attribute EventHandler onshow;
</ins><span class="cx"> 
</span><del>-    attribute EventListener onshow;
-#if defined(ENABLE_LEGACY_NOTIFICATIONS) &amp;&amp; ENABLE_LEGACY_NOTIFICATIONS
-    attribute EventListener ondisplay;
-#endif
-    attribute EventListener onerror;
-    attribute EventListener onclose;
-    attribute EventListener onclick;
</del><ins>+    [Conditional=LEGACY_NOTIFICATIONS] attribute DOMString dir;
+    [Conditional=LEGACY_NOTIFICATIONS] attribute DOMString replaceId;
+    [Conditional=NOTIFICATIONS] attribute DOMString tag;
</ins><span class="cx"> 
</span><del>-#if defined(ENABLE_LEGACY_NOTIFICATIONS) &amp;&amp; ENABLE_LEGACY_NOTIFICATIONS
-    attribute DOMString dir;
-    attribute DOMString replaceId;
-#endif
-#if defined(ENABLE_NOTIFICATIONS) &amp;&amp; ENABLE_NOTIFICATIONS
-    attribute DOMString tag;
-#endif
-
</del><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><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 (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/speech/SpeechSynthesisUtterance.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -36,20 +36,16 @@
</span><span class="cx">     attribute unrestricted float rate;
</span><span class="cx">     attribute unrestricted float pitch;
</span><span class="cx"> 
</span><del>-    attribute EventListener onstart;
-    attribute EventListener onend;
-    attribute EventListener onerror;
-    attribute EventListener onpause;
-    attribute EventListener onresume;
-    attribute EventListener onmark;
-    attribute EventListener onboundary;
</del><ins>+    attribute EventHandler onstart;
+    attribute EventHandler onend;
+    attribute EventHandler onerror;
+    attribute EventHandler onpause;
+    attribute EventHandler onresume;
+    attribute EventHandler onmark;
+    attribute EventHandler onboundary;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -53,5 +53,5 @@
</span><span class="cx">     [Conditional=LEGACY_WEB_AUDIO, RaisesException] void noteGrainOn(unrestricted double when, unrestricted double grainOffset, unrestricted double grainDuration);
</span><span class="cx">     [Conditional=LEGACY_WEB_AUDIO, RaisesException] void noteOff(unrestricted double when);
</span><span class="cx">     
</span><del>-    attribute EventListener onended;
</del><ins>+    attribute EventHandler onended;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioContextidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioContext.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Offline rendering
</span><span class="cx">     // void prepareOfflineBufferRendering(unsigned long numberOfChannels, unsigned long numberOfFrames, unrestricted float sampleRate);
</span><del>-    attribute EventListener oncomplete;
</del><ins>+    attribute EventHandler oncomplete;
</ins><span class="cx">     void startRendering();
</span><span class="cx"> 
</span><span class="cx">     [Conditional=LEGACY_WEB_AUDIO, ImplementedAs=createGain] GainNode createGainNode();
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioNode.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioNode.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/webaudio/AudioNode.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -34,20 +34,14 @@
</span><span class="cx">     readonly attribute unsigned long numberOfOutputs;
</span><span class="cx"> 
</span><span class="cx">     [SetterRaisesException] attribute unsigned long channelCount;
</span><del>-
</del><span class="cx">     [SetterRaisesException] attribute DOMString channelCountMode;
</span><del>-
</del><span class="cx">     [SetterRaisesException] attribute DOMString channelInterpretation;
</span><span class="cx"> 
</span><span class="cx">     [RaisesException] void connect(AudioNode? destination, [Default=Undefined] optional unsigned long output, [Default=Undefined] optional unsigned long input);
</span><del>-
</del><span class="cx">     [RaisesException] void connect(AudioParam? destination, [Default=Undefined] optional unsigned long output);
</span><del>-
</del><span class="cx">     [RaisesException] void disconnect([Default=Undefined] optional unsigned long output);
</span><span class="cx"> 
</span><span class="cx">     void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</span><del>-
</del><span class="cx">     void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</span><del>-
</del><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioOscillatorNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/OscillatorNode.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/OscillatorNode.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/webaudio/OscillatorNode.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -56,5 +56,5 @@
</span><span class="cx"> 
</span><span class="cx">     void setPeriodicWave(PeriodicWave wave);
</span><span class="cx"> 
</span><del>-    attribute EventListener onended;
</del><ins>+    attribute EventHandler onended;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioScriptProcessorNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx">     JSGenerateToNativeObject
</span><span class="cx"> ] interface ScriptProcessorNode : AudioNode {
</span><span class="cx">     // Rendering callback
</span><del>-    attribute EventListener onaudioprocess;
</del><ins>+    attribute EventHandler onaudioprocess;
</ins><span class="cx"> 
</span><span class="cx">     readonly attribute long bufferSize;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocket.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocket.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/Modules/websockets/WebSocket.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -53,10 +53,10 @@
</span><span class="cx">     readonly attribute unsigned long bufferedAmount;
</span><span class="cx"> 
</span><span class="cx">     // networking
</span><del>-    attribute EventListener onopen;
-    attribute EventListener onmessage;
-    attribute EventListener onerror;
-    attribute EventListener onclose;
</del><ins>+    attribute EventHandler onopen;
+    attribute EventHandler onmessage;
+    attribute EventHandler onerror;
+    attribute EventHandler onclose;
</ins><span class="cx"> 
</span><span class="cx">     [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString protocol;
</span><span class="cx">     [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString extensions;
</span><span class="lines">@@ -71,11 +71,7 @@
</span><span class="cx">     [RaisesException] void close([Clamp] optional unsigned short code, optional DOMString reason);
</span><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventListener.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventListener.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/bindings/js/JSEventListener.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -24,6 +24,7 @@
</span><span class="cx"> #include &quot;Event.h&quot;
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;HTMLElement.h&quot;
</span><ins>+#include &quot;JSDocument.h&quot;
</ins><span class="cx"> #include &quot;JSEvent.h&quot;
</span><span class="cx"> #include &quot;JSEventTarget.h&quot;
</span><span class="cx"> #include &quot;JSMainThreadExecState.h&quot;
</span><span class="lines">@@ -204,16 +205,31 @@
</span><span class="cx">     target.setAttributeEventListener(eventType, createEventListenerForEventHandlerAttribute(state, value, wrapper));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSC::JSValue windowForwardedEventHandlerAttribute(HTMLElement&amp; element, const AtomicString&amp; eventType)
</del><ins>+JSC::JSValue windowEventHandlerAttribute(HTMLElement&amp; element, const AtomicString&amp; eventType)
</ins><span class="cx"> {
</span><span class="cx">     auto&amp; document = element.document();
</span><span class="cx">     return eventHandlerAttribute(document.getWindowAttributeEventListener(eventType), document);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setWindowForwardedEventHandlerAttribute(JSC::ExecState&amp; state, JSC::JSObject&amp; wrapper, HTMLElement&amp; element, const AtomicString&amp; eventType, JSC::JSValue value)
</del><ins>+void setWindowEventHandlerAttribute(JSC::ExecState&amp; state, JSC::JSObject&amp; wrapper, HTMLElement&amp; element, const AtomicString&amp; eventType, JSC::JSValue value)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(wrapper.globalObject());
</span><span class="cx">     element.document().setWindowAttributeEventListener(eventType, createEventListenerForEventHandlerAttribute(state, value, *wrapper.globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+JSC::JSValue documentEventHandlerAttribute(HTMLElement&amp; element, const AtomicString&amp; eventType)
+{
+    auto&amp; document = element.document();
+    return eventHandlerAttribute(document.getAttributeEventListener(eventType), document);
+}
+
+void setDocumentEventHandlerAttribute(JSC::ExecState&amp; state, JSC::JSObject&amp; wrapper, HTMLElement&amp; element, const AtomicString&amp; eventType, JSC::JSValue value)
+{
+    ASSERT(wrapper.globalObject());
+    auto&amp; document = element.document();
+    auto* documentWrapper = jsDocumentCast(toJS(&amp;state, JSC::jsCast&lt;JSDOMGlobalObject*&gt;(wrapper.globalObject()), document));
+    ASSERT(documentWrapper);
+    document.setAttributeEventListener(eventType, createEventListenerForEventHandlerAttribute(state, value, *documentWrapper));
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventListenerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventListener.h (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventListener.h        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/bindings/js/JSEventListener.h        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -82,9 +82,13 @@
</span><span class="cx"> void setEventHandlerAttribute(JSC::ExecState&amp;, JSC::JSObject&amp;, EventTarget&amp;, const AtomicString&amp; eventType, JSC::JSValue);
</span><span class="cx"> 
</span><span class="cx"> // Like the functions above, but for attributes that forward event handlers to the window object rather than setting them on the target.
</span><del>-JSC::JSValue windowForwardedEventHandlerAttribute(HTMLElement&amp;, const AtomicString&amp; eventType);
-void setWindowForwardedEventHandlerAttribute(JSC::ExecState&amp;, JSC::JSObject&amp;, HTMLElement&amp;, const AtomicString&amp; eventType, JSC::JSValue);
</del><ins>+JSC::JSValue windowEventHandlerAttribute(HTMLElement&amp;, const AtomicString&amp; eventType);
+void setWindowEventHandlerAttribute(JSC::ExecState&amp;, JSC::JSObject&amp;, HTMLElement&amp;, const AtomicString&amp; eventType, JSC::JSValue);
</ins><span class="cx"> 
</span><ins>+// Like the functions above, but for attributes that forward event handlers to the document rather than setting them on the target.
+JSC::JSValue documentEventHandlerAttribute(HTMLElement&amp;, const AtomicString&amp; eventType);
+void setDocumentEventHandlerAttribute(JSC::ExecState&amp;, JSC::JSObject&amp;, HTMLElement&amp;, const AtomicString&amp; eventType, JSC::JSValue);
+
</ins><span class="cx"> Ref&lt;JSEventListener&gt; createJSEventListenerForAdd(JSC::ExecState&amp;, JSC::JSObject&amp; listener, JSC::JSObject&amp; wrapper);
</span><span class="cx"> Ref&lt;JSEventListener&gt; createJSEventListenerForRemove(JSC::ExecState&amp;, JSC::JSObject&amp; listener, JSC::JSObject&amp; wrapper);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsobjcPublicDOMInterfacesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/objc/PublicDOMInterfaces.h (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/objc/PublicDOMInterfaces.h        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/bindings/objc/PublicDOMInterfaces.h        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -1228,7 +1228,7 @@
</span><span class="cx"> // Protocols
</span><span class="cx"> 
</span><span class="cx"> @protocol DOMEventListener &lt;NSObject&gt; 10_4
</span><del>-- (void)handleEvent:(DOMEvent *)evt;
</del><ins>+- (void)handleEvent:(DOMEvent *)event;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @protocol DOMEventTarget &lt;NSObject, NSCopying&gt; 10_4
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorGObjectpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -237,9 +237,7 @@
</span><span class="cx">         return 1;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if ($attribute-&gt;signature-&gt;type eq &quot;EventListener&quot;) {
-        return 1;
-    }
</del><ins>+    return 1 if $attribute-&gt;signature-&gt;type eq &quot;EventHandler&quot;;
</ins><span class="cx"> 
</span><span class="cx">     if ($attribute-&gt;signature-&gt;type eq &quot;MediaQueryListListener&quot;) {
</span><span class="cx">         return 1;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -2286,8 +2286,10 @@
</span><span class="cx">                 $implIncludes{&quot;JSDOMBinding.h&quot;} = 1;
</span><span class="cx">                 push(@implContent, &quot;    auto&amp; impl = castedThis-&gt;impl();\n&quot;);
</span><span class="cx">                 push(@implContent, &quot;    return JSValue::encode(shouldAllowAccessToNode(exec, impl.&quot; . $attribute-&gt;signature-&gt;name . &quot;()) ? &quot; . NativeToJSValue($attribute-&gt;signature, 0, $interfaceName, &quot;impl.$implGetterFunctionName()&quot;, &quot;castedThis&quot;) . &quot; : jsNull());\n&quot;);
</span><del>-            } elsif ($type eq &quot;EventListener&quot;) {
-                my $getter = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;JSWindowEventListener&quot;} ? &quot;windowForwardedEventHandlerAttribute&quot; : &quot;eventHandlerAttribute&quot;;
</del><ins>+            } elsif ($type eq &quot;EventHandler&quot;) {
+                my $getter = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;WindowEventHandler&quot;} ? &quot;windowEventHandlerAttribute&quot;
+                    : $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;DocumentEventHandler&quot;} ? &quot;documentEventHandlerAttribute&quot;
+                    : &quot;eventHandlerAttribute&quot;;
</ins><span class="cx">                 my $eventName = EventHandlerAttributeEventName($attribute);
</span><span class="cx">                 push(@implContent, &quot;    UNUSED_PARAM(exec);\n&quot;);
</span><span class="cx">                 push(@implContent, &quot;    return JSValue::encode($getter(castedThis-&gt;impl(), $eventName));\n&quot;);
</span><span class="lines">@@ -2506,194 +2508,185 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    # Check if we have any writable attributes
-    my $hasReadWriteProperties = 0;
</del><span class="cx">     foreach my $attribute (@{$interface-&gt;attributes}) {
</span><del>-        $hasReadWriteProperties = 1 if !IsReadonly($attribute) &amp;&amp; !$attribute-&gt;isStatic;
</del><ins>+        if (!IsReadonly($attribute)) {
+            my $name = $attribute-&gt;signature-&gt;name;
+            my $type = $attribute-&gt;signature-&gt;type;
+            my $putFunctionName = GetAttributeSetterName($interfaceName, $className, $attribute);
+            my $implSetterFunctionName = $codeGenerator-&gt;WK_ucfirst($name);
+            my $setterRaisesException = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;SetterRaisesException&quot;};
</ins><span class="cx"> 
</span><del>-        if ($attribute-&gt;signature-&gt;type eq &quot;EventListener&quot;) {
-            $implIncludes{&quot;JSEventListener.h&quot;} = 1;
-        }
-    }
</del><ins>+            my $attributeConditionalString = $codeGenerator-&gt;GenerateConditionalString($attribute-&gt;signature);
+            push(@implContent, &quot;#if ${attributeConditionalString}\n&quot;) if $attributeConditionalString;
</ins><span class="cx"> 
</span><del>-    if ($hasReadWriteProperties) {
-        foreach my $attribute (@{$interface-&gt;attributes}) {
-            if (!IsReadonly($attribute)) {
-                my $name = $attribute-&gt;signature-&gt;name;
-                my $type = $attribute-&gt;signature-&gt;type;
-                my $putFunctionName = GetAttributeSetterName($interfaceName, $className, $attribute);
-                my $implSetterFunctionName = $codeGenerator-&gt;WK_ucfirst($name);
-                my $setterRaisesException = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;SetterRaisesException&quot;};
-
-                my $attributeConditionalString = $codeGenerator-&gt;GenerateConditionalString($attribute-&gt;signature);
-                push(@implContent, &quot;#if ${attributeConditionalString}\n&quot;) if $attributeConditionalString;
-
-                push(@implContent, &quot;void ${putFunctionName}(ExecState* exec, JSObject* baseObject, EncodedJSValue&quot;);
-                push(@implContent, &quot; thisValue&quot;) if !$attribute-&gt;isStatic;
-                push(@implContent, &quot;, EncodedJSValue encodedValue)\n&quot;);
-                push(@implContent, &quot;{\n&quot;);
-                push(@implContent, &quot;    JSValue value = JSValue::decode(encodedValue);\n&quot;);
-                push(@implContent, &quot;    UNUSED_PARAM(baseObject);\n&quot;);
-                if (!$attribute-&gt;isStatic) {
-                    if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomProxyToJSObject&quot;}) {
-                        push(@implContent, &quot;    ${className}* castedThis = to${className}(JSValue::decode(thisValue));\n&quot;);
-                    } elsif (AttributeShouldBeOnInstance($interface, $attribute)) {
-                        push(@implContent, &quot;    UNUSED_PARAM(thisValue);\n&quot;);
-                        push(@implContent, &quot;    auto* castedThis = jsCast&lt;JS${interfaceName}*&gt;(baseObject);\n&quot;);
-                        if (InterfaceRequiresAttributesOnInstanceForCompatibility($interface)) {
-                            push(@implContent, &quot;    ${className}* castedThisObject = &quot; . GetCastingHelperForThisObject($interface) . &quot;(JSValue::decode(thisValue));\n&quot;);
-                            push(@implContent, &quot;    if (UNLIKELY(!castedThisObject))\n&quot;);
-                            push(@implContent, &quot;        reportDeprecatedSetterError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;);\n&quot;);
-                        } else {
-                            push(@implContent, &quot;    UNUSED_PARAM(thisValue);\n&quot;);
-                            push(@implContent, &quot;    UNUSED_PARAM(exec);\n&quot;);
-                        }
</del><ins>+            push(@implContent, &quot;void ${putFunctionName}(ExecState* exec, JSObject* baseObject, EncodedJSValue&quot;);
+            push(@implContent, &quot; thisValue&quot;) if !$attribute-&gt;isStatic;
+            push(@implContent, &quot;, EncodedJSValue encodedValue)\n&quot;);
+            push(@implContent, &quot;{\n&quot;);
+            push(@implContent, &quot;    JSValue value = JSValue::decode(encodedValue);\n&quot;);
+            push(@implContent, &quot;    UNUSED_PARAM(baseObject);\n&quot;);
+            if (!$attribute-&gt;isStatic) {
+                if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomProxyToJSObject&quot;}) {
+                    push(@implContent, &quot;    ${className}* castedThis = to${className}(JSValue::decode(thisValue));\n&quot;);
+                } elsif (AttributeShouldBeOnInstance($interface, $attribute)) {
+                    push(@implContent, &quot;    UNUSED_PARAM(thisValue);\n&quot;);
+                    push(@implContent, &quot;    auto* castedThis = jsCast&lt;JS${interfaceName}*&gt;(baseObject);\n&quot;);
+                    if (InterfaceRequiresAttributesOnInstanceForCompatibility($interface)) {
+                        push(@implContent, &quot;    ${className}* castedThisObject = &quot; . GetCastingHelperForThisObject($interface) . &quot;(JSValue::decode(thisValue));\n&quot;);
+                        push(@implContent, &quot;    if (UNLIKELY(!castedThisObject))\n&quot;);
+                        push(@implContent, &quot;        reportDeprecatedSetterError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;);\n&quot;);
</ins><span class="cx">                     } else {
</span><del>-                        push(@implContent, &quot;    ${className}* castedThis = &quot; . GetCastingHelperForThisObject($interface) . &quot;(JSValue::decode(thisValue));\n&quot;);
-                        push(@implContent, &quot;    if (UNLIKELY(!castedThis)) {\n&quot;);
-                        push(@implContent, &quot;        if (jsDynamicCast&lt;${className}Prototype*&gt;(JSValue::decode(thisValue)))\n&quot;);
-                        push(@implContent, &quot;            reportDeprecatedSetterError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;);\n&quot;);
-                        push(@implContent, &quot;        else\n&quot;);
-                        push(@implContent, &quot;            throwSetterTypeError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;);\n&quot;);
-                        push(@implContent, &quot;        return;\n&quot;);
-                        push(@implContent, &quot;    }\n&quot;);
</del><ins>+                        push(@implContent, &quot;    UNUSED_PARAM(thisValue);\n&quot;);
+                        push(@implContent, &quot;    UNUSED_PARAM(exec);\n&quot;);
</ins><span class="cx">                     }
</span><del>-                }
-                if ($interface-&gt;extendedAttributes-&gt;{&quot;CheckSecurity&quot;} &amp;&amp; !$attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;DoNotCheckSecurity&quot;}) {
-                    if ($interfaceName eq &quot;DOMWindow&quot;) {
-                        push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;impl()))\n&quot;);
-                    } else {
-                        push(@implContent, &quot;    if (!shouldAllowAccessToFrame(exec, castedThis-&gt;impl().frame()))\n&quot;);
-                    }
</del><ins>+                } else {
+                    push(@implContent, &quot;    ${className}* castedThis = &quot; . GetCastingHelperForThisObject($interface) . &quot;(JSValue::decode(thisValue));\n&quot;);
+                    push(@implContent, &quot;    if (UNLIKELY(!castedThis)) {\n&quot;);
+                    push(@implContent, &quot;        if (jsDynamicCast&lt;${className}Prototype*&gt;(JSValue::decode(thisValue)))\n&quot;);
+                    push(@implContent, &quot;            reportDeprecatedSetterError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;);\n&quot;);
+                    push(@implContent, &quot;        else\n&quot;);
+                    push(@implContent, &quot;            throwSetterTypeError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;);\n&quot;);
</ins><span class="cx">                     push(@implContent, &quot;        return;\n&quot;);
</span><ins>+                    push(@implContent, &quot;    }\n&quot;);
</ins><span class="cx">                 }
</span><ins>+            }
+            if ($interface-&gt;extendedAttributes-&gt;{&quot;CheckSecurity&quot;} &amp;&amp; !$attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;DoNotCheckSecurity&quot;}) {
+                if ($interfaceName eq &quot;DOMWindow&quot;) {
+                    push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;impl()))\n&quot;);
+                } else {
+                    push(@implContent, &quot;    if (!shouldAllowAccessToFrame(exec, castedThis-&gt;impl().frame()))\n&quot;);
+                }
+                push(@implContent, &quot;        return;\n&quot;);
+            }
</ins><span class="cx"> 
</span><del>-                if (HasCustomSetter($attribute-&gt;signature-&gt;extendedAttributes)) {
-                    push(@implContent, &quot;    castedThis-&gt;set$implSetterFunctionName(exec, value);\n&quot;);
-                } elsif ($type eq &quot;EventListener&quot;) {
-                    my $eventName = EventHandlerAttributeEventName($attribute);
-                    # FIXME: Find a way to do this special case without hardcoding the class and attribute names here.
-                    if ((($interfaceName eq &quot;DOMWindow&quot;) or ($interfaceName eq &quot;WorkerGlobalScope&quot;)) and $name eq &quot;onerror&quot;) {
-                        $implIncludes{&quot;JSErrorHandler.h&quot;} = 1;
-                        push(@implContent, &quot;    castedThis-&gt;impl().setAttributeEventListener($eventName, createJSErrorHandler(exec, value, castedThis));\n&quot;);
-                    } else {
-                        $implIncludes{&quot;JSEventListener.h&quot;} = 1;
-                        my $setter = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;JSWindowEventListener&quot;} ? &quot;setWindowForwardedEventHandlerAttribute&quot; : &quot;setEventHandlerAttribute&quot;;
-                        push(@implContent, &quot;    $setter(*exec, *castedThis, castedThis-&gt;impl(), $eventName, value);\n&quot;);
-                    }
-                } elsif ($attribute-&gt;signature-&gt;type =~ /Constructor$/) {
-                    my $constructorType = $attribute-&gt;signature-&gt;type;
-                    $constructorType =~ s/Constructor$//;
-                    # $constructorType ~= /Constructor$/ indicates that it is NamedConstructor.
-                    # We do not generate the header file for NamedConstructor of class XXXX,
-                    # since we generate the NamedConstructor declaration into the header file of class XXXX.
-                    if ($constructorType ne &quot;any&quot; and $constructorType !~ /Named$/) {
-                        AddToImplIncludes(&quot;JS&quot; . $constructorType . &quot;.h&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;});
-                    }
-                    push(@implContent, &quot;    // Shadowing a built-in constructor.\n&quot;);
-                    push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), Identifier(exec, \&quot;$name\&quot;), value);\n&quot;);
-                } elsif ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Replaceable&quot;}) {
-                    push(@implContent, &quot;    // Shadowing a built-in object.\n&quot;);
-                    push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), Identifier(exec, \&quot;$name\&quot;), value);\n&quot;);
</del><ins>+            if (HasCustomSetter($attribute-&gt;signature-&gt;extendedAttributes)) {
+                push(@implContent, &quot;    castedThis-&gt;set$implSetterFunctionName(exec, value);\n&quot;);
+            } elsif ($type eq &quot;EventHandler&quot;) {
+                $implIncludes{&quot;JSEventListener.h&quot;} = 1;
+                my $eventName = EventHandlerAttributeEventName($attribute);
+                # FIXME: Find a way to do this special case without hardcoding the class and attribute names here.
+                if ((($interfaceName eq &quot;DOMWindow&quot;) or ($interfaceName eq &quot;WorkerGlobalScope&quot;)) and $name eq &quot;onerror&quot;) {
+                    $implIncludes{&quot;JSErrorHandler.h&quot;} = 1;
+                    push(@implContent, &quot;    castedThis-&gt;impl().setAttributeEventListener($eventName, createJSErrorHandler(exec, value, castedThis));\n&quot;);
</ins><span class="cx">                 } else {
</span><del>-                    if (!$attribute-&gt;isStatic) {
-                        push(@implContent, &quot;    auto&amp; impl = castedThis-&gt;impl();\n&quot;);
-                    }
-                    push(@implContent, &quot;    ExceptionCode ec = 0;\n&quot;) if $setterRaisesException;
</del><ins>+                    $implIncludes{&quot;JSEventListener.h&quot;} = 1;
+                    my $setter = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;WindowEventHandler&quot;} ? &quot;setWindowEventHandlerAttribute&quot;
+                        : $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;DocumentEventHandler&quot;} ? &quot;setDocumentEventHandlerAttribute&quot;
+                        : &quot;setEventHandlerAttribute&quot;;
+                    push(@implContent, &quot;    $setter(*exec, *castedThis, castedThis-&gt;impl(), $eventName, value);\n&quot;);
+                }
+            } elsif ($attribute-&gt;signature-&gt;type =~ /Constructor$/) {
+                my $constructorType = $attribute-&gt;signature-&gt;type;
+                $constructorType =~ s/Constructor$//;
+                # $constructorType ~= /Constructor$/ indicates that it is NamedConstructor.
+                # We do not generate the header file for NamedConstructor of class XXXX,
+                # since we generate the NamedConstructor declaration into the header file of class XXXX.
+                if ($constructorType ne &quot;any&quot; and $constructorType !~ /Named$/) {
+                    AddToImplIncludes(&quot;JS&quot; . $constructorType . &quot;.h&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;});
+                }
+                push(@implContent, &quot;    // Shadowing a built-in constructor.\n&quot;);
+                push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), Identifier(exec, \&quot;$name\&quot;), value);\n&quot;);
+            } elsif ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Replaceable&quot;}) {
+                push(@implContent, &quot;    // Shadowing a built-in object.\n&quot;);
+                push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), Identifier(exec, \&quot;$name\&quot;), value);\n&quot;);
+            } else {
+                if (!$attribute-&gt;isStatic) {
+                    push(@implContent, &quot;    auto&amp; impl = castedThis-&gt;impl();\n&quot;);
+                }
+                push(@implContent, &quot;    ExceptionCode ec = 0;\n&quot;) if $setterRaisesException;
</ins><span class="cx"> 
</span><del>-                    # If the &quot;StrictTypeChecking&quot; extended attribute is present, and the attribute's type is an
-                    # interface type, then if the incoming value does not implement that interface, a TypeError
-                    # is thrown rather than silently passing NULL to the C++ code.
-                    # Per the Web IDL and ECMAScript specifications, incoming values can always be converted to
-                    # both strings and numbers, so do not throw TypeError if the attribute is of these types.
-                    if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;StrictTypeChecking&quot;}) {
-                        $implIncludes{&quot;&lt;runtime/Error.h&gt;&quot;} = 1;
</del><ins>+                # If the &quot;StrictTypeChecking&quot; extended attribute is present, and the attribute's type is an
+                # interface type, then if the incoming value does not implement that interface, a TypeError
+                # is thrown rather than silently passing NULL to the C++ code.
+                # Per the Web IDL and ECMAScript specifications, incoming values can always be converted to
+                # both strings and numbers, so do not throw TypeError if the attribute is of these types.
+                if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;StrictTypeChecking&quot;}) {
+                    $implIncludes{&quot;&lt;runtime/Error.h&gt;&quot;} = 1;
</ins><span class="cx"> 
</span><del>-                        my $argType = $attribute-&gt;signature-&gt;type;
-                        if ($codeGenerator-&gt;IsWrapperType($argType)) {
-                            push(@implContent, &quot;    if (!value.isUndefinedOrNull() &amp;&amp; !value.inherits(JS${argType}::info())) {\n&quot;);
-                            push(@implContent, &quot;        throwAttributeTypeError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;, \&quot;$argType\&quot;);\n&quot;);
-                            push(@implContent, &quot;        return;\n&quot;);
-                            push(@implContent, &quot;    };\n&quot;);
-                        }
</del><ins>+                    my $argType = $attribute-&gt;signature-&gt;type;
+                    if ($codeGenerator-&gt;IsWrapperType($argType)) {
+                        push(@implContent, &quot;    if (!value.isUndefinedOrNull() &amp;&amp; !value.inherits(JS${argType}::info())) {\n&quot;);
+                        push(@implContent, &quot;        throwAttributeTypeError(*exec, \&quot;$interfaceName\&quot;, \&quot;$name\&quot;, \&quot;$argType\&quot;);\n&quot;);
+                        push(@implContent, &quot;        return;\n&quot;);
+                        push(@implContent, &quot;    };\n&quot;);
</ins><span class="cx">                     }
</span><ins>+                }
</ins><span class="cx"> 
</span><del>-                    push(@implContent, &quot;    &quot; . GetNativeTypeFromSignature($attribute-&gt;signature) . &quot; nativeValue(&quot; . JSValueToNative($attribute-&gt;signature, &quot;value&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;}) . &quot;);\n&quot;);
-                    push(@implContent, &quot;    if (UNLIKELY(exec-&gt;hadException()))\n&quot;);
-                    push(@implContent, &quot;        return;\n&quot;);
</del><ins>+                push(@implContent, &quot;    &quot; . GetNativeTypeFromSignature($attribute-&gt;signature) . &quot; nativeValue(&quot; . JSValueToNative($attribute-&gt;signature, &quot;value&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;}) . &quot;);\n&quot;);
+                push(@implContent, &quot;    if (UNLIKELY(exec-&gt;hadException()))\n&quot;);
+                push(@implContent, &quot;        return;\n&quot;);
</ins><span class="cx"> 
</span><del>-                    if ($codeGenerator-&gt;IsEnumType($type)) {
-                        my @enumValues = $codeGenerator-&gt;ValidEnumValues($type);
-                        my @enumChecks = ();
-                        foreach my $enumValue (@enumValues) {
-                            push(@enumChecks, &quot;nativeValue != \&quot;$enumValue\&quot;&quot;);
-                        }
-                        push (@implContent, &quot;    if (&quot; . join(&quot; &amp;&amp; &quot;, @enumChecks) . &quot;)\n&quot;);
-                        push (@implContent, &quot;        return;\n&quot;);
</del><ins>+                if ($codeGenerator-&gt;IsEnumType($type)) {
+                    my @enumValues = $codeGenerator-&gt;ValidEnumValues($type);
+                    my @enumChecks = ();
+                    foreach my $enumValue (@enumValues) {
+                        push(@enumChecks, &quot;nativeValue != \&quot;$enumValue\&quot;&quot;);
</ins><span class="cx">                     }
</span><ins>+                    push (@implContent, &quot;    if (&quot; . join(&quot; &amp;&amp; &quot;, @enumChecks) . &quot;)\n&quot;);
+                    push (@implContent, &quot;        return;\n&quot;);
+                }
</ins><span class="cx"> 
</span><del>-                    if ($attribute-&gt;signature-&gt;type eq &quot;double&quot; or $attribute-&gt;signature-&gt;type eq &quot;float&quot;) {
-                        push(@implContent, &quot;    if (!std::isfinite(nativeValue)) {\n&quot;);
-                        push(@implContent, &quot;        setDOMException(exec, TypeError);\n&quot;);
</del><ins>+                if ($attribute-&gt;signature-&gt;type eq &quot;double&quot; or $attribute-&gt;signature-&gt;type eq &quot;float&quot;) {
+                    push(@implContent, &quot;    if (!std::isfinite(nativeValue)) {\n&quot;);
+                    push(@implContent, &quot;        setDOMException(exec, TypeError);\n&quot;);
+                    push(@implContent, &quot;        return;\n&quot;);
+                    push(@implContent, &quot;    }\n&quot;);
+                }
+
+                if ($svgPropertyOrListPropertyType) {
+                    if ($svgPropertyType) {
+                        push(@implContent, &quot;    if (impl.isReadOnly()) {\n&quot;);
+                        push(@implContent, &quot;        setDOMException(exec, NO_MODIFICATION_ALLOWED_ERR);\n&quot;);
</ins><span class="cx">                         push(@implContent, &quot;        return;\n&quot;);
</span><span class="cx">                         push(@implContent, &quot;    }\n&quot;);
</span><ins>+                        $implIncludes{&quot;ExceptionCode.h&quot;} = 1;
</ins><span class="cx">                     }
</span><del>-
-                    if ($svgPropertyOrListPropertyType) {
-                        if ($svgPropertyType) {
-                            push(@implContent, &quot;    if (impl.isReadOnly()) {\n&quot;);
-                            push(@implContent, &quot;        setDOMException(exec, NO_MODIFICATION_ALLOWED_ERR);\n&quot;);
-                            push(@implContent, &quot;        return;\n&quot;);
-                            push(@implContent, &quot;    }\n&quot;);
-                            $implIncludes{&quot;ExceptionCode.h&quot;} = 1;
-                        }
-                        push(@implContent, &quot;    $svgPropertyOrListPropertyType&amp; podImpl = impl.propertyReference();\n&quot;);
-                        if ($svgPropertyOrListPropertyType eq &quot;float&quot;) { # Special case for JSSVGNumber
-                            push(@implContent, &quot;    podImpl = nativeValue;\n&quot;);
-                        } else {
-                            push(@implContent, &quot;    podImpl.set$implSetterFunctionName(nativeValue&quot;);
-                            push(@implContent, &quot;, ec&quot;) if $setterRaisesException;
-                            push(@implContent, &quot;);\n&quot;);
-                            push(@implContent, &quot;    setDOMException(exec, ec);\n&quot;) if $setterRaisesException;
-                        }
-                        if ($svgPropertyType) {
-                            if ($setterRaisesException) {
-                                push(@implContent, &quot;    if (!ec)\n&quot;);
-                                push(@implContent, &quot;        impl.commitChange();\n&quot;);
-                            } else {
-                                push(@implContent, &quot;    impl.commitChange();\n&quot;);
-                            }
-                        }
</del><ins>+                    push(@implContent, &quot;    $svgPropertyOrListPropertyType&amp; podImpl = impl.propertyReference();\n&quot;);
+                    if ($svgPropertyOrListPropertyType eq &quot;float&quot;) { # Special case for JSSVGNumber
+                        push(@implContent, &quot;    podImpl = nativeValue;\n&quot;);
</ins><span class="cx">                     } else {
</span><del>-                        my ($functionName, @arguments) = $codeGenerator-&gt;SetterExpression(\%implIncludes, $interfaceName, $attribute);
-                        if ($codeGenerator-&gt;IsTypedArrayType($attribute-&gt;signature-&gt;type) and not $attribute-&gt;signature-&gt;type eq &quot;ArrayBuffer&quot;) {
-                            push(@arguments, &quot;nativeValue.get()&quot;);
</del><ins>+                        push(@implContent, &quot;    podImpl.set$implSetterFunctionName(nativeValue&quot;);
+                        push(@implContent, &quot;, ec&quot;) if $setterRaisesException;
+                        push(@implContent, &quot;);\n&quot;);
+                        push(@implContent, &quot;    setDOMException(exec, ec);\n&quot;) if $setterRaisesException;
+                    }
+                    if ($svgPropertyType) {
+                        if ($setterRaisesException) {
+                            push(@implContent, &quot;    if (!ec)\n&quot;);
+                            push(@implContent, &quot;        impl.commitChange();\n&quot;);
</ins><span class="cx">                         } else {
</span><del>-                            push(@arguments, &quot;nativeValue&quot;);
</del><ins>+                            push(@implContent, &quot;    impl.commitChange();\n&quot;);
</ins><span class="cx">                         }
</span><del>-                        if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;}) {
-                            my $implementedBy = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;};
-                            AddToImplIncludes(&quot;${implementedBy}.h&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;});
-                            unshift(@arguments, &quot;&amp;impl&quot;) if !$attribute-&gt;isStatic;
-                            $functionName = &quot;${implementedBy}::${functionName}&quot;;
-                        } elsif ($attribute-&gt;isStatic) {
-                            $functionName = &quot;${interfaceName}::${functionName}&quot;;
-                        } else {
-                            $functionName = &quot;impl.${functionName}&quot;;
-                        }
</del><ins>+                    }
+                } else {
+                    my ($functionName, @arguments) = $codeGenerator-&gt;SetterExpression(\%implIncludes, $interfaceName, $attribute);
+                    if ($codeGenerator-&gt;IsTypedArrayType($attribute-&gt;signature-&gt;type) and not $attribute-&gt;signature-&gt;type eq &quot;ArrayBuffer&quot;) {
+                        push(@arguments, &quot;nativeValue.get()&quot;);
+                    } else {
+                        push(@arguments, &quot;nativeValue&quot;);
+                    }
+                    if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;}) {
+                        my $implementedBy = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;};
+                        AddToImplIncludes(&quot;${implementedBy}.h&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;});
+                        unshift(@arguments, &quot;&amp;impl&quot;) if !$attribute-&gt;isStatic;
+                        $functionName = &quot;${implementedBy}::${functionName}&quot;;
+                    } elsif ($attribute-&gt;isStatic) {
+                        $functionName = &quot;${interfaceName}::${functionName}&quot;;
+                    } else {
+                        $functionName = &quot;impl.${functionName}&quot;;
+                    }
</ins><span class="cx"> 
</span><del>-                        unshift(@arguments, GenerateCallWith($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;}, \@implContent, &quot;&quot;));
</del><ins>+                    unshift(@arguments, GenerateCallWith($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;}, \@implContent, &quot;&quot;));
</ins><span class="cx"> 
</span><del>-                        push(@arguments, &quot;ec&quot;) if $setterRaisesException;
-                        push(@implContent, &quot;    ${functionName}(&quot; . join(&quot;, &quot;, @arguments) . &quot;);\n&quot;);
-                        push(@implContent, &quot;    setDOMException(exec, ec);\n&quot;) if $setterRaisesException;
-                    }
</del><ins>+                    push(@arguments, &quot;ec&quot;) if $setterRaisesException;
+                    push(@implContent, &quot;    ${functionName}(&quot; . join(&quot;, &quot;, @arguments) . &quot;);\n&quot;);
+                    push(@implContent, &quot;    setDOMException(exec, ec);\n&quot;) if $setterRaisesException;
</ins><span class="cx">                 }
</span><del>-
-                push(@implContent, &quot;}\n\n&quot;);
-                push(@implContent, &quot;#endif\n&quot;) if $attributeConditionalString;
-                push(@implContent, &quot;\n&quot;);
</del><span class="cx">             }
</span><ins>+
+            push(@implContent, &quot;}\n\n&quot;);
+            push(@implContent, &quot;#endif\n&quot;) if $attributeConditionalString;
+            push(@implContent, &quot;\n&quot;);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorObjCpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -555,7 +555,7 @@
</span><span class="cx">     return 1 if $codeGenerator-&gt;GetArrayType($type);
</span><span class="cx">     return 1 if $codeGenerator-&gt;IsTypedArrayType($type);
</span><span class="cx">     return 1 if $codeGenerator-&gt;IsEnumType($type);
</span><del>-    return 1 if $type eq &quot;EventListener&quot;;
</del><ins>+    return 1 if $type eq &quot;EventHandler&quot;;
</ins><span class="cx">     return 1 if $attribute-&gt;isStatic;
</span><span class="cx"> 
</span><span class="cx">     # This is for DynamicsCompressorNode.idl.
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsIDLAttributestxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -55,6 +55,7 @@
</span><span class="cx"> DoNotCheckSecurity
</span><span class="cx"> DoNotCheckSecurityOnGetter
</span><span class="cx"> DoNotCheckSecurityOnSetter
</span><ins>+DocumentEventHandler
</ins><span class="cx"> EnabledAtRuntime=*
</span><span class="cx"> EnabledBySetting=*
</span><span class="cx"> EnforceRange
</span><span class="lines">@@ -82,7 +83,6 @@
</span><span class="cx"> JSGenerateToJSObject
</span><span class="cx"> JSGenerateToNativeObject
</span><span class="cx"> JSLegacyParent=*
</span><del>-JSWindowEventListener
</del><span class="cx"> MasqueradesAsUndefined
</span><span class="cx"> NamedConstructor=*
</span><span class="cx"> NewImpurePropertyFiresWatchpoints
</span><span class="lines">@@ -115,6 +115,7 @@
</span><span class="cx"> TreatUndefinedAs=NullString
</span><span class="cx"> TypedArray=*
</span><span class="cx"> URL
</span><ins>+WindowEventHandler
</ins><span class="cx"> 
</span><span class="cx"> # PLATFORM(IOS)
</span><span class="cx"> AppleCopyright
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestTestObjidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/TestObj.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -111,7 +111,7 @@
</span><span class="cx"> 
</span><span class="cx">     void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</span><span class="cx">     void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</span><del>-    attribute EventListener onfoo;
</del><ins>+    attribute EventHandler onfoo;
</ins><span class="cx"> 
</span><span class="cx">     // 'CallWith' extended attribute
</span><span class="cx">     [CallWith=ScriptState] void withScriptStateVoid();
</span></span></pre></div>
<a id="trunkSourceWebCorecssFontLoaderidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/FontLoader.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/FontLoader.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/css/FontLoader.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -36,22 +36,18 @@
</span><span class="cx">     GenerateIsReachable=ImplDocument,
</span><span class="cx"> ] interface FontLoader {
</span><span class="cx"> 
</span><del>-    attribute EventListener onloading;
-    attribute EventListener onloadingdone;
-    attribute EventListener onloadstart;
-    attribute EventListener onload;
-    attribute EventListener onerror;
</del><ins>+    attribute EventHandler onloading;
+    attribute EventHandler onloadingdone;
+    attribute EventHandler onloadstart;
+    attribute EventHandler onload;
+    attribute EventHandler onerror;
</ins><span class="cx"> 
</span><span class="cx">     boolean checkFont(DOMString font, [Default=NullString] optional DOMString text);
</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><span class="cx"> 
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/dom/Document.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -244,69 +244,64 @@
</span><span class="cx">     [Conditional=FONT_LOAD_EVENTS] readonly attribute FontLoader fonts;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    [NotEnumerable] attribute EventListener onabort;
-    [NotEnumerable] attribute EventListener onbeforecopy;
-    [NotEnumerable] attribute EventListener onbeforecut;
-    [NotEnumerable] attribute EventListener onbeforepaste;
-    [NotEnumerable] attribute EventListener onblur;
-    [NotEnumerable] attribute EventListener onchange;
-    [NotEnumerable] attribute EventListener onclick;
-    [NotEnumerable] attribute EventListener oncontextmenu;
-    [NotEnumerable] attribute EventListener oncopy;
-    [NotEnumerable] attribute EventListener oncut;
-    [NotEnumerable] attribute EventListener ondblclick;
-    [NotEnumerable] attribute EventListener ondrag;
-    [NotEnumerable] attribute EventListener ondragend;
-    [NotEnumerable] attribute EventListener ondragenter;
-    [NotEnumerable] attribute EventListener ondragleave;
-    [NotEnumerable] attribute EventListener ondragover;
-    [NotEnumerable] attribute EventListener ondragstart;
-    [NotEnumerable] attribute EventListener ondrop;
-    [NotEnumerable] attribute EventListener onerror;
-    [NotEnumerable] attribute EventListener onfocus;
-    [NotEnumerable] attribute EventListener oninput;
-    [NotEnumerable] attribute EventListener oninvalid;
-    [NotEnumerable] attribute EventListener onkeydown;
-    [NotEnumerable] attribute EventListener onkeypress;
-    [NotEnumerable] attribute EventListener onkeyup;
-    [NotEnumerable] attribute EventListener onload;
-    [NotEnumerable] attribute EventListener onmousedown;
-    [NotEnumerable] attribute EventListener onmouseenter;
-    [NotEnumerable] attribute EventListener onmouseleave;
-    [NotEnumerable] attribute EventListener onmousemove;
-    [NotEnumerable] attribute EventListener onmouseout;
-    [NotEnumerable] attribute EventListener onmouseover;
-    [NotEnumerable] attribute EventListener onmouseup;
-    [NotEnumerable] attribute EventListener onmousewheel;
-    [NotEnumerable] attribute EventListener onpaste;
-    [NotEnumerable] attribute EventListener onreadystatechange;
-    [NotEnumerable] attribute EventListener onreset;
-    [NotEnumerable] attribute EventListener onscroll;
-    [NotEnumerable] attribute EventListener onsearch;
-    [NotEnumerable] attribute EventListener onselect;
-    [NotEnumerable] attribute EventListener onselectionchange;
-    [NotEnumerable] attribute EventListener onselectstart;
-    [NotEnumerable] attribute EventListener onsubmit;
-    [NotEnumerable] attribute EventListener onwheel;
</del><ins>+    [NotEnumerable] attribute EventHandler onabort;
+    [NotEnumerable] attribute EventHandler onbeforecopy;
+    [NotEnumerable] attribute EventHandler onbeforecut;
+    [NotEnumerable] attribute EventHandler onbeforepaste;
+    [NotEnumerable] attribute EventHandler onblur;
+    [NotEnumerable] attribute EventHandler onchange;
+    [NotEnumerable] attribute EventHandler onclick;
+    [NotEnumerable] attribute EventHandler oncontextmenu;
+    [NotEnumerable] attribute EventHandler oncopy;
+    [NotEnumerable] attribute EventHandler oncut;
+    [NotEnumerable] attribute EventHandler ondblclick;
+    [NotEnumerable] attribute EventHandler ondrag;
+    [NotEnumerable] attribute EventHandler ondragend;
+    [NotEnumerable] attribute EventHandler ondragenter;
+    [NotEnumerable] attribute EventHandler ondragleave;
+    [NotEnumerable] attribute EventHandler ondragover;
+    [NotEnumerable] attribute EventHandler ondragstart;
+    [NotEnumerable] attribute EventHandler ondrop;
+    [NotEnumerable] attribute EventHandler onerror;
+    [NotEnumerable] attribute EventHandler onfocus;
+    [NotEnumerable] attribute EventHandler oninput;
+    [NotEnumerable] attribute EventHandler oninvalid;
+    [NotEnumerable] attribute EventHandler onkeydown;
+    [NotEnumerable] attribute EventHandler onkeypress;
+    [NotEnumerable] attribute EventHandler onkeyup;
+    [NotEnumerable] attribute EventHandler onload;
+    [NotEnumerable] attribute EventHandler onmousedown;
+    [NotEnumerable] attribute EventHandler onmouseenter;
+    [NotEnumerable] attribute EventHandler onmouseleave;
+    [NotEnumerable] attribute EventHandler onmousemove;
+    [NotEnumerable] attribute EventHandler onmouseout;
+    [NotEnumerable] attribute EventHandler onmouseover;
+    [NotEnumerable] attribute EventHandler onmouseup;
+    [NotEnumerable] attribute EventHandler onmousewheel;
+    [NotEnumerable] attribute EventHandler onpaste;
+    [NotEnumerable] attribute EventHandler onpointerlockchange;
+    [NotEnumerable] attribute EventHandler onpointerlockerror;
+    [NotEnumerable] attribute EventHandler onreadystatechange;
+    [NotEnumerable] attribute EventHandler onreset;
+    [NotEnumerable] attribute EventHandler onscroll;
+    [NotEnumerable] attribute EventHandler onsearch;
+    [NotEnumerable] attribute EventHandler onsecuritypolicyviolation;
+    [NotEnumerable] attribute EventHandler onselect;
+    [NotEnumerable] attribute EventHandler onselectionchange;
+    [NotEnumerable] attribute EventHandler onselectstart;
+    [NotEnumerable] attribute EventHandler onsubmit;
+    [NotEnumerable] attribute EventHandler ontouchcancel;
+    [NotEnumerable] attribute EventHandler ontouchend;
+    [NotEnumerable] attribute EventHandler ontouchmove;
+    [NotEnumerable] attribute EventHandler ontouchstart;
+    [NotEnumerable] attribute EventHandler onwebkitfullscreenchange;
+    [NotEnumerable] attribute EventHandler onwebkitfullscreenerror;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealbottom;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealleft;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealright;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealtop;
+    [NotEnumerable] attribute EventHandler onwheel;
</ins><span class="cx"> 
</span><del>-    [NotEnumerable, Conditional=CSP_NEXT] attribute EventListener onsecuritypolicyviolation;
-
-    [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenchange;
-    [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenerror;
-
-    [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onpointerlockchange;
-    [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onpointerlockerror;
-
-    [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
-    [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
-    [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
-    [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
-
-    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
-    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
-    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
-    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
-
</del><span class="cx"> #if defined(ENABLE_IOS_TOUCH_EVENTS) &amp;&amp; ENABLE_IOS_TOUCH_EVENTS
</span><span class="cx"> #include &lt;WebKitAdditions/DocumentIOS.idl&gt;
</span><span class="cx"> #elif defined(ENABLE_TOUCH_EVENTS) &amp;&amp; ENABLE_TOUCH_EVENTS
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/dom/Element.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -168,104 +168,101 @@
</span><span class="cx">     // But we don't want to copy and paste this entire list; we can leave on Element
</span><span class="cx">     // for the moment since it doesn't do much real harm.
</span><span class="cx"> 
</span><del>-    [NotEnumerable] attribute EventListener onabort;
-    [NotEnumerable] attribute EventListener onanimationend;
-    [NotEnumerable] attribute EventListener onanimationiteration;
-    [NotEnumerable] attribute EventListener onanimationstart;
-    [NotEnumerable] attribute EventListener onbeforecopy;
-    [NotEnumerable] attribute EventListener onbeforecut;
-    [NotEnumerable] attribute EventListener onbeforeload;
-    [NotEnumerable] attribute EventListener onbeforepaste;
-    [NotEnumerable] attribute EventListener onblur;
-    [NotEnumerable] attribute EventListener oncanplay;
-    [NotEnumerable] attribute EventListener oncanplaythrough;
-    [NotEnumerable] attribute EventListener onchange;
-    [NotEnumerable] attribute EventListener onclick;
-    [NotEnumerable] attribute EventListener oncontextmenu;
-    [NotEnumerable] attribute EventListener oncopy;
-    [NotEnumerable] attribute EventListener oncut;
-    [NotEnumerable] attribute EventListener ondblclick;
-    [NotEnumerable] attribute EventListener ondrag;
-    [NotEnumerable] attribute EventListener ondragend;
-    [NotEnumerable] attribute EventListener ondragenter;
-    [NotEnumerable] attribute EventListener ondragleave;
-    [NotEnumerable] attribute EventListener ondragover;
-    [NotEnumerable] attribute EventListener ondragstart;
-    [NotEnumerable] attribute EventListener ondrop;
-    [NotEnumerable] attribute EventListener ondurationchange;
-    [NotEnumerable] attribute EventListener onemptied;
-    [NotEnumerable] attribute EventListener onended;
-    [NotEnumerable] attribute EventListener onerror;
-    [NotEnumerable] attribute EventListener onfocus;
-    [NotEnumerable] attribute EventListener onfocusin;
-    [NotEnumerable] attribute EventListener onfocusout;
-    [NotEnumerable] attribute EventListener oninput;
-    [NotEnumerable] attribute EventListener oninvalid;
-    [NotEnumerable] attribute EventListener onkeydown;
-    [NotEnumerable] attribute EventListener onkeypress;
-    [NotEnumerable] attribute EventListener onkeyup;
-    [NotEnumerable] attribute EventListener onload;
-    [NotEnumerable] attribute EventListener onloadeddata;
-    [NotEnumerable] attribute EventListener onloadedmetadata;
-    [NotEnumerable] attribute EventListener onloadstart;
-    [NotEnumerable] attribute EventListener onmousedown;
-    [NotEnumerable] attribute EventListener onmouseenter;
-    [NotEnumerable] attribute EventListener onmouseleave;
-    [NotEnumerable] attribute EventListener onmousemove;
-    [NotEnumerable] attribute EventListener onmouseout;
-    [NotEnumerable] attribute EventListener onmouseover;
-    [NotEnumerable] attribute EventListener onmouseup;
-    [NotEnumerable] attribute EventListener onmousewheel;
-    [NotEnumerable] attribute EventListener onpaste;
-    [NotEnumerable] attribute EventListener onpause;
-    [NotEnumerable] attribute EventListener onplay;
-    [NotEnumerable] attribute EventListener onplaying;
-    [NotEnumerable] attribute EventListener onprogress;
-    [NotEnumerable] attribute EventListener onratechange;
-    [NotEnumerable] attribute EventListener onreset;
-    [NotEnumerable] attribute EventListener onscroll;
-    [NotEnumerable] attribute EventListener onsearch;
-    [NotEnumerable] attribute EventListener onseeked;
-    [NotEnumerable] attribute EventListener onseeking;
-    [NotEnumerable] attribute EventListener onselect;
-    [NotEnumerable] attribute EventListener onselectstart;
-    [NotEnumerable] attribute EventListener onstalled;
-    [NotEnumerable] attribute EventListener onsubmit;
-    [NotEnumerable] attribute EventListener onsuspend;
-    [NotEnumerable] attribute EventListener ontimeupdate;
-    [NotEnumerable] attribute EventListener ontouchcancel;
-    [NotEnumerable] attribute EventListener ontouchend;
-    [NotEnumerable] attribute EventListener ontouchmove;
-    [NotEnumerable] attribute EventListener ontouchstart;
-    [NotEnumerable] attribute EventListener ontransitionend;
-    [NotEnumerable] attribute EventListener onvolumechange;
-    [NotEnumerable] attribute EventListener onwaiting;
-    [NotEnumerable] attribute EventListener onwheel;
-
-    // FIXME: If event handler attributes are all not enumerable, is there really a need to have them be conditional?
-    // I suggest just including them all unconditionally even if the event in question won't ever be sent.
-
-    [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventListener onwebkitkeyadded;
-    [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventListener onwebkitkeyerror;
-    [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventListener onwebkitkeymessage;
-
-    [NotEnumerable, Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] attribute EventListener onwebkitneedkey;
-
-    [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenchange;
-    [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenerror;
-
-    [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventListener onautocomplete;
-    [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventListener onautocompleteerror;
-
-    [NotEnumerable, Conditional=VIDEO_PRESENTATION_MODE] attribute EventListener onwebkitpresentationmodechanged;
-
-    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
-    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
-    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
-    [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
-
-    [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventListener onwebkitcurrentplaybacktargetiswirelesschanged;
-    [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventListener onwebkitplaybacktargetavailabilitychanged;
</del><ins>+    [NotEnumerable] attribute EventHandler onabort;
+    [NotEnumerable] attribute EventHandler onanimationend;
+    [NotEnumerable] attribute EventHandler onanimationiteration;
+    [NotEnumerable] attribute EventHandler onanimationstart;
+    [NotEnumerable] attribute EventHandler onautocomplete;
+    [NotEnumerable] attribute EventHandler onautocompleteerror;
+    [NotEnumerable] attribute EventHandler onbeforecopy;
+    [NotEnumerable] attribute EventHandler onbeforecut;
+    [NotEnumerable] attribute EventHandler onbeforeload;
+    [NotEnumerable] attribute EventHandler onbeforepaste;
+    [NotEnumerable] attribute EventHandler onblur;
+    [NotEnumerable] attribute EventHandler oncanplay;
+    [NotEnumerable] attribute EventHandler oncanplaythrough;
+    [NotEnumerable] attribute EventHandler onchange;
+    [NotEnumerable] attribute EventHandler onclick;
+    [NotEnumerable] attribute EventHandler oncontextmenu;
+    [NotEnumerable] attribute EventHandler oncopy;
+    [NotEnumerable] attribute EventHandler oncut;
+    [NotEnumerable] attribute EventHandler ondblclick;
+    [NotEnumerable] attribute EventHandler ondrag;
+    [NotEnumerable] attribute EventHandler ondragend;
+    [NotEnumerable] attribute EventHandler ondragenter;
+    [NotEnumerable] attribute EventHandler ondragleave;
+    [NotEnumerable] attribute EventHandler ondragover;
+    [NotEnumerable] attribute EventHandler ondragstart;
+    [NotEnumerable] attribute EventHandler ondrop;
+    [NotEnumerable] attribute EventHandler ondurationchange;
+    [NotEnumerable] attribute EventHandler onemptied;
+    [NotEnumerable] attribute EventHandler onended;
+    [NotEnumerable] attribute EventHandler onerror;
+    [NotEnumerable] attribute EventHandler onfocus;
+    [NotEnumerable] attribute EventHandler onfocusin;
+    [NotEnumerable] attribute EventHandler onfocusout;
+    [NotEnumerable] attribute EventHandler ongesturechange;
+    [NotEnumerable] attribute EventHandler ongestureend;
+    [NotEnumerable] attribute EventHandler ongesturestart;
+    [NotEnumerable] attribute EventHandler oninput;
+    [NotEnumerable] attribute EventHandler oninvalid;
+    [NotEnumerable] attribute EventHandler onkeydown;
+    [NotEnumerable] attribute EventHandler onkeypress;
+    [NotEnumerable] attribute EventHandler onkeyup;
+    [NotEnumerable] attribute EventHandler onload;
+    [NotEnumerable] attribute EventHandler onloadeddata;
+    [NotEnumerable] attribute EventHandler onloadedmetadata;
+    [NotEnumerable] attribute EventHandler onloadstart;
+    [NotEnumerable] attribute EventHandler onmousedown;
+    [NotEnumerable] attribute EventHandler onmouseenter;
+    [NotEnumerable] attribute EventHandler onmouseleave;
+    [NotEnumerable] attribute EventHandler onmousemove;
+    [NotEnumerable] attribute EventHandler onmouseout;
+    [NotEnumerable] attribute EventHandler onmouseover;
+    [NotEnumerable] attribute EventHandler onmouseup;
+    [NotEnumerable] attribute EventHandler onmousewheel;
+    [NotEnumerable] attribute EventHandler onpaste;
+    [NotEnumerable] attribute EventHandler onpause;
+    [NotEnumerable] attribute EventHandler onplay;
+    [NotEnumerable] attribute EventHandler onplaying;
+    [NotEnumerable] attribute EventHandler onprogress;
+    [NotEnumerable] attribute EventHandler onratechange;
+    [NotEnumerable] attribute EventHandler onreset;
+    [NotEnumerable] attribute EventHandler onscroll;
+    [NotEnumerable] attribute EventHandler onsearch;
+    [NotEnumerable] attribute EventHandler onseeked;
+    [NotEnumerable] attribute EventHandler onseeking;
+    [NotEnumerable] attribute EventHandler onselect;
+    [NotEnumerable] attribute EventHandler onselectstart;
+    [NotEnumerable] attribute EventHandler onstalled;
+    [NotEnumerable] attribute EventHandler onsubmit;
+    [NotEnumerable] attribute EventHandler onsuspend;
+    [NotEnumerable] attribute EventHandler ontimeupdate;
+    [NotEnumerable] attribute EventHandler ontouchcancel;
+    [NotEnumerable] attribute EventHandler ontouchend;
+    [NotEnumerable] attribute EventHandler ontouchmove;
+    [NotEnumerable] attribute EventHandler ontouchstart;
+    [NotEnumerable] attribute EventHandler ontransitionend;
+    [NotEnumerable] attribute EventHandler onvolumechange;
+    [NotEnumerable] attribute EventHandler onwaiting;
+    [NotEnumerable] attribute EventHandler onwebkitanimationend;
+    [NotEnumerable] attribute EventHandler onwebkitanimationiteration;
+    [NotEnumerable] attribute EventHandler onwebkitanimationstart;
+    [NotEnumerable] attribute EventHandler onwebkitcurrentplaybacktargetiswirelesschanged;
+    [NotEnumerable] attribute EventHandler onwebkitfullscreenchange;
+    [NotEnumerable] attribute EventHandler onwebkitfullscreenerror;
+    [NotEnumerable] attribute EventHandler onwebkitkeyadded;
+    [NotEnumerable] attribute EventHandler onwebkitkeyerror;
+    [NotEnumerable] attribute EventHandler onwebkitkeymessage;
+    [NotEnumerable] attribute EventHandler onwebkitneedkey;
+    [NotEnumerable] attribute EventHandler onwebkitplaybacktargetavailabilitychanged;
+    [NotEnumerable] attribute EventHandler onwebkitpresentationmodechanged;
+    [NotEnumerable] attribute EventHandler onwebkittransitionend;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealbottom;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealleft;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealright;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealtop;
+    [NotEnumerable] attribute EventHandler onwheel;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> Element implements ChildNode;
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventListeneridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventListener.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventListener.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/dom/EventListener.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -24,6 +24,5 @@
</span><span class="cx">     ObjCProtocol,
</span><span class="cx">     CPPPureInterface,
</span><span class="cx"> ] interface EventListener {
</span><del>-    void               handleEvent(Event evt);
</del><ins>+    void handleEvent(Event event);
</ins><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCoredomEventTargetidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventTarget.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventTarget.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/dom/EventTarget.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -27,12 +27,7 @@
</span><span class="cx">     JSCustomToNativeObject,
</span><span class="cx">     EventTarget,
</span><span class="cx"> ] interface EventTarget {
</span><del>-    [ObjCLegacyUnnamedParameters] void addEventListener(DOMString type, 
-                                         EventListener listener, 
-                                         optional boolean useCapture);
-    [ObjCLegacyUnnamedParameters] void removeEventListener(DOMString type, 
-                                            EventListener listener, 
-                                            optional boolean useCapture);
</del><ins>+    [ObjCLegacyUnnamedParameters] void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [ObjCLegacyUnnamedParameters] void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</ins><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> };
</span><del>-
</del></span></pre></div>
<a id="trunkSourceWebCoredomMessagePortidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MessagePort.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MessagePort.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/dom/MessagePort.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -39,17 +39,12 @@
</span><span class="cx">     void start();
</span><span class="cx">     void close();
</span><span class="cx"> 
</span><del>-    // event handler attributes
-    attribute EventListener onmessage;
</del><ins>+    attribute EventHandler onmessage;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/dom/Node.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -120,15 +120,11 @@
</span><span class="cx">     readonly attribute boolean          isContentEditable;
</span><span class="cx"> 
</span><span class="cx">     void inspect();
</span><del>-#endif /* defined(LANGUAGE_OBJECTIVE_C) */
</del><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
</span><del>-    void addEventListener(DOMString type, 
-                          EventListener listener, 
-                          optional boolean useCapture);
-    void removeEventListener(DOMString type, 
-                             EventListener listener, 
-                             optional boolean useCapture);
</del><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</ins><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomWebKitNamedFlowidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/WebKitNamedFlow.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/WebKitNamedFlow.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/dom/WebKitNamedFlow.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -41,11 +41,7 @@
</span><span class="cx">     NodeList getContent();
</span><span class="cx">     
</span><span class="cx">     // EventTarget interface
</span><del>-    void addEventListener(DOMString type, 
-                          EventListener listener, 
-                          optional boolean useCapture);
-    void removeEventListener(DOMString type, 
-                             EventListener listener, 
-                             optional boolean useCapture);
</del><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</ins><span class="cx">     [RaisesException] boolean dispatchEvent(Event event);
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorefileapiFileReaderidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/fileapi/FileReader.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/fileapi/FileReader.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/fileapi/FileReader.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -56,18 +56,14 @@
</span><span class="cx">     readonly attribute FileError error;
</span><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> 
</span><del>-    attribute EventListener onloadstart;
-    attribute EventListener onprogress;
-    attribute EventListener onload;
-    attribute EventListener onabort;
-    attribute EventListener onerror;
-    attribute EventListener onloadend;
</del><ins>+    attribute EventHandler onloadstart;
+    attribute EventHandler onprogress;
+    attribute EventHandler onload;
+    attribute EventHandler onabort;
+    attribute EventHandler onerror;
+    attribute EventHandler onloadend;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAttributeNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAttributeNames.in (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAttributeNames.in        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLAttributeNames.in        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -215,6 +215,7 @@
</span><span class="cx"> onloadeddata
</span><span class="cx"> onloadedmetadata
</span><span class="cx"> onloadstart
</span><ins>+onmessage
</ins><span class="cx"> onmousedown
</span><span class="cx"> onmouseenter
</span><span class="cx"> onmouseleave
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLBodyElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLBodyElement.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLBodyElement.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLBodyElement.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include &quot;HTMLParserIdioms.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;StyleProperties.h&quot;
</span><ins>+#include &lt;wtf/NeverDestroyed.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -94,6 +95,45 @@
</span><span class="cx">         HTMLElement::collectStyleForPresentationAttribute(name, value, style);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+HTMLElement::EventHandlerNameMap HTMLBodyElement::createWindowEventHandlerNameMap()
+{
+    static const QualifiedName* const table[] = {
+        &amp;onbeforeunloadAttr,
+        &amp;onblurAttr,
+        &amp;onerrorAttr,
+        &amp;onfocusAttr,
+        &amp;onfocusinAttr,
+        &amp;onfocusoutAttr,
+        &amp;onhashchangeAttr,
+        &amp;onloadAttr,
+        &amp;onmessageAttr,
+        &amp;onofflineAttr,
+        &amp;ononlineAttr,
+        &amp;onorientationchangeAttr,
+        &amp;onpagehideAttr,
+        &amp;onpageshowAttr,
+        &amp;onpopstateAttr,
+        &amp;onresizeAttr,
+        &amp;onscrollAttr,
+        &amp;onstorageAttr,
+        &amp;onunloadAttr,
+        &amp;onwebkitwillrevealbottomAttr,
+        &amp;onwebkitwillrevealleftAttr,
+        &amp;onwebkitwillrevealrightAttr,
+        &amp;onwebkitwillrevealtopAttr,
+    };
+
+    EventHandlerNameMap map;
+    populateEventHandlerNameMap(map, table);
+    return map;
+}
+
+const AtomicString&amp; HTMLBodyElement::eventNameForWindowEventHandlerAttribute(const QualifiedName&amp; attributeName)
+{
+    static NeverDestroyed&lt;EventHandlerNameMap&gt; map = createWindowEventHandlerNameMap();
+    return eventNameForEventHandlerAttribute(attributeName, map.get());
+}
+
</ins><span class="cx"> void HTMLBodyElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (name == vlinkAttr || name == alinkAttr || name == linkAttr) {
</span><span class="lines">@@ -117,52 +157,21 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         setNeedsStyleRecalc();
</span><del>-    } else if (name == onloadAttr)
-        document().setWindowAttributeEventListener(eventNames().loadEvent, name, value);
-    else if (name == onbeforeunloadAttr)
-        document().setWindowAttributeEventListener(eventNames().beforeunloadEvent, name, value);
-    else if (name == onunloadAttr)
-        document().setWindowAttributeEventListener(eventNames().unloadEvent, name, value);
-    else if (name == onpagehideAttr)
-        document().setWindowAttributeEventListener(eventNames().pagehideEvent, name, value);
-    else if (name == onpageshowAttr)
-        document().setWindowAttributeEventListener(eventNames().pageshowEvent, name, value);
-    else if (name == onpopstateAttr)
-        document().setWindowAttributeEventListener(eventNames().popstateEvent, name, value);
-    else if (name == onblurAttr)
-        document().setWindowAttributeEventListener(eventNames().blurEvent, name, value);
-    else if (name == onfocusAttr)
-        document().setWindowAttributeEventListener(eventNames().focusEvent, name, value);
-#if ENABLE(ORIENTATION_EVENTS)
-    else if (name == onorientationchangeAttr)
-        document().setWindowAttributeEventListener(eventNames().orientationchangeEvent, name, value);
-#endif
-    else if (name == onhashchangeAttr)
-        document().setWindowAttributeEventListener(eventNames().hashchangeEvent, name, value);
-    else if (name == onresizeAttr)
-        document().setWindowAttributeEventListener(eventNames().resizeEvent, name, value);
-    else if (name == onscrollAttr)
-        document().setWindowAttributeEventListener(eventNames().scrollEvent, name, value);
-    else if (name == onselectionchangeAttr)
</del><ins>+        return;
+    }
+
+    if (name == onselectionchangeAttr) {
</ins><span class="cx">         document().setAttributeEventListener(eventNames().selectionchangeEvent, name, value);
</span><del>-    else if (name == onstorageAttr)
-        document().setWindowAttributeEventListener(eventNames().storageEvent, name, value);
-    else if (name == ononlineAttr)
-        document().setWindowAttributeEventListener(eventNames().onlineEvent, name, value);
-    else if (name == onofflineAttr)
-        document().setWindowAttributeEventListener(eventNames().offlineEvent, name, value);
-#if ENABLE(WILL_REVEAL_EDGE_EVENTS)
-    else if (name == onwebkitwillrevealbottomAttr)
-        document().setWindowAttributeEventListener(eventNames().webkitwillrevealbottomEvent, name, value);
-    else if (name == onwebkitwillrevealleftAttr)
-        document().setWindowAttributeEventListener(eventNames().webkitwillrevealleftEvent, name, value);
-    else if (name == onwebkitwillrevealrightAttr)
-        document().setWindowAttributeEventListener(eventNames().webkitwillrevealrightEvent, name, value);
-    else if (name == onwebkitwillrevealtopAttr)
-        document().setWindowAttributeEventListener(eventNames().webkitwillrevealtopEvent, name, value);
-#endif
-    else
-        HTMLElement::parseAttribute(name, value);
</del><ins>+        return;
+    }
+
+    auto&amp; eventName = eventNameForWindowEventHandlerAttribute(name);
+    if (!eventName.isNull()) {
+        document().setWindowAttributeEventListener(eventName, name, value);
+        return;
+    }
+
+    HTMLElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Node::InsertionNotificationRequest HTMLBodyElement::insertedInto(ContainerNode&amp; insertionPoint)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLBodyElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLBodyElement.h (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLBodyElement.h        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLBodyElement.h        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -2,7 +2,7 @@
</span><span class="cx">  * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
</span><span class="cx">  *           (C) 1999 Antti Koivisto (koivisto@kde.org)
</span><span class="cx">  *           (C) 2000 Simon Hausmann &lt;hausmann@kde.org&gt;
</span><del>- * Copyright (C) 2004, 2006, 2009, 2010 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2004, 2006, 2009, 2010, 2015 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * This library is free software; you can redistribute it and/or
</span><span class="cx">  * modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -28,14 +28,14 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class Document;
-
</del><span class="cx"> class HTMLBodyElement final : public HTMLElement {
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;HTMLBodyElement&gt; create(Document&amp;);
</span><span class="cx">     static Ref&lt;HTMLBodyElement&gt; create(const QualifiedName&amp;, Document&amp;);
</span><span class="cx">     virtual ~HTMLBodyElement();
</span><span class="cx"> 
</span><ins>+    static const AtomicString&amp; eventNameForWindowEventHandlerAttribute(const QualifiedName&amp; attributeName);
+
</ins><span class="cx"> private:
</span><span class="cx">     HTMLBodyElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -59,6 +59,8 @@
</span><span class="cx">     virtual int scrollWidth() override;
</span><span class="cx">     
</span><span class="cx">     virtual void addSubresourceAttributeURLs(ListHashSet&lt;URL&gt;&amp;) const override;
</span><ins>+
+    static EventHandlerNameMap createWindowEventHandlerNameMap();
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } //namespace
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLBodyElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLBodyElement.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLBodyElement.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLBodyElement.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -26,22 +26,30 @@
</span><span class="cx">     [Reflect] attribute DOMString text;
</span><span class="cx">     [Reflect] attribute DOMString vLink;
</span><span class="cx"> 
</span><del>-    [NotEnumerable, JSWindowEventListener] attribute EventListener onbeforeunload;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onblur;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onerror;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onfocus;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onhashchange;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onload;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onmessage;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onoffline;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener ononline;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onpagehide;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onpageshow;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onpopstate;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onresize;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onstorage;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onunload;
</del><ins>+    [NotEnumerable, WindowEventHandler] attribute EventHandler onbeforeunload;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onblur;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onerror;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onfocus;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onfocusin;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onfocusout;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onhashchange;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onload;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onmessage;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onoffline;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler ononline;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onorientationchange;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onpagehide;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onpageshow;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onpopstate;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onresize;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onscroll;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onstorage;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onunload;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitwillrevealbottom;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitwillrevealleft;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitwillrevealright;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitwillrevealtop;
</ins><span class="cx"> 
</span><del>-    [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] attribute EventListener onorientationchange;
</del><ins>+    [NotEnumerable, DocumentEventHandler] attribute EventHandler onselectionchange;
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLElement.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -248,13 +248,17 @@
</span><span class="cx">         StyledElement::collectStyleForPresentationAttribute(name, value, style);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLElement::populateEventNameForAttributeLocalNameMap(HashMap&lt;AtomicStringImpl*, AtomicString&gt;&amp; map)
</del><ins>+HTMLElement::EventHandlerNameMap HTMLElement::createEventHandlerNameMap()
</ins><span class="cx"> {
</span><del>-    static const QualifiedName* const simpleTable[] = {
</del><ins>+    EventHandlerNameMap map;
+
+    static const QualifiedName* const table[] = {
</ins><span class="cx">         &amp;onabortAttr,
</span><span class="cx">         &amp;onanimationendAttr,
</span><span class="cx">         &amp;onanimationiterationAttr,
</span><span class="cx">         &amp;onanimationstartAttr,
</span><ins>+        &amp;onautocompleteAttr,
+        &amp;onautocompleteerrorAttr,
</ins><span class="cx">         &amp;onbeforecopyAttr,
</span><span class="cx">         &amp;onbeforecutAttr,
</span><span class="cx">         &amp;onbeforeloadAttr,
</span><span class="lines">@@ -282,6 +286,9 @@
</span><span class="cx">         &amp;onfocusAttr,
</span><span class="cx">         &amp;onfocusinAttr,
</span><span class="cx">         &amp;onfocusoutAttr,
</span><ins>+        &amp;ongesturechangeAttr,
+        &amp;ongestureendAttr,
+        &amp;ongesturestartAttr,
</ins><span class="cx">         &amp;oninputAttr,
</span><span class="cx">         &amp;oninvalidAttr,
</span><span class="cx">         &amp;onkeydownAttr,
</span><span class="lines">@@ -324,88 +331,105 @@
</span><span class="cx">         &amp;onvolumechangeAttr,
</span><span class="cx">         &amp;onwaitingAttr,
</span><span class="cx">         &amp;onwebkitbeginfullscreenAttr,
</span><ins>+        &amp;onwebkitcurrentplaybacktargetiswirelesschangedAttr,
</ins><span class="cx">         &amp;onwebkitendfullscreenAttr,
</span><del>-        &amp;onwheelAttr,
-#if ENABLE(FULLSCREEN_API)
</del><span class="cx">         &amp;onwebkitfullscreenchangeAttr,
</span><span class="cx">         &amp;onwebkitfullscreenerrorAttr,
</span><del>-#endif
-#if ENABLE(IOS_GESTURE_EVENTS)
-        &amp;ongesturechangeAttr,
-        &amp;ongestureendAttr,
-        &amp;ongesturestartAttr,
-#endif
-#if ENABLE(REQUEST_AUTOCOMPLETE)
-        &amp;onautocompleteAttr,
-        &amp;onautocompleteerrorAttr,
-#endif
-#if ENABLE(VIDEO_PRESENTATION_MODE)
</del><ins>+        &amp;onwebkitkeyaddedAttr,
+        &amp;onwebkitkeyerrorAttr,
+        &amp;onwebkitkeymessageAttr,
+        &amp;onwebkitneedkeyAttr,
+        &amp;onwebkitplaybacktargetavailabilitychangedAttr,
</ins><span class="cx">         &amp;onwebkitpresentationmodechangedAttr,
</span><del>-#endif
-#if ENABLE(WILL_REVEAL_EDGE_EVENTS)
</del><span class="cx">         &amp;onwebkitwillrevealbottomAttr,
</span><span class="cx">         &amp;onwebkitwillrevealleftAttr,
</span><span class="cx">         &amp;onwebkitwillrevealrightAttr,
</span><span class="cx">         &amp;onwebkitwillrevealtopAttr,
</span><del>-#endif
-#if ENABLE(WIRELESS_PLAYBACK_TARGET)
-        &amp;onwebkitcurrentplaybacktargetiswirelesschangedAttr,
-        &amp;onwebkitplaybacktargetavailabilitychangedAttr,
-#endif
</del><ins>+        &amp;onwheelAttr,
</ins><span class="cx">     };
</span><span class="cx"> 
</span><del>-    for (unsigned i = 0, size = WTF_ARRAY_LENGTH(simpleTable); i &lt; size; ++i) {
-        // FIXME: Would be nice to check these against the actual event names in eventNames().
-        // Not obvious how to do that simply, though.
-        const AtomicString&amp; attributeName = simpleTable[i]-&gt;localName();
</del><ins>+    populateEventHandlerNameMap(map, table);
</ins><span class="cx"> 
</span><del>-        // Remove the &quot;on&quot; prefix. Requires some memory allocation and computing a hash, but
-        // by not using pointers from eventNames(), simpleTable can be initialized at compile time.
-        AtomicString eventName = attributeName.string().substring(2);
-
-        map.add(attributeName.impl(), eventName);
-    }
-
-    struct CustomMapping {
</del><ins>+    struct UnusualMapping {
</ins><span class="cx">         const QualifiedName&amp; attributeName;
</span><span class="cx">         const AtomicString&amp; eventName;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    const CustomMapping customTable[] = {
</del><ins>+    const UnusualMapping unusualPairsTable[] = {
</ins><span class="cx">         { onwebkitanimationendAttr, eventNames().webkitAnimationEndEvent },
</span><span class="cx">         { onwebkitanimationiterationAttr, eventNames().webkitAnimationIterationEvent },
</span><span class="cx">         { onwebkitanimationstartAttr, eventNames().webkitAnimationStartEvent },
</span><span class="cx">         { onwebkittransitionendAttr, eventNames().webkitTransitionEndEvent },
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    for (unsigned i = 0, size = WTF_ARRAY_LENGTH(customTable); i &lt; size; ++i)
-        map.add(customTable[i].attributeName.localName().impl(), customTable[i].eventName);
</del><ins>+    for (auto&amp; entry : unusualPairsTable)
+        map.add(entry.attributeName.localName().impl(), entry.eventName);
+
+    return map;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void HTMLElement::populateEventHandlerNameMap(EventHandlerNameMap&amp; map, const QualifiedName* const table[], size_t tableSize)
+{
+    for (size_t i = 0; i &lt; tableSize; ++i) {
+        auto* entry = table[i];
+
+        // FIXME: Would be nice to check these against the actual event names in eventNames().
+        // Not obvious how to do that simply, though.
+        auto&amp; attributeName = entry-&gt;localName();
+
+        // Remove the &quot;on&quot; prefix. Requires some memory allocation and computing a hash, but by not
+        // using pointers from eventNames(), the passed-in table can be initialized at compile time.
+        AtomicString eventName = attributeName.string().substring(2);
+
+        map.add(attributeName.impl(), WTF::move(eventName));
+    }
+}
+
+const AtomicString&amp; HTMLElement::eventNameForEventHandlerAttribute(const QualifiedName&amp; attributeName, const EventHandlerNameMap&amp; map)
+{
+    ASSERT(!attributeName.localName().isNull());
+
+    // Event handler attributes have no namespace.
+    if (!attributeName.namespaceURI().isNull())
+        return nullAtom;
+
+    // Fast early return for names that don't start with &quot;on&quot;.
+    AtomicStringImpl&amp; localName = *attributeName.localName().impl();
+    if (localName.length() &lt; 3 || localName[0] != 'o' || localName[1] != 'n')
+        return nullAtom;
+
+    auto it = map.find(&amp;localName);
+    return it == map.end() ? nullAtom : it-&gt;value;
+}
+
+const AtomicString&amp; HTMLElement::eventNameForEventHandlerAttribute(const QualifiedName&amp; attributeName)
+{
+    static NeverDestroyed&lt;EventHandlerNameMap&gt; map = createEventHandlerNameMap();
+    return eventNameForEventHandlerAttribute(attributeName, map.get());
+}
+
</ins><span class="cx"> Node::Editability HTMLElement::editabilityFromContentEditableAttr(const Node&amp; node)
</span><span class="cx"> {
</span><del>-    const Node* currentNode = &amp;node;
-    do {
-        if (is&lt;HTMLElement&gt;(*currentNode)) {
-            switch (contentEditableType(downcast&lt;HTMLElement&gt;(*currentNode))) {
</del><ins>+    if (auto* startElement = is&lt;Element&gt;(node) ? &amp;downcast&lt;Element&gt;(node) : node.parentElement()) {
+        for (auto&amp; element : lineageOfType&lt;HTMLElement&gt;(*startElement)) {
+            switch (contentEditableType(element)) {
</ins><span class="cx">             case ContentEditableType::True:
</span><del>-                return Node::Editability::CanEditRichly;
</del><ins>+                return Editability::CanEditRichly;
</ins><span class="cx">             case ContentEditableType::PlaintextOnly:
</span><del>-                return Node::Editability::CanEditPlainText;
</del><ins>+                return Editability::CanEditPlainText;
</ins><span class="cx">             case ContentEditableType::False:
</span><del>-                return Node::Editability::ReadOnly;
</del><ins>+                return Editability::ReadOnly;
</ins><span class="cx">             case ContentEditableType::Inherit:
</span><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">         }
</span><del>-        currentNode = currentNode-&gt;parentNode();
-    } while (currentNode);
</del><ins>+    }
</ins><span class="cx"> 
</span><del>-    const Document&amp; document = node.document();
</del><ins>+    auto&amp; document = node.document();
</ins><span class="cx">     if (is&lt;HTMLDocument&gt;(document))
</span><del>-        return downcast&lt;HTMLDocument&gt;(document).inDesignMode() ? Node::Editability::CanEditRichly : Node::Editability::ReadOnly;
</del><ins>+        return downcast&lt;HTMLDocument&gt;(document).inDesignMode() ? Editability::CanEditRichly : Editability::ReadOnly;
</ins><span class="cx"> 
</span><del>-    return Node::Editability::ReadOnly;
</del><ins>+    return Editability::ReadOnly;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLElement::matchesReadWritePseudoClass() const
</span><span class="lines">@@ -415,39 +439,38 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (name == HTMLNames::idAttr || name == HTMLNames::classAttr || name == HTMLNames::styleAttr)
-        return StyledElement::parseAttribute(name, value);
</del><ins>+    if (name == dirAttr) {
+        dirAttributeChanged(value);
+        return;
+    }
</ins><span class="cx"> 
</span><del>-    if (name == dirAttr)
-        dirAttributeChanged(value);
-    else if (name == tabindexAttr) {
-        int tabindex = 0;
</del><ins>+    if (name == tabindexAttr) {
+        int tabIndex = 0;
</ins><span class="cx">         if (value.isEmpty())
</span><span class="cx">             clearTabIndexExplicitlyIfNeeded();
</span><del>-        else if (parseHTMLInteger(value, tabindex)) {
-            // Clamp tabindex to the range of 'short' to match Firefox's behavior.
-            setTabIndexExplicitly(std::max(static_cast&lt;int&gt;(std::numeric_limits&lt;short&gt;::min()), std::min(tabindex, static_cast&lt;int&gt;(std::numeric_limits&lt;short&gt;::max()))));
</del><ins>+        else if (parseHTMLInteger(value, tabIndex)) {
+            // Clamp tab index to a 16-bit value to match Firefox's behavior.
+            setTabIndexExplicitly(std::max(-0x8000, std::min(tabIndex, 0x7FFF)));
</ins><span class="cx">         }
</span><del>-    } else if (name.namespaceURI().isNull()) {
-        // FIXME: Can we do this even faster by checking the local name &quot;on&quot; prefix before we do anything with the map?
-        static NeverDestroyed&lt;HashMap&lt;AtomicStringImpl*, AtomicString&gt;&gt; eventNamesGlobal;
-        auto&amp; eventNames = eventNamesGlobal.get();
-        if (eventNames.isEmpty())
-            populateEventNameForAttributeLocalNameMap(eventNames);
-        const AtomicString&amp; eventName = eventNames.get(name.localName().impl());
-        if (!eventName.isNull())
-            setAttributeEventListener(eventName, name, value);
</del><ins>+        return;
</ins><span class="cx">     }
</span><ins>+
+    auto&amp; eventName = eventNameForEventHandlerAttribute(name);
+    if (!eventName.isNull())
+        setAttributeEventListener(eventName, name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;DocumentFragment&gt; HTMLElement::textToFragment(const String&amp; text, ExceptionCode&amp; ec)
</del><ins>+Ref&lt;DocumentFragment&gt; HTMLElement::textToFragment(const String&amp; text, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><del>-    RefPtr&lt;DocumentFragment&gt; fragment = DocumentFragment::create(document());
-    unsigned int i, length = text.length();
-    UChar c = 0;
-    for (unsigned int start = 0; start &lt; length; ) {
</del><ins>+    ec = 0;
</ins><span class="cx"> 
</span><ins>+    auto fragment = DocumentFragment::create(document());
+
+    for (unsigned start = 0, length = text.length(); start &lt; length; ) {
+
</ins><span class="cx">         // Find next line break.
</span><ins>+        UChar c;
+        unsigned i;
</ins><span class="cx">         for (i = start; i &lt; length; i++) {
</span><span class="cx">             c = text[i];
</span><span class="cx">             if (c == '\r' || c == '\n')
</span><span class="lines">@@ -456,17 +479,19 @@
</span><span class="cx"> 
</span><span class="cx">         fragment-&gt;appendChild(Text::create(document(), text.substring(start, i - start)), ec);
</span><span class="cx">         if (ec)
</span><del>-            return nullptr;
</del><ins>+            break;
</ins><span class="cx"> 
</span><del>-        if (c == '\r' || c == '\n') {
-            fragment-&gt;appendChild(HTMLBRElement::create(document()), ec);
-            if (ec)
-                return nullptr;
-            // Make sure \r\n doesn't result in two line breaks.
-            if (c == '\r' &amp;&amp; i + 1 &lt; length &amp;&amp; text[i + 1] == '\n')
-                i++;
-        }
</del><ins>+        if (i == length)
+            break;
</ins><span class="cx"> 
</span><ins>+        fragment-&gt;appendChild(HTMLBRElement::create(document()), ec);
+        if (ec)
+            break;
+
+        // Make sure \r\n doesn't result in two line breaks.
+        if (c == '\r' &amp;&amp; i + 1 &lt; length &amp;&amp; text[i + 1] == '\n')
+            ++i;
+
</ins><span class="cx">         start = i + 1; // Character after line break.
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.h (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.h        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLElement.h        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
</span><span class="cx">  *           (C) 1999 Antti Koivisto (koivisto@kde.org)
</span><del>- * Copyright (C) 2004, 2005, 2006, 2007, 2009 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2004-2009, 2015 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * This library is free software; you can redistribute it and/or
</span><span class="cx">  * modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -99,10 +99,10 @@
</span><span class="cx">     virtual bool isLabelable() const { return false; }
</span><span class="cx">     virtual FormNamedItem* asFormNamedItem() { return 0; }
</span><span class="cx"> 
</span><del>-    static void populateEventNameForAttributeLocalNameMap(HashMap&lt;AtomicStringImpl*, AtomicString&gt;&amp;);
-
</del><span class="cx">     bool hasTagName(const HTMLQualifiedName&amp; name) const { return hasLocalName(name.localName()); }
</span><span class="cx"> 
</span><ins>+    static const AtomicString&amp; eventNameForEventHandlerAttribute(const QualifiedName&amp; attributeName);
+
</ins><span class="cx"> protected:
</span><span class="cx">     HTMLElement(const QualifiedName&amp; tagName, Document&amp;, ConstructionType);
</span><span class="cx"> 
</span><span class="lines">@@ -121,6 +121,10 @@
</span><span class="cx">     virtual void childrenChanged(const ChildChange&amp;) override;
</span><span class="cx">     void calculateAndAdjustDirectionality();
</span><span class="cx"> 
</span><ins>+    typedef HashMap&lt;AtomicStringImpl*, AtomicString&gt; EventHandlerNameMap;
+    template&lt;size_t tableSize&gt; static void populateEventHandlerNameMap(EventHandlerNameMap&amp;, const QualifiedName* const (&amp;table)[tableSize]);
+    static const AtomicString&amp; eventNameForEventHandlerAttribute(const QualifiedName&amp; attributeName, const EventHandlerNameMap&amp;);
+
</ins><span class="cx"> private:
</span><span class="cx">     virtual String nodeName() const override final;
</span><span class="cx"> 
</span><span class="lines">@@ -129,7 +133,7 @@
</span><span class="cx">     virtual HTMLFormElement* virtualForm() const;
</span><span class="cx"> 
</span><span class="cx">     Node* insertAdjacent(const String&amp; where, Node* newChild, ExceptionCode&amp;);
</span><del>-    RefPtr&lt;DocumentFragment&gt; textToFragment(const String&amp;, ExceptionCode&amp;);
</del><ins>+    Ref&lt;DocumentFragment&gt; textToFragment(const String&amp;, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void dirAttributeChanged(const AtomicString&amp;);
</span><span class="cx">     void adjustDirectionalityIfNeededAfterChildAttributeChanged(Element* child);
</span><span class="lines">@@ -137,6 +141,9 @@
</span><span class="cx">     TextDirection directionality(Node** strongDirectionalityTextNode= 0) const;
</span><span class="cx"> 
</span><span class="cx">     TranslateAttributeMode translateAttributeMode() const;
</span><ins>+
+    static void populateEventHandlerNameMap(EventHandlerNameMap&amp;, const QualifiedName* const table[], size_t tableSize);
+    static EventHandlerNameMap createEventHandlerNameMap();
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> inline HTMLElement::HTMLElement(const QualifiedName&amp; tagName, Document&amp; document, ConstructionType type = CreateHTMLElement)
</span><span class="lines">@@ -145,6 +152,11 @@
</span><span class="cx">     ASSERT(tagName.localName().impl());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;size_t tableSize&gt; inline void HTMLElement::populateEventHandlerNameMap(EventHandlerNameMap&amp; map, const QualifiedName* const (&amp;table)[tableSize])
+{
+    populateEventHandlerNameMap(map, table, tableSize);
+}
+
</ins><span class="cx"> inline bool Node::hasTagName(const HTMLQualifiedName&amp; name) const
</span><span class="cx"> {
</span><span class="cx">     return is&lt;HTMLElement&gt;(*this) &amp;&amp; downcast&lt;HTMLElement&gt;(*this).hasTagName(name);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameElementBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameElementBase.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameElementBase.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLFrameElementBase.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -118,11 +118,6 @@
</span><span class="cx">         else if (equalIgnoringCase(value, &quot;no&quot;))
</span><span class="cx">             m_scrolling = ScrollbarAlwaysOff;
</span><span class="cx">         // FIXME: If we are already attached, this has no effect.
</span><del>-    } else if (name == onbeforeloadAttr)
-        setAttributeEventListener(eventNames().beforeloadEvent, name, value);
-    else if (name == onbeforeunloadAttr) {
-        // FIXME: should &lt;frame&gt; elements have beforeunload handlers?
-        setAttributeEventListener(eventNames().beforeunloadEvent, name, value);
</del><span class="cx">     } else
</span><span class="cx">         HTMLFrameOwnerElement::parseAttribute(name, value);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameSetElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameSetElement.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameSetElement.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLFrameSetElement.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameLoaderClient.h&quot;
</span><ins>+#include &quot;HTMLBodyElement.h&quot;
</ins><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;Length.h&quot;
</span><span class="cx"> #include &quot;MouseEvent.h&quot;
</span><span class="lines">@@ -81,16 +82,28 @@
</span><span class="cx"> void HTMLFrameSetElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (name == rowsAttr) {
</span><ins>+        // FIXME: What is the right thing to do when removing this attribute?
+        // Why not treat it the same way we treat setting it to the empty string?
</ins><span class="cx">         if (!value.isNull()) {
</span><span class="cx">             m_rowLengths = newLengthArray(value.string(), m_totalRows);
</span><ins>+            // FIXME: Would be nice to optimize the case where m_rowLengths did not change.
</ins><span class="cx">             setNeedsStyleRecalc();
</span><span class="cx">         }
</span><del>-    } else if (name == colsAttr) {
</del><ins>+        return;
+    }
+
+    if (name == colsAttr) {
+        // FIXME: What is the right thing to do when removing this attribute?
+        // Why not treat it the same way we treat setting it to the empty string?
</ins><span class="cx">         if (!value.isNull()) {
</span><span class="cx">             m_colLengths = newLengthArray(value.string(), m_totalCols);
</span><ins>+            // FIXME: Would be nice to optimize the case where m_colLengths did not change.
</ins><span class="cx">             setNeedsStyleRecalc();
</span><span class="cx">         }
</span><del>-    } else if (name == frameborderAttr) {
</del><ins>+        return;
+    }
+
+    if (name == frameborderAttr) {
</ins><span class="cx">         if (!value.isNull()) {
</span><span class="cx">             if (equalIgnoringCase(value, &quot;no&quot;) || equalIgnoringCase(value, &quot;0&quot;)) {
</span><span class="cx">                 m_frameborder = false;
</span><span class="lines">@@ -102,50 +115,40 @@
</span><span class="cx">             m_frameborder = false;
</span><span class="cx">             m_frameborderSet = false;
</span><span class="cx">         }
</span><del>-    } else if (name == noresizeAttr) {
</del><ins>+        // FIXME: Do we need to trigger repainting?
+        return;
+    }
+
+    if (name == noresizeAttr) {
+        // FIXME: This should set m_noresize to false if the value is null.
</ins><span class="cx">         m_noresize = true;
</span><del>-    } else if (name == borderAttr) {
</del><ins>+        return;
+    }
+
+    if (name == borderAttr) {
</ins><span class="cx">         if (!value.isNull()) {
</span><span class="cx">             m_border = value.toInt();
</span><span class="cx">             m_borderSet = true;
</span><span class="cx">         } else
</span><span class="cx">             m_borderSet = false;
</span><del>-    } else if (name == bordercolorAttr)
</del><ins>+        // FIXME: Do we need to trigger repainting?
+        return;
+    }
+
+    if (name == bordercolorAttr) {
</ins><span class="cx">         m_borderColorSet = !value.isEmpty();
</span><del>-    else if (name == onloadAttr)
-        document().setWindowAttributeEventListener(eventNames().loadEvent, name, value);
-    else if (name == onbeforeunloadAttr)
-        document().setWindowAttributeEventListener(eventNames().beforeunloadEvent, name, value);
-    else if (name == onunloadAttr)
-        document().setWindowAttributeEventListener(eventNames().unloadEvent, name, value);
-    else if (name == onblurAttr)
-        document().setWindowAttributeEventListener(eventNames().blurEvent, name, value);
-    else if (name == onfocusAttr)
-        document().setWindowAttributeEventListener(eventNames().focusEvent, name, value);
-    else if (name == onfocusinAttr)
-        document().setWindowAttributeEventListener(eventNames().focusinEvent, name, value);
-    else if (name == onfocusoutAttr)
-        document().setWindowAttributeEventListener(eventNames().focusoutEvent, name, value);
-#if ENABLE(ORIENTATION_EVENTS)
-    else if (name == onorientationchangeAttr)
-        document().setWindowAttributeEventListener(eventNames().orientationchangeEvent, name, value);
-#endif
-    else if (name == onhashchangeAttr)
-        document().setWindowAttributeEventListener(eventNames().hashchangeEvent, name, value);
-    else if (name == onresizeAttr)
-        document().setWindowAttributeEventListener(eventNames().resizeEvent, name, value);
-    else if (name == onscrollAttr)
-        document().setWindowAttributeEventListener(eventNames().scrollEvent, name, value);
-    else if (name == onstorageAttr)
-        document().setWindowAttributeEventListener(eventNames().storageEvent, name, value);
-    else if (name == ononlineAttr)
-        document().setWindowAttributeEventListener(eventNames().onlineEvent, name, value);
-    else if (name == onofflineAttr)
-        document().setWindowAttributeEventListener(eventNames().offlineEvent, name, value);
-    else if (name == onpopstateAttr)
-        document().setWindowAttributeEventListener(eventNames().popstateEvent, name, value);
-    else
-        HTMLElement::parseAttribute(name, value);
</del><ins>+        // FIXME: Clearly wrong: This can overwrite the value inherited from the parent frameset.
+        // FIXME: Do we need to trigger repainting?
+        return;
+    }
+
+    auto&amp; eventName = HTMLBodyElement::eventNameForWindowEventHandlerAttribute(name);
+    if (!eventName.isNull()) {
+        document().setWindowAttributeEventListener(eventName, name, value);
+        return;
+    }
+
+    HTMLElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLFrameSetElement::rendererIsNeeded(const RenderStyle&amp; style)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameSetElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameSetElement.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameSetElement.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLFrameSetElement.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -24,20 +24,28 @@
</span><span class="cx">     [Reflect] attribute DOMString cols;
</span><span class="cx">     [Reflect] attribute DOMString rows;
</span><span class="cx"> 
</span><del>-    [NotEnumerable, JSWindowEventListener] attribute EventListener onbeforeunload;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onblur;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onerror;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onfocus;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onhashchange;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onload;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onmessage;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onoffline;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener ononline;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onpopstate;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onresize;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onstorage;
-    [NotEnumerable, JSWindowEventListener] attribute EventListener onunload;
-
-    [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] attribute EventListener onorientationchange;
</del><ins>+    [NotEnumerable, WindowEventHandler] attribute EventHandler onbeforeunload;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onblur;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onerror;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onfocus;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onfocusin;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onfocusout;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onhashchange;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onload;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onmessage;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onoffline;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler ononline;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onorientationchange;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onpagehide;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onpageshow;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onpopstate;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onresize;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onscroll;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onstorage;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onunload;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitwillrevealbottom;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitwillrevealleft;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitwillrevealright;
+    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitwillrevealtop;
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLImageElement.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLImageElement.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLImageElement.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -162,9 +162,7 @@
</span><span class="cx"> 
</span><span class="cx">         if (inDocument() &amp;&amp; !m_lowercasedUsemap.isNull())
</span><span class="cx">             document().addImageElementByLowercasedUsemap(*m_lowercasedUsemap.impl(), *this);
</span><del>-    } else if (name == onbeforeloadAttr)
-        setAttributeEventListener(eventNames().beforeloadEvent, name, value);
-    else if (name == compositeAttr) {
</del><ins>+    } else if (name == compositeAttr) {
</ins><span class="cx">         // FIXME: images don't support blend modes in their compositing attribute.
</span><span class="cx">         BlendMode blendOp = BlendModeNormal;
</span><span class="cx">         if (!parseCompositeAndBlendOperator(value, m_compositeOperator, blendOp))
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLLinkElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLLinkElement.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLLinkElement.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLLinkElement.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -160,8 +160,6 @@
</span><span class="cx">         process();
</span><span class="cx">     } else if (name == disabledAttr)
</span><span class="cx">         setDisabledState(!value.isNull());
</span><del>-    else if (name == onbeforeloadAttr)
-        setAttributeEventListener(eventNames().beforeloadEvent, name, value);
</del><span class="cx">     else {
</span><span class="cx">         if (name == titleAttr &amp;&amp; m_sheet)
</span><span class="cx">             m_sheet-&gt;setTitle(value);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMarqueeElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMarqueeElement.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMarqueeElement.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLMarqueeElement.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Implement the following event handler attributes
</span><span class="cx">     // https://bugs.webkit.org/show_bug.cgi?id=49788
</span><del>-    // attribute EventListener onbounce;
-    // attribute EventListener onfinish;
-    // attribute EventListener onstart;
</del><ins>+    // attribute EventHandler onbounce;
+    // attribute EventHandler onfinish;
+    // attribute EventHandler onstart;
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLObjectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLObjectElement.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLObjectElement.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLObjectElement.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -128,9 +128,7 @@
</span><span class="cx">     } else if (name == classidAttr) {
</span><span class="cx">         invalidateRenderer = true;
</span><span class="cx">         setNeedsWidgetUpdate(true);
</span><del>-    } else if (name == onbeforeloadAttr)
-        setAttributeEventListener(eventNames().beforeloadEvent, name, value);
-    else
</del><ins>+    } else
</ins><span class="cx">         HTMLPlugInImageElement::parseAttribute(name, value);
</span><span class="cx"> 
</span><span class="cx">     if (!invalidateRenderer || !inDocument() || !renderer())
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLScriptElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLScriptElement.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLScriptElement.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/HTMLScriptElement.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -64,8 +64,6 @@
</span><span class="cx">         handleSourceAttribute(value);
</span><span class="cx">     else if (name == asyncAttr)
</span><span class="cx">         handleAsyncAttribute();
</span><del>-    else if (name == onbeforeloadAttr)
-        setAttributeEventListener(eventNames().beforeloadEvent, name, value);
</del><span class="cx">     else
</span><span class="cx">         HTMLElement::parseAttribute(name, value);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlMediaControlleridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/MediaController.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/MediaController.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/MediaController.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -50,11 +50,7 @@
</span><span class="cx">     attribute boolean muted;
</span><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackAudioTrackListidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/AudioTrackList.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/AudioTrackList.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/track/AudioTrackList.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -34,16 +34,12 @@
</span><span class="cx">     getter AudioTrack item(unsigned long index);
</span><span class="cx">     AudioTrack getTrackById(DOMString id);
</span><span class="cx"> 
</span><del>-    attribute EventListener onchange;
-    attribute EventListener onaddtrack;
-    attribute EventListener onremovetrack;
</del><ins>+    attribute EventHandler onchange;
+    attribute EventHandler onaddtrack;
+    attribute EventHandler onremovetrack;
</ins><span class="cx"> 
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><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 (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrack.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/track/TextTrack.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -47,20 +47,16 @@
</span><span class="cx">     [RaisesException] void addCue(TextTrackCue cue);
</span><span class="cx">     [RaisesException] void removeCue(TextTrackCue cue);
</span><span class="cx"> 
</span><del>-             attribute EventListener oncuechange;
</del><ins>+    attribute EventHandler oncuechange;
</ins><span class="cx"> 
</span><del>-#if defined(ENABLE_WEBVTT_REGIONS) &amp;&amp; ENABLE_WEBVTT_REGIONS
-    readonly attribute VTTRegionList regions;
-    void addRegion(VTTRegion region);
-    [RaisesException] void removeRegion(VTTRegion region);
</del><ins>+#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT // Work around shortcomings in the gobject binding generator handling of conditional features by turning these off for gobject.
+    [Conditional=WEBVTT_REGIONS] readonly attribute VTTRegionList regions;
+    [Conditional=WEBVTT_REGIONS] void addRegion(VTTRegion region);
+    [Conditional=WEBVTT_REGIONS, RaisesException] void removeRegion(VTTRegion region);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackCueidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrackCue.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackCue.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/track/TextTrackCue.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -41,16 +41,12 @@
</span><span class="cx">     [SetterRaisesException] attribute unrestricted double endTime;
</span><span class="cx">     attribute boolean pauseOnExit;
</span><span class="cx"> 
</span><del>-    attribute EventListener onenter;
-    attribute EventListener onexit;
</del><ins>+    attribute EventHandler onenter;
+    attribute EventHandler onexit;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><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 (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackList.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/track/TextTrackList.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -33,16 +33,12 @@
</span><span class="cx">     getter TextTrack item(unsigned long index);
</span><span class="cx">     TextTrack getTrackById(DOMString id);
</span><span class="cx"> 
</span><del>-    attribute EventListener onaddtrack;
-    attribute EventListener onchange;
-    attribute EventListener onremovetrack;
</del><ins>+    attribute EventHandler onaddtrack;
+    attribute EventHandler onchange;
+    attribute EventHandler onremovetrack;
</ins><span class="cx"> 
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><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 (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VideoTrackList.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/html/track/VideoTrackList.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -35,16 +35,12 @@
</span><span class="cx">     VideoTrack getTrackById(DOMString id);
</span><span class="cx">     readonly attribute long selectedIndex;
</span><span class="cx"> 
</span><del>-    attribute EventListener onchange;
-    attribute EventListener onaddtrack;
-    attribute EventListener onremovetrack;
</del><ins>+    attribute EventHandler onchange;
+    attribute EventHandler onaddtrack;
+    attribute EventHandler onremovetrack;
</ins><span class="cx"> 
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderappcacheDOMApplicationCacheidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/loader/appcache/DOMApplicationCache.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -42,23 +42,18 @@
</span><span class="cx">     [RaisesException] void swapCache();
</span><span class="cx">     void abort();
</span><span class="cx"> 
</span><del>-    // events
-    attribute EventListener onchecking;
-    attribute EventListener onerror;
-    attribute EventListener onnoupdate;
-    attribute EventListener ondownloading;
-    attribute EventListener onprogress;
-    attribute EventListener onupdateready;
-    attribute EventListener oncached;
-    attribute EventListener onobsolete;
</del><ins>+    attribute EventHandler onchecking;
+    attribute EventHandler onerror;
+    attribute EventHandler onnoupdate;
+    attribute EventHandler ondownloading;
+    attribute EventHandler onprogress;
+    attribute EventHandler onupdateready;
+    attribute EventHandler oncached;
+    attribute EventHandler onobsolete;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/page/DOMWindow.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -186,102 +186,96 @@
</span><span class="cx"> 
</span><span class="cx">     [Replaceable] readonly attribute DOMWindowCSS CSS;
</span><span class="cx"> 
</span><del>-    attribute EventListener onabort;
-    attribute EventListener onanimationend;
-    attribute EventListener onanimationiteration;
-    attribute EventListener onanimationstart;
-    attribute EventListener onbeforeunload;
-    attribute EventListener onblur;
-    attribute EventListener oncanplay;
-    attribute EventListener oncanplaythrough;
-    attribute EventListener onchange;
-    attribute EventListener onclick;
-    attribute EventListener oncontextmenu;
-    attribute EventListener ondblclick;
-    attribute EventListener ondrag;
-    attribute EventListener ondragend;
-    attribute EventListener ondragenter;
-    attribute EventListener ondragleave;
-    attribute EventListener ondragover;
-    attribute EventListener ondragstart;
-    attribute EventListener ondrop;
-    attribute EventListener ondurationchange;
-    attribute EventListener onemptied;
-    attribute EventListener onended;
-    attribute EventListener onerror;
-    attribute EventListener onfocus;
-    attribute EventListener onhashchange;
-    attribute EventListener oninput;
-    attribute EventListener oninvalid;
-    attribute EventListener onkeydown;
-    attribute EventListener onkeypress;
-    attribute EventListener onkeyup;
-    attribute EventListener onload;
-    attribute EventListener onloadeddata;
-    attribute EventListener onloadedmetadata;
-    attribute EventListener onloadstart;
-    attribute EventListener onmessage;
-    attribute EventListener onmousedown;
-    attribute EventListener onmouseenter;
-    attribute EventListener onmouseleave;
-    attribute EventListener onmousemove;
-    attribute EventListener onmouseout;
-    attribute EventListener onmouseover;
-    attribute EventListener onmouseup;
-    attribute EventListener onmousewheel;
-    attribute EventListener onoffline;
-    attribute EventListener ononline;
-    attribute EventListener onpagehide;
-    attribute EventListener onpageshow;
-    attribute EventListener onpause;
-    attribute EventListener onplay;
-    attribute EventListener onplaying;
-    attribute EventListener onpopstate;
-    attribute EventListener onprogress;
-    attribute EventListener onratechange;
-    attribute EventListener onreset;
-    attribute EventListener onresize;
-    attribute EventListener onscroll;
-    attribute EventListener onsearch;
-    attribute EventListener onseeked;
-    attribute EventListener onseeking;
-    attribute EventListener onselect;
-    attribute EventListener onstalled;
-    attribute EventListener onstorage;
-    attribute EventListener onsubmit;
-    attribute EventListener onsuspend;
-    attribute EventListener ontimeupdate;
-    attribute EventListener ontransitionend;
-    attribute EventListener onunload;
-    attribute EventListener onvolumechange;
-    attribute EventListener onwaiting;
-    attribute EventListener onwebkitanimationend;
-    attribute EventListener onwebkitanimationiteration;
-    attribute EventListener onwebkitanimationstart;
-    attribute EventListener onwebkittransitionend;
-    attribute EventListener onwheel;
</del><ins>+    [NotEnumerable] attribute EventHandler onabort;
+    [NotEnumerable] attribute EventHandler onanimationend;
+    [NotEnumerable] attribute EventHandler onanimationiteration;
+    [NotEnumerable] attribute EventHandler onanimationstart;
+    [NotEnumerable] attribute EventHandler onbeforeunload;
+    [NotEnumerable] attribute EventHandler onblur;
+    [NotEnumerable] attribute EventHandler oncanplay;
+    [NotEnumerable] attribute EventHandler oncanplaythrough;
+    [NotEnumerable] attribute EventHandler onchange;
+    [NotEnumerable] attribute EventHandler onclick;
+    [NotEnumerable] attribute EventHandler oncontextmenu;
+    [NotEnumerable] attribute EventHandler ondblclick;
+    [NotEnumerable] attribute EventHandler ondevicemotion;
+    [NotEnumerable] attribute EventHandler ondeviceorientation;
+    [NotEnumerable] attribute EventHandler ondrag;
+    [NotEnumerable] attribute EventHandler ondragend;
+    [NotEnumerable] attribute EventHandler ondragenter;
+    [NotEnumerable] attribute EventHandler ondragleave;
+    [NotEnumerable] attribute EventHandler ondragover;
+    [NotEnumerable] attribute EventHandler ondragstart;
+    [NotEnumerable] attribute EventHandler ondrop;
+    [NotEnumerable] attribute EventHandler ondurationchange;
+    [NotEnumerable] attribute EventHandler onemptied;
+    [NotEnumerable] attribute EventHandler onended;
+    [NotEnumerable] attribute EventHandler onerror;
+    [NotEnumerable] attribute EventHandler onfocus;
+    [NotEnumerable] attribute EventHandler ongesturechange;
+    [NotEnumerable] attribute EventHandler ongestureend;
+    [NotEnumerable] attribute EventHandler ongesturestart;
+    [NotEnumerable] attribute EventHandler onhashchange;
+    [NotEnumerable] attribute EventHandler oninput;
+    [NotEnumerable] attribute EventHandler oninvalid;
+    [NotEnumerable] attribute EventHandler onkeydown;
+    [NotEnumerable] attribute EventHandler onkeypress;
+    [NotEnumerable] attribute EventHandler onkeyup;
+    [NotEnumerable] attribute EventHandler onload;
+    [NotEnumerable] attribute EventHandler onloadeddata;
+    [NotEnumerable] attribute EventHandler onloadedmetadata;
+    [NotEnumerable] attribute EventHandler onloadstart;
+    [NotEnumerable] attribute EventHandler onmessage;
+    [NotEnumerable] attribute EventHandler onmousedown;
+    [NotEnumerable] attribute EventHandler onmouseenter;
+    [NotEnumerable] attribute EventHandler onmouseleave;
+    [NotEnumerable] attribute EventHandler onmousemove;
+    [NotEnumerable] attribute EventHandler onmouseout;
+    [NotEnumerable] attribute EventHandler onmouseover;
+    [NotEnumerable] attribute EventHandler onmouseup;
+    [NotEnumerable] attribute EventHandler onmousewheel;
+    [NotEnumerable] attribute EventHandler onoffline;
+    [NotEnumerable] attribute EventHandler ononline;
+    [NotEnumerable] attribute EventHandler onorientationchange;
+    [NotEnumerable] attribute EventHandler onpagehide;
+    [NotEnumerable] attribute EventHandler onpageshow;
+    [NotEnumerable] attribute EventHandler onpause;
+    [NotEnumerable] attribute EventHandler onplay;
+    [NotEnumerable] attribute EventHandler onplaying;
+    [NotEnumerable] attribute EventHandler onpopstate;
+    [NotEnumerable] attribute EventHandler onprogress;
+    [NotEnumerable] attribute EventHandler onratechange;
+    [NotEnumerable] attribute EventHandler onreset;
+    [NotEnumerable] attribute EventHandler onresize;
+    [NotEnumerable] attribute EventHandler onscroll;
+    [NotEnumerable] attribute EventHandler onsearch;
+    [NotEnumerable] attribute EventHandler onseeked;
+    [NotEnumerable] attribute EventHandler onseeking;
+    [NotEnumerable] attribute EventHandler onselect;
+    [NotEnumerable] attribute EventHandler onstalled;
+    [NotEnumerable] attribute EventHandler onstorage;
+    [NotEnumerable] attribute EventHandler onsubmit;
+    [NotEnumerable] attribute EventHandler onsuspend;
+    [NotEnumerable] attribute EventHandler ontimeupdate;
+    [NotEnumerable] attribute EventHandler ontouchcancel;
+    [NotEnumerable] attribute EventHandler ontouchend;
+    [NotEnumerable] attribute EventHandler ontouchmove;
+    [NotEnumerable] attribute EventHandler ontouchstart;
+    [NotEnumerable] attribute EventHandler ontransitionend;
+    [NotEnumerable] attribute EventHandler onunload;
+    [NotEnumerable] attribute EventHandler onvolumechange;
+    [NotEnumerable] attribute EventHandler onwaiting;
+    [NotEnumerable] attribute EventHandler onwebkitanimationend;
+    [NotEnumerable] attribute EventHandler onwebkitanimationiteration;
+    [NotEnumerable] attribute EventHandler onwebkitanimationstart;
+    [NotEnumerable] attribute EventHandler onwebkitdeviceproximity;
+    [NotEnumerable] attribute EventHandler onwebkittransitionend;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealbottom;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealleft;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealright;
+    [NotEnumerable] attribute EventHandler onwebkitwillrevealtop;
+    [NotEnumerable] attribute EventHandler onwheel;
</ins><span class="cx"> 
</span><del>-    [Conditional=DEVICE_ORIENTATION] attribute EventListener ondevicemotion;
-    [Conditional=DEVICE_ORIENTATION] attribute EventListener ondeviceorientation;
-
-    [Conditional=IOS_GESTURE_EVENTS] attribute EventListener ongesturestart;
-    [Conditional=IOS_GESTURE_EVENTS] attribute EventListener ongesturechange;
-    [Conditional=IOS_GESTURE_EVENTS] attribute EventListener ongestureend;
-
-    [Conditional=ORIENTATION_EVENTS] attribute EventListener onorientationchange;
-
-    [Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
-    [Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
-    [Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
-    [Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
-
-    [Conditional=PROXIMITY_EVENTS] attribute EventListener onwebkitdeviceproximity;
-
-    [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
-    [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
-    [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
-    [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
-
</del><span class="cx">     // EventTarget interface
</span><span class="cx">     [Custom] void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</span><span class="cx">     [Custom] void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventSourceidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventSource.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventSource.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/page/EventSource.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -49,18 +49,14 @@
</span><span class="cx">     readonly attribute unsigned short readyState;
</span><span class="cx"> 
</span><span class="cx">     // networking
</span><del>-    attribute EventListener onopen;
-    attribute EventListener onmessage;
-    attribute EventListener onerror;
</del><ins>+    attribute EventHandler onopen;
+    attribute EventHandler onmessage;
+    attribute EventHandler onerror;
</ins><span class="cx">     void close();
</span><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> 
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorepagePerformanceidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Performance.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Performance.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/page/Performance.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx">     void webkitClearResourceTimings();
</span><span class="cx">     void webkitSetResourceTimingBufferSize(unsigned long maxSize);
</span><span class="cx"> 
</span><del>-    attribute EventListener onwebkitresourcetimingbufferfull;
</del><ins>+    attribute EventHandler onwebkitresourcetimingbufferfull;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // See http://www.w3.org/TR/2012/CR-user-timing-20120726/
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/svg/SVGElement.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -510,9 +510,12 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (name == HTMLNames::classAttr)
</del><ins>+    if (name == HTMLNames::classAttr) {
</ins><span class="cx">         setClassNameBaseValue(value);
</span><del>-    else if (name == HTMLNames::tabindexAttr) {
</del><ins>+        return;
+    }
+
+    if (name == HTMLNames::tabindexAttr) {
</ins><span class="cx">         int tabindex = 0;
</span><span class="cx">         if (value.isEmpty())
</span><span class="cx">             clearTabIndexExplicitlyIfNeeded();
</span><span class="lines">@@ -520,21 +523,16 @@
</span><span class="cx">             // Clamp tabindex to the range of 'short' to match Firefox's behavior.
</span><span class="cx">             setTabIndexExplicitly(std::max(static_cast&lt;int&gt;(std::numeric_limits&lt;short&gt;::min()), std::min(tabindex, static_cast&lt;int&gt;(std::numeric_limits&lt;short&gt;::max()))));
</span><span class="cx">         }
</span><del>-    } else if (SVGLangSpace::parseAttribute(name, value))
</del><span class="cx">         return;
</span><del>-    else {
-        // FIXME: Can we do this even faster by checking the local name &quot;on&quot; prefix before we do anything with the map?
-        // See HTMLElement::parseAttribute().
-        static NeverDestroyed&lt;HashMap&lt;AtomicStringImpl*, AtomicString&gt;&gt; eventNamesGlobal;
-        auto&amp; eventNames = eventNamesGlobal.get();
-        if (eventNames.isEmpty())
-            HTMLElement::populateEventNameForAttributeLocalNameMap(eventNames);
-        const AtomicString&amp; eventName = eventNames.get(name.localName().impl());
-        if (!eventName.isNull())
-            setAttributeEventListener(eventName, name, value);
-        else
-            StyledElement::parseAttribute(name, value);
</del><span class="cx">     }
</span><ins>+
+    auto&amp; eventName = HTMLElement::eventNameForEventHandlerAttribute(name);
+    if (!eventName.isNull()) {
+        setAttributeEventListener(eventName, name, value);
+        return;
+    }
+
+    SVGLangSpace::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Vector&lt;AnimatedPropertyType&gt; SVGElement::animatedPropertyTypesForAttribute(const QualifiedName&amp; attributeName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGSVGElement.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGSVGElement.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/svg/SVGSVGElement.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -199,10 +199,8 @@
</span><span class="cx"> void SVGSVGElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (!nearestViewportElement()) {
</span><del>-        // Since we only handle events if we're the outermost &lt;svg&gt; element, set listeners only
-        // if we are. Set the listeners directly on the window attribute.
-        // FIXME: This strategy is wrong. It won't work if we an existing &lt;svg&gt; element becomes
-        // the outermost or if an existing &lt;svg&gt; element later becomes no longer outmost.
</del><ins>+        // For these events, the outermost &lt;svg&gt; element works like a &lt;body&gt; element does,
+        // setting certain event handlers directly on the window object.
</ins><span class="cx">         if (name == HTMLNames::onunloadAttr) {
</span><span class="cx">             document().setWindowAttributeEventListener(eventNames().unloadEvent, name, value);
</span><span class="cx">             return;
</span><span class="lines">@@ -221,13 +219,21 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    // For these events, any &lt;svg&gt; element works like a &lt;body&gt; element does,
+    // setting certain event handlers directly on the window object.
+    // FIXME: Why different from the events above that work only on the outermost &lt;svg&gt; element?
+    if (name == HTMLNames::onabortAttr) {
+        document().setWindowAttributeEventListener(eventNames().abortEvent, name, value);
+        return;
+    }
+    if (name == HTMLNames::onerrorAttr) {
+        document().setWindowAttributeEventListener(eventNames().errorEvent, name, value);
+        return;
+    }
+
</ins><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (name == HTMLNames::onabortAttr)
-        document().setWindowAttributeEventListener(eventNames().abortEvent, name, value);
-    else if (name == HTMLNames::onerrorAttr)
-        document().setWindowAttributeEventListener(eventNames().errorEvent, name, value);
-    else if (name == SVGNames::xAttr)
</del><ins>+    if (name == SVGNames::xAttr)
</ins><span class="cx">         setXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::yAttr)
</span><span class="cx">         setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGScriptElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGScriptElement.cpp (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGScriptElement.cpp        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/svg/SVGScriptElement.cpp        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -55,62 +55,24 @@
</span><span class="cx">     return adoptRef(*new SVGScriptElement(tagName, document, insertedByParser, false));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGScriptElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        SVGURIReference::addSupportedAttributes(supportedAttributes);
-        SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes);
-        supportedAttributes.get().add(SVGNames::typeAttr);
-        supportedAttributes.get().add(HTMLNames::onerrorAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGScriptElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGElement::parseAttribute(name, value);
-        return;
-    }
-
-    if (name == SVGNames::typeAttr)
-        return;
-
-    if (name == HTMLNames::onerrorAttr) {
-        setAttributeEventListener(eventNames().errorEvent, name, value);
-        return;
-    }
-
-    if (SVGURIReference::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGScriptElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGElement::svgAttributeChanged(attrName);
-        return;
-    }
-
</del><span class="cx">     InstanceInvalidationGuard guard(*this);
</span><span class="cx"> 
</span><del>-    if (attrName == SVGNames::typeAttr || attrName == HTMLNames::onerrorAttr)
-        return;
-
</del><span class="cx">     if (SVGURIReference::isKnownAttribute(attrName)) {
</span><span class="cx">         handleSourceAttribute(href());
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGExternalResourcesRequired::handleAttributeChange(this, attrName))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGExternalResourcesRequired::handleAttributeChange(this, attrName);
+    SVGElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Node::InsertionNotificationRequest SVGScriptElement::insertedInto(ContainerNode&amp; rootParent)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGScriptElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGScriptElement.h (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGScriptElement.h        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/svg/SVGScriptElement.h        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGScriptElement(const QualifiedName&amp;, Document&amp;, bool wasInsertedByParser, bool alreadyStarted);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual InsertionNotificationRequest insertedInto(ContainerNode&amp;) override;
</span><span class="cx">     virtual void childrenChanged(const ChildChange&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersAbstractWorkeridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/AbstractWorker.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/AbstractWorker.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/workers/AbstractWorker.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -32,6 +32,6 @@
</span><span class="cx"> [
</span><span class="cx">     NoInterfaceObject,
</span><span class="cx"> ] interface AbstractWorker {
</span><del>-    attribute EventListener onerror;
</del><ins>+    attribute EventHandler onerror;
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersDedicatedWorkerGlobalScopeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx">     [RaisesException] void postMessage(DOMString message, optional MessagePort messagePort);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-             attribute EventListener onmessage;
-
</del><ins>+    attribute EventHandler onmessage;
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkeridl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/Worker.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/Worker.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/workers/Worker.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx">     ActiveDOMObject,
</span><span class="cx"> ] interface Worker : EventTarget {
</span><span class="cx"> 
</span><del>-    attribute EventListener onmessage;
</del><ins>+    attribute EventHandler onmessage;
</ins><span class="cx"> 
</span><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><span class="cx">     [Custom, RaisesException] void postMessage(SerializedScriptValue message, optional Array messagePorts);
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerGlobalScopeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerGlobalScope.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerGlobalScope.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/workers/WorkerGlobalScope.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -39,9 +39,9 @@
</span><span class="cx">     [Replaceable] readonly attribute WorkerLocation location;
</span><span class="cx">     void close();
</span><span class="cx"> 
</span><del>-    attribute EventListener onerror;
-    attribute EventListener onoffline;
-    attribute EventListener ononline;
</del><ins>+    attribute EventHandler onerror;
+    attribute EventHandler onoffline;
+    attribute EventHandler ononline;
</ins><span class="cx"> 
</span><span class="cx">     // WorkerUtils
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLHttpRequestidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLHttpRequest.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLHttpRequest.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -44,17 +44,15 @@
</span><span class="cx">     EventTarget,
</span><span class="cx"> ] interface XMLHttpRequest {
</span><span class="cx">     // From XMLHttpRequestEventTarget
</span><del>-    // event handler attributes
-    attribute EventListener onabort;
-    attribute EventListener onerror;
-    attribute EventListener onload;
-    attribute EventListener onloadend;
-    attribute EventListener onloadstart;
-    attribute EventListener onprogress;
-    [Conditional=XHR_TIMEOUT] attribute EventListener ontimeout;
</del><ins>+    attribute EventHandler onabort;
+    attribute EventHandler onerror;
+    attribute EventHandler onload;
+    attribute EventHandler onloadend;
+    attribute EventHandler onloadstart;
+    attribute EventHandler onprogress;
+    [Conditional=XHR_TIMEOUT] attribute EventHandler ontimeout;
</ins><span class="cx"> 
</span><del>-    // event handler attributes
-    attribute EventListener onreadystatechange;
</del><ins>+    attribute EventHandler onreadystatechange;
</ins><span class="cx"> 
</span><span class="cx">     // state
</span><span class="cx">     const unsigned short UNSENT = 0;
</span><span class="lines">@@ -95,11 +93,7 @@
</span><span class="cx">     [RaisesException] void overrideMimeType(DOMString override);
</span><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLHttpRequestUploadidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLHttpRequestUpload.idl (181506 => 181507)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLHttpRequestUpload.idl        2015-03-15 15:05:23 UTC (rev 181506)
+++ trunk/Source/WebCore/xml/XMLHttpRequestUpload.idl        2015-03-15 17:00:33 UTC (rev 181507)
</span><span class="lines">@@ -31,21 +31,16 @@
</span><span class="cx">     EventTarget,
</span><span class="cx"> ] interface XMLHttpRequestUpload {
</span><span class="cx">     // From XMLHttpRequestEventTarget
</span><del>-    // event handler attributes
-    attribute EventListener onabort;
-    attribute EventListener onerror;
-    attribute EventListener onload;
-    attribute EventListener onloadend;
-    attribute EventListener onloadstart;
-    attribute EventListener onprogress;
</del><ins>+    attribute EventHandler onabort;
+    attribute EventHandler onerror;
+    attribute EventHandler onload;
+    attribute EventHandler onloadend;
+    attribute EventHandler onloadstart;
+    attribute EventHandler onprogress;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget interface
</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><ins>+    void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
</ins><span class="cx"> };
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>