<!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>[174178] trunk/Source</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/174178">174178</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-10-01 15:29:14 -0700 (Wed, 01 Oct 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Use is&lt;&gt;() / downcast&lt;&gt;() for Event classes
https://bugs.webkit.org/show_bug.cgi?id=137284

Reviewed by Andreas Kling.

Use is&lt;&gt;() / downcast&lt;&gt;() for Event classes.

Source/WebCore:

No new tests, no behavior change.

* bindings/js/JSErrorHandler.cpp:
(WebCore::JSErrorHandler::handleEvent):
* bindings/js/JSEventListener.cpp:
(WebCore::JSEventListener::handleEvent):
* dom/BeforeTextInsertedEvent.h:
* dom/BeforeUnloadEvent.h:
* dom/ErrorEvent.h:
* dom/Event.h:
* dom/EventContext.cpp:
(WebCore::MouseOrFocusEventContext::handleLocalEvents):
* dom/FocusEvent.h:
* dom/KeyboardEvent.cpp:
(WebCore::findKeyboardEvent):
* dom/KeyboardEvent.h:
* dom/MouseEvent.cpp:
(WebCore::SimulatedMouseEvent::SimulatedMouseEvent):
* dom/MouseEvent.h:
* dom/Node.cpp:
(WebCore::Node::defaultEventHandler):
* dom/TextEvent.h:
* dom/UIEvent.h:
* dom/WheelEvent.h:
* html/HTMLAnchorElement.cpp:
(WebCore::appendServerMapMousePosition):
(WebCore::HTMLAnchorElement::defaultEventHandler):
(WebCore::HTMLAnchorElement::eventType):
(WebCore::isEnterKeyKeydownEvent):
(WebCore::isLinkClick):
* html/HTMLButtonElement.cpp:
(WebCore::HTMLButtonElement::defaultEventHandler):
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::submitImplicitly):
* html/HTMLFormElement.h:
* html/HTMLFrameSetElement.cpp:
(WebCore::HTMLFrameSetElement::defaultEventHandler):
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::willDispatchEvent):
(WebCore::HTMLInputElement::defaultEventHandler):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::defaultEventHandler):
* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::menuListDefaultEventHandler):
(WebCore::HTMLSelectElement::listBoxDefaultEventHandler):
(WebCore::HTMLSelectElement::defaultEventHandler):
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::defaultEventHandler):
* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::defaultEventHandler):
* html/ImageDocument.cpp:
(WebCore::ImageEventListener::handleEvent):
* html/ImageInputType.cpp:
(WebCore::ImageInputType::handleDOMActivateEvent):
* html/InputType.cpp:
(WebCore::InputType::shouldSubmitImplicitly):
* html/InputType.h:
* html/MediaDocument.cpp:
(WebCore::MediaDocument::defaultEventHandler):
* html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::shouldSubmitImplicitly):
* html/TextFieldInputType.h:
* html/shadow/MediaControlElementTypes.cpp:
(WebCore::MediaControlVolumeSliderElement::defaultEventHandler):
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlPanelElement::defaultEventHandler):
(WebCore::MediaControlVolumeSliderContainerElement::defaultEventHandler):
(WebCore::MediaControlTimelineElement::defaultEventHandler):
* html/shadow/MediaControls.cpp:
(WebCore::MediaControls::containsRelatedTarget):
* html/shadow/MediaControlsApple.cpp:
(WebCore::MediaControlsAppleEventListener::handleEvent):
* html/shadow/SliderThumbElement.cpp:
(WebCore::SliderThumbElement::defaultEventHandler):
* html/shadow/SpinButtonElement.cpp:
(WebCore::SpinButtonElement::defaultEventHandler):
(WebCore::SpinButtonElement::forwardEvent):
* html/shadow/TextControlInnerElements.cpp:
(WebCore::SearchFieldResultsButtonElement::defaultEventHandler):
(WebCore::SearchFieldCancelButtonElement::defaultEventHandler):
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::dispatchEventAsContextMenuEvent):
* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::maybeCreateContextMenu):
* page/EventHandler.cpp:
(WebCore::EventHandler::handleTextInputEvent):
* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::isInUnavailablePluginIndicator):
(WebCore::RenderEmbeddedObject::handleUnavailablePluginIndicatorEvent):
* rendering/RenderEmbeddedObject.h:
* rendering/RenderSnapshottedPlugIn.cpp:
(WebCore::RenderSnapshottedPlugIn::handleEvent):

Source/WebKit2:

* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::handleEvent):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSErrorHandlercpp">trunk/Source/WebCore/bindings/js/JSErrorHandler.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventListenercpp">trunk/Source/WebCore/bindings/js/JSEventListener.cpp</a></li>
<li><a href="#trunkSourceWebCoredomBeforeTextInsertedEventh">trunk/Source/WebCore/dom/BeforeTextInsertedEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomBeforeUnloadEventh">trunk/Source/WebCore/dom/BeforeUnloadEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomErrorEventh">trunk/Source/WebCore/dom/ErrorEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomEventh">trunk/Source/WebCore/dom/Event.h</a></li>
<li><a href="#trunkSourceWebCoredomEventContextcpp">trunk/Source/WebCore/dom/EventContext.cpp</a></li>
<li><a href="#trunkSourceWebCoredomEventDispatchercpp">trunk/Source/WebCore/dom/EventDispatcher.cpp</a></li>
<li><a href="#trunkSourceWebCoredomFocusEventh">trunk/Source/WebCore/dom/FocusEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomKeyboardEventcpp">trunk/Source/WebCore/dom/KeyboardEvent.cpp</a></li>
<li><a href="#trunkSourceWebCoredomKeyboardEventh">trunk/Source/WebCore/dom/KeyboardEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomMouseEventcpp">trunk/Source/WebCore/dom/MouseEvent.cpp</a></li>
<li><a href="#trunkSourceWebCoredomMouseEventh">trunk/Source/WebCore/dom/MouseEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomNodecpp">trunk/Source/WebCore/dom/Node.cpp</a></li>
<li><a href="#trunkSourceWebCoredomTextEventh">trunk/Source/WebCore/dom/TextEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomTouchEventh">trunk/Source/WebCore/dom/TouchEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomUIEventh">trunk/Source/WebCore/dom/UIEvent.h</a></li>
<li><a href="#trunkSourceWebCoredomWheelEventh">trunk/Source/WebCore/dom/WheelEvent.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAnchorElementcpp">trunk/Source/WebCore/html/HTMLAnchorElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLButtonElementcpp">trunk/Source/WebCore/html/HTMLButtonElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameSetElementcpp">trunk/Source/WebCore/html/HTMLFrameSetElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementcpp">trunk/Source/WebCore/html/HTMLInputElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLPlugInImageElementcpp">trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSelectElementcpp">trunk/Source/WebCore/html/HTMLSelectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSelectElementh">trunk/Source/WebCore/html/HTMLSelectElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSummaryElementcpp">trunk/Source/WebCore/html/HTMLSummaryElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextAreaElementcpp">trunk/Source/WebCore/html/HTMLTextAreaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlImageDocumentcpp">trunk/Source/WebCore/html/ImageDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlImageInputTypecpp">trunk/Source/WebCore/html/ImageInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlInputTypecpp">trunk/Source/WebCore/html/InputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlMediaDocumentcpp">trunk/Source/WebCore/html/MediaDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlTextFieldInputTypecpp">trunk/Source/WebCore/html/TextFieldInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlElementTypescpp">trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlElementscpp">trunk/Source/WebCore/html/shadow/MediaControlElements.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlscpp">trunk/Source/WebCore/html/shadow/MediaControls.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlsApplecpp">trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowSliderThumbElementcpp">trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowSpinButtonElementcpp">trunk/Source/WebCore/html/shadow/SpinButtonElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowTextControlInnerElementscpp">trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorFrontendHostcpp">trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp</a></li>
<li><a href="#trunkSourceWebCorepageContextMenuControllercpp">trunk/Source/WebCore/page/ContextMenuController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageEventHandlercpp">trunk/Source/WebCore/page/EventHandler.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderEmbeddedObjectcpp">trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderEmbeddedObjecth">trunk/Source/WebCore/rendering/RenderEmbeddedObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderSnapshottedPlugIncpp">trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPluginViewcpp">trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/ChangeLog        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -1,3 +1,105 @@
</span><ins>+2014-10-01  Christophe Dumez  &lt;cdumez@apple.com&gt;
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Event classes
+        https://bugs.webkit.org/show_bug.cgi?id=137284
+
+        Reviewed by Andreas Kling.
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Event classes.
+
+        No new tests, no behavior change.
+
+        * bindings/js/JSErrorHandler.cpp:
+        (WebCore::JSErrorHandler::handleEvent):
+        * bindings/js/JSEventListener.cpp:
+        (WebCore::JSEventListener::handleEvent):
+        * dom/BeforeTextInsertedEvent.h:
+        * dom/BeforeUnloadEvent.h:
+        * dom/ErrorEvent.h:
+        * dom/Event.h:
+        * dom/EventContext.cpp:
+        (WebCore::MouseOrFocusEventContext::handleLocalEvents):
+        * dom/FocusEvent.h:
+        * dom/KeyboardEvent.cpp:
+        (WebCore::findKeyboardEvent):
+        * dom/KeyboardEvent.h:
+        * dom/MouseEvent.cpp:
+        (WebCore::SimulatedMouseEvent::SimulatedMouseEvent):
+        * dom/MouseEvent.h:
+        * dom/Node.cpp:
+        (WebCore::Node::defaultEventHandler):
+        * dom/TextEvent.h:
+        * dom/UIEvent.h:
+        * dom/WheelEvent.h:
+        * html/HTMLAnchorElement.cpp:
+        (WebCore::appendServerMapMousePosition):
+        (WebCore::HTMLAnchorElement::defaultEventHandler):
+        (WebCore::HTMLAnchorElement::eventType):
+        (WebCore::isEnterKeyKeydownEvent):
+        (WebCore::isLinkClick):
+        * html/HTMLButtonElement.cpp:
+        (WebCore::HTMLButtonElement::defaultEventHandler):
+        * html/HTMLFormElement.cpp:
+        (WebCore::HTMLFormElement::submitImplicitly):
+        * html/HTMLFormElement.h:
+        * html/HTMLFrameSetElement.cpp:
+        (WebCore::HTMLFrameSetElement::defaultEventHandler):
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::willDispatchEvent):
+        (WebCore::HTMLInputElement::defaultEventHandler):
+        * html/HTMLPlugInImageElement.cpp:
+        (WebCore::HTMLPlugInImageElement::defaultEventHandler):
+        * html/HTMLSelectElement.cpp:
+        (WebCore::HTMLSelectElement::menuListDefaultEventHandler):
+        (WebCore::HTMLSelectElement::listBoxDefaultEventHandler):
+        (WebCore::HTMLSelectElement::defaultEventHandler):
+        * html/HTMLSummaryElement.cpp:
+        (WebCore::HTMLSummaryElement::defaultEventHandler):
+        * html/HTMLTextAreaElement.cpp:
+        (WebCore::HTMLTextAreaElement::defaultEventHandler):
+        * html/ImageDocument.cpp:
+        (WebCore::ImageEventListener::handleEvent):
+        * html/ImageInputType.cpp:
+        (WebCore::ImageInputType::handleDOMActivateEvent):
+        * html/InputType.cpp:
+        (WebCore::InputType::shouldSubmitImplicitly):
+        * html/InputType.h:
+        * html/MediaDocument.cpp:
+        (WebCore::MediaDocument::defaultEventHandler):
+        * html/TextFieldInputType.cpp:
+        (WebCore::TextFieldInputType::shouldSubmitImplicitly):
+        * html/TextFieldInputType.h:
+        * html/shadow/MediaControlElementTypes.cpp:
+        (WebCore::MediaControlVolumeSliderElement::defaultEventHandler):
+        * html/shadow/MediaControlElements.cpp:
+        (WebCore::MediaControlPanelElement::defaultEventHandler):
+        (WebCore::MediaControlVolumeSliderContainerElement::defaultEventHandler):
+        (WebCore::MediaControlTimelineElement::defaultEventHandler):
+        * html/shadow/MediaControls.cpp:
+        (WebCore::MediaControls::containsRelatedTarget):
+        * html/shadow/MediaControlsApple.cpp:
+        (WebCore::MediaControlsAppleEventListener::handleEvent):
+        * html/shadow/SliderThumbElement.cpp:
+        (WebCore::SliderThumbElement::defaultEventHandler):
+        * html/shadow/SpinButtonElement.cpp:
+        (WebCore::SpinButtonElement::defaultEventHandler):
+        (WebCore::SpinButtonElement::forwardEvent):
+        * html/shadow/TextControlInnerElements.cpp:
+        (WebCore::SearchFieldResultsButtonElement::defaultEventHandler):
+        (WebCore::SearchFieldCancelButtonElement::defaultEventHandler):
+        * inspector/InspectorFrontendHost.cpp:
+        (WebCore::InspectorFrontendHost::dispatchEventAsContextMenuEvent):
+        * page/ContextMenuController.cpp:
+        (WebCore::ContextMenuController::maybeCreateContextMenu):
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::handleTextInputEvent):
+        * rendering/RenderEmbeddedObject.cpp:
+        (WebCore::RenderEmbeddedObject::isInUnavailablePluginIndicator):
+        (WebCore::RenderEmbeddedObject::handleUnavailablePluginIndicatorEvent):
+        * rendering/RenderEmbeddedObject.h:
+        * rendering/RenderSnapshottedPlugIn.cpp:
+        (WebCore::RenderSnapshottedPlugIn::handleEvent):
+
</ins><span class="cx"> 2014-10-01  Zan Dobersek  &lt;zdobersek@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [TexMap] Sprinkle range-based for-loops in GraphicsLayerTextureMapper, TextureMapperLayer
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSErrorHandlercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSErrorHandler.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSErrorHandler.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/bindings/js/JSErrorHandler.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -59,14 +59,14 @@
</span><span class="cx"> void JSErrorHandler::handleEvent(ScriptExecutionContext* scriptExecutionContext, Event* event)
</span><span class="cx"> {
</span><span class="cx"> 
</span><del>-    if (event-&gt;eventInterface() != ErrorEventInterfaceType)
</del><ins>+    if (!is&lt;ErrorEvent&gt;(event))
</ins><span class="cx">         return JSEventListener::handleEvent(scriptExecutionContext, event);
</span><span class="cx"> 
</span><span class="cx">     ASSERT(scriptExecutionContext);
</span><span class="cx">     if (!scriptExecutionContext)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ErrorEvent* errorEvent = toErrorEvent(event);
</del><ins>+    ErrorEvent&amp; errorEvent = downcast&lt;ErrorEvent&gt;(*event);
</ins><span class="cx"> 
</span><span class="cx">     JSLockHolder lock(scriptExecutionContext-&gt;vm());
</span><span class="cx"> 
</span><span class="lines">@@ -90,10 +90,10 @@
</span><span class="cx">         globalObject-&gt;setCurrentEvent(event);
</span><span class="cx"> 
</span><span class="cx">         MarkedArgumentBuffer args;
</span><del>-        args.append(jsStringWithCache(exec, errorEvent-&gt;message()));
-        args.append(jsStringWithCache(exec, errorEvent-&gt;filename()));
-        args.append(jsNumber(errorEvent-&gt;lineno()));
-        args.append(jsNumber(errorEvent-&gt;colno()));
</del><ins>+        args.append(jsStringWithCache(exec, errorEvent.message()));
+        args.append(jsStringWithCache(exec, errorEvent.filename()));
+        args.append(jsNumber(errorEvent.lineno()));
+        args.append(jsNumber(errorEvent.colno()));
</ins><span class="cx"> 
</span><span class="cx">         VM&amp; vm = globalObject-&gt;vm();
</span><span class="cx">         VMEntryScope entryScope(vm, vm.entryScope ? vm.entryScope-&gt;globalObject() : globalObject);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventListener.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventListener.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/bindings/js/JSEventListener.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -141,8 +141,8 @@
</span><span class="cx">             event-&gt;target()-&gt;uncaughtExceptionInEventHandler();
</span><span class="cx">             reportException(exec, exception);
</span><span class="cx">         } else {
</span><del>-            if (!retval.isUndefinedOrNull() &amp;&amp; event-&gt;isBeforeUnloadEvent())
-                toBeforeUnloadEvent(event)-&gt;setReturnValue(retval.toString(exec)-&gt;value(exec));
</del><ins>+            if (!retval.isUndefinedOrNull() &amp;&amp; is&lt;BeforeUnloadEvent&gt;(event))
+                downcast&lt;BeforeUnloadEvent&gt;(*event).setReturnValue(retval.toString(exec)-&gt;value(exec));
</ins><span class="cx">             if (m_isAttribute) {
</span><span class="cx">                 if (retval.isFalse())
</span><span class="cx">                     event-&gt;preventDefault();
</span></span></pre></div>
<a id="trunkSourceWebCoredomBeforeTextInsertedEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/BeforeTextInsertedEvent.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/BeforeTextInsertedEvent.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/BeforeTextInsertedEvent.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -51,8 +51,8 @@
</span><span class="cx">     String m_text;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-EVENT_TYPE_CASTS(BeforeTextInsertedEvent)
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-} // namespace
</del><ins>+SPECIALIZE_TYPE_TRAITS_EVENT(BeforeTextInsertedEvent)
</ins><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoredomBeforeUnloadEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/BeforeUnloadEvent.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/BeforeUnloadEvent.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/BeforeUnloadEvent.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -51,8 +51,8 @@
</span><span class="cx">     String m_returnValue;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-EVENT_TYPE_CASTS(BeforeUnloadEvent)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_EVENT(BeforeUnloadEvent)
+
</ins><span class="cx"> #endif // BeforeUnloadEvent_h
</span></span></pre></div>
<a id="trunkSourceWebCoredomErrorEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ErrorEvent.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ErrorEvent.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/ErrorEvent.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -81,8 +81,8 @@
</span><span class="cx">     unsigned m_columnNumber;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-EVENT_TYPE_CASTS(ErrorEvent)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_EVENT(ErrorEvent)
+
</ins><span class="cx"> #endif // ErrorEvent_h
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Event.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Event.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/Event.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/ListHashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><ins>+#include &lt;wtf/TypeCasts.h&gt;
</ins><span class="cx"> #include &lt;wtf/text/AtomicString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -205,10 +206,11 @@
</span><span class="cx">     RefPtr&lt;Event&gt; m_underlyingEvent;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-#define EVENT_TYPE_CASTS(ToValueTypeName) \
-    TYPE_CASTS_BASE(ToValueTypeName, Event, event, event-&gt;is##ToValueTypeName(), event.is##ToValueTypeName())
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><ins>+#define SPECIALIZE_TYPE_TRAITS_EVENT(ToValueTypeName) \
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ToValueTypeName) \
+    static bool isType(const WebCore::Event&amp; event) { return event.is##ToValueTypeName(); } \
+SPECIALIZE_TYPE_TRAITS_END()
</ins><span class="cx"> 
</span><del>-} // namespace WebCore
-
</del><span class="cx"> #endif // Event_h
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventContext.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventContext.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/EventContext.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -76,12 +76,12 @@
</span><span class="cx"> 
</span><span class="cx"> void MouseOrFocusEventContext::handleLocalEvents(Event&amp; event) const
</span><span class="cx"> {
</span><del>-    ASSERT(event.isMouseEvent() || event.isFocusEvent());
</del><ins>+    ASSERT(is&lt;MouseEvent&gt;(event) || is&lt;FocusEvent&gt;(event));
</ins><span class="cx">     if (m_relatedTarget) {
</span><del>-        if (event.isMouseEvent())
-            toMouseEvent(event).setRelatedTarget(m_relatedTarget.get());
-        else if (event.isFocusEvent())
-            toFocusEvent(event).setRelatedTarget(m_relatedTarget.get());
</del><ins>+        if (is&lt;MouseEvent&gt;(event))
+            downcast&lt;MouseEvent&gt;(event).setRelatedTarget(m_relatedTarget.get());
+        else if (is&lt;FocusEvent&gt;(event))
+            downcast&lt;FocusEvent&gt;(event).setRelatedTarget(m_relatedTarget.get());
</ins><span class="cx">     }
</span><span class="cx">     EventContext::handleLocalEvents(event);
</span><span class="cx"> }
</span><span class="lines">@@ -111,8 +111,8 @@
</span><span class="cx">     checkReachability(m_targetTouches.get());
</span><span class="cx">     checkReachability(m_changedTouches.get());
</span><span class="cx"> #endif
</span><del>-    ASSERT(event.isTouchEvent());
-    TouchEvent&amp; touchEvent = toTouchEvent(event);
</del><ins>+    ASSERT(is&lt;TouchEvent&gt;(event));
+    TouchEvent&amp; touchEvent = downcast&lt;TouchEvent&gt;(event);
</ins><span class="cx">     touchEvent.setTouches(m_touches);
</span><span class="cx">     touchEvent.setTargetTouches(m_targetTouches);
</span><span class="cx">     touchEvent.setChangedTouches(m_changedTouches);
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventDispatchercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventDispatcher.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventDispatcher.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/EventDispatcher.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -342,8 +342,8 @@
</span><span class="cx">     if (EventTarget* relatedTarget = event-&gt;relatedTarget())
</span><span class="cx">         eventPath.setRelatedTarget(*node, *relatedTarget);
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS) &amp;&amp; !PLATFORM(IOS)
</span><del>-    if (event-&gt;isTouchEvent()) {
-        if (!eventPath.updateTouchLists(*toTouchEvent(event.get())))
</del><ins>+    if (is&lt;TouchEvent&gt;(*event)) {
+        if (!eventPath.updateTouchLists(downcast&lt;TouchEvent&gt;(*event)))
</ins><span class="cx">             return true;
</span><span class="cx">     }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoredomFocusEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/FocusEvent.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/FocusEvent.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/FocusEvent.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -70,8 +70,8 @@
</span><span class="cx">     RefPtr&lt;EventTarget&gt; m_relatedTarget;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-EVENT_TYPE_CASTS(FocusEvent)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_EVENT(FocusEvent)
+
</ins><span class="cx"> #endif // FocusEvent_h
</span></span></pre></div>
<a id="trunkSourceWebCoredomKeyboardEventcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/KeyboardEvent.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/KeyboardEvent.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/KeyboardEvent.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -220,9 +220,9 @@
</span><span class="cx"> KeyboardEvent* findKeyboardEvent(Event* event)
</span><span class="cx"> {
</span><span class="cx">     for (Event* e = event; e; e = e-&gt;underlyingEvent())
</span><del>-        if (e-&gt;isKeyboardEvent())
-            return toKeyboardEvent(e);
-    return 0;
</del><ins>+        if (is&lt;KeyboardEvent&gt;(e))
+            return downcast&lt;KeyboardEvent&gt;(e);
+    return nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoredomKeyboardEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/KeyboardEvent.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/KeyboardEvent.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/KeyboardEvent.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -119,10 +119,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-EVENT_TYPE_CASTS(KeyboardEvent)
-
</del><span class="cx"> KeyboardEvent* findKeyboardEvent(Event*);
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_EVENT(KeyboardEvent)
+
</ins><span class="cx"> #endif // KeyboardEvent_h
</span></span></pre></div>
<a id="trunkSourceWebCoredomMouseEventcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MouseEvent.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MouseEvent.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/MouseEvent.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -276,10 +276,10 @@
</span><span class="cx">     }
</span><span class="cx">     setUnderlyingEvent(underlyingEvent);
</span><span class="cx"> 
</span><del>-    if (this-&gt;underlyingEvent() &amp;&amp; this-&gt;underlyingEvent()-&gt;isMouseEvent()) {
-        MouseEvent* mouseEvent = toMouseEvent(this-&gt;underlyingEvent());
-        m_screenLocation = mouseEvent-&gt;screenLocation();
-        initCoordinates(mouseEvent-&gt;clientLocation());
</del><ins>+    if (this-&gt;underlyingEvent() &amp;&amp; is&lt;MouseEvent&gt;(this-&gt;underlyingEvent())) {
+        MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*this-&gt;underlyingEvent());
+        m_screenLocation = mouseEvent.screenLocation();
+        initCoordinates(mouseEvent.clientLocation());
</ins><span class="cx">     } else if (target) {
</span><span class="cx">         m_screenLocation = target-&gt;screenRect().center();
</span><span class="cx">         initCoordinates(LayoutPoint(target-&gt;clientRect().center()));
</span></span></pre></div>
<a id="trunkSourceWebCoredomMouseEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MouseEvent.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MouseEvent.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/MouseEvent.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -132,8 +132,8 @@
</span><span class="cx">     SimulatedMouseEvent(const AtomicString&amp; eventType, PassRefPtr&lt;AbstractView&gt;, PassRefPtr&lt;Event&gt; underlyingEvent, Element* target);
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-EVENT_TYPE_CASTS(MouseEvent)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_EVENT(MouseEvent)
+
</ins><span class="cx"> #endif // MouseEvent_h
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/Node.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -2032,8 +2032,8 @@
</span><span class="cx"> bool Node::dispatchEvent(PassRefPtr&lt;Event&gt; event)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS) &amp;&amp; !PLATFORM(IOS)
</span><del>-    if (event-&gt;isTouchEvent())
-        return dispatchTouchEvent(adoptRef(toTouchEvent(event.leakRef())));
</del><ins>+    if (is&lt;TouchEvent&gt;(event.get()))
+        return dispatchTouchEvent(adoptRef(downcast&lt;TouchEvent&gt;(event.leakRef())));
</ins><span class="cx"> #endif
</span><span class="cx">     return EventDispatcher::dispatchEvent(this, event);
</span><span class="cx"> }
</span><span class="lines">@@ -2100,11 +2100,12 @@
</span><span class="cx">         return;
</span><span class="cx">     const AtomicString&amp; eventType = event-&gt;type();
</span><span class="cx">     if (eventType == eventNames().keydownEvent || eventType == eventNames().keypressEvent) {
</span><del>-        if (event-&gt;isKeyboardEvent())
</del><ins>+        if (is&lt;KeyboardEvent&gt;(event)) {
</ins><span class="cx">             if (Frame* frame = document().frame())
</span><del>-                frame-&gt;eventHandler().defaultKeyboardEventHandler(toKeyboardEvent(event));
</del><ins>+                frame-&gt;eventHandler().defaultKeyboardEventHandler(downcast&lt;KeyboardEvent&gt;(event));
+        }
</ins><span class="cx">     } else if (eventType == eventNames().clickEvent) {
</span><del>-        int detail = event-&gt;isUIEvent() ? toUIEvent(event)-&gt;detail() : 0;
</del><ins>+        int detail = is&lt;UIEvent&gt;(event) ? downcast&lt;UIEvent&gt;(*event).detail() : 0;
</ins><span class="cx">         if (dispatchDOMActivateEvent(detail, event))
</span><span class="cx">             event-&gt;setDefaultHandled();
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="lines">@@ -2114,12 +2115,13 @@
</span><span class="cx">                 page-&gt;contextMenuController().handleContextMenuEvent(event);
</span><span class="cx"> #endif
</span><span class="cx">     } else if (eventType == eventNames().textInputEvent) {
</span><del>-        if (event-&gt;eventInterface() == TextEventInterfaceType)
</del><ins>+        if (is&lt;TextEvent&gt;(event)) {
</ins><span class="cx">             if (Frame* frame = document().frame())
</span><del>-                frame-&gt;eventHandler().defaultTextInputEventHandler(toTextEvent(event));
</del><ins>+                frame-&gt;eventHandler().defaultTextInputEventHandler(downcast&lt;TextEvent&gt;(event));
+        }
</ins><span class="cx"> #if ENABLE(PAN_SCROLLING)
</span><del>-    } else if (eventType == eventNames().mousedownEvent &amp;&amp; event-&gt;isMouseEvent()) {
-        if (toMouseEvent(event)-&gt;button() == MiddleButton) {
</del><ins>+    } else if (eventType == eventNames().mousedownEvent &amp;&amp; is&lt;MouseEvent&gt;(event)) {
+        if (downcast&lt;MouseEvent&gt;(*event).button() == MiddleButton) {
</ins><span class="cx">             if (enclosingLinkEventParentOrSelf())
</span><span class="cx">                 return;
</span><span class="cx"> 
</span><span class="lines">@@ -2133,7 +2135,7 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> #endif
</span><del>-    } else if ((eventType == eventNames().wheelEvent || eventType == eventNames().mousewheelEvent) &amp;&amp; event-&gt;eventInterface() == WheelEventInterfaceType) {
</del><ins>+    } else if ((eventType == eventNames().wheelEvent || eventType == eventNames().mousewheelEvent) &amp;&amp; is&lt;WheelEvent&gt;(event)) {
</ins><span class="cx"> 
</span><span class="cx">         // If we don't have a renderer, send the wheel event to the first node we find with a renderer.
</span><span class="cx">         // This is needed for &lt;option&gt; and &lt;optgroup&gt; elements so that &lt;select&gt;s get a wheel scroll.
</span><span class="lines">@@ -2143,16 +2145,16 @@
</span><span class="cx">         
</span><span class="cx">         if (startNode &amp;&amp; startNode-&gt;renderer())
</span><span class="cx">             if (Frame* frame = document().frame())
</span><del>-                frame-&gt;eventHandler().defaultWheelEventHandler(startNode, toWheelEvent(event));
</del><ins>+                frame-&gt;eventHandler().defaultWheelEventHandler(startNode, downcast&lt;WheelEvent&gt;(event));
</ins><span class="cx"> #if ENABLE(TOUCH_EVENTS) &amp;&amp; PLATFORM(IOS)
</span><del>-    } else if (event-&gt;eventInterface() == TouchEventInterfaceType &amp;&amp; eventNames().isTouchEventType(eventType)) {
</del><ins>+    } else if (is&lt;TouchEvent&gt;(event) &amp;&amp; eventNames().isTouchEventType(eventType)) {
</ins><span class="cx">         RenderObject* renderer = this-&gt;renderer();
</span><span class="cx">         while (renderer &amp;&amp; (!renderer-&gt;isBox() || !toRenderBox(renderer)-&gt;canBeScrolledAndHasScrollableArea()))
</span><span class="cx">             renderer = renderer-&gt;parent();
</span><span class="cx"> 
</span><span class="cx">         if (renderer &amp;&amp; renderer-&gt;node()) {
</span><span class="cx">             if (Frame* frame = document().frame())
</span><del>-                frame-&gt;eventHandler().defaultTouchEventHandler(renderer-&gt;node(), toTouchEvent(event));
</del><ins>+                frame-&gt;eventHandler().defaultTouchEventHandler(renderer-&gt;node(), downcast&lt;TouchEvent&gt;(event));
</ins><span class="cx">         }
</span><span class="cx"> #endif
</span><span class="cx">     } else if (event-&gt;type() == eventNames().webkitEditableContentChangedEvent) {
</span></span></pre></div>
<a id="trunkSourceWebCoredomTextEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TextEvent.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TextEvent.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/TextEvent.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -87,8 +87,8 @@
</span><span class="cx">         Vector&lt;DictationAlternative&gt; m_dictationAlternatives;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-EVENT_TYPE_CASTS(TextEvent)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_EVENT(TextEvent)
+
</ins><span class="cx"> #endif // TextEvent_h
</span></span></pre></div>
<a id="trunkSourceWebCoredomTouchEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/TouchEvent.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/TouchEvent.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/TouchEvent.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -86,10 +86,10 @@
</span><span class="cx">     RefPtr&lt;TouchList&gt; m_changedTouches;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-EVENT_TYPE_CASTS(TouchEvent)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_EVENT(TouchEvent)
+
</ins><span class="cx"> #endif // ENABLE(TOUCH_EVENTS)
</span><span class="cx"> 
</span><span class="cx"> #endif // TouchEvent_h
</span></span></pre></div>
<a id="trunkSourceWebCoredomUIEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/UIEvent.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/UIEvent.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/UIEvent.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -85,8 +85,8 @@
</span><span class="cx">     int m_detail;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-EVENT_TYPE_CASTS(UIEvent)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_EVENT(UIEvent)
+
</ins><span class="cx"> #endif // UIEvent_h
</span></span></pre></div>
<a id="trunkSourceWebCoredomWheelEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/WheelEvent.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/WheelEvent.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/dom/WheelEvent.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -114,8 +114,8 @@
</span><span class="cx">     bool m_initializedWithPlatformWheelEvent;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-EVENT_TYPE_CASTS(WheelEvent)
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_EVENT(WheelEvent)
+
</ins><span class="cx"> #endif // WheelEvent_h
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAnchorElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAnchorElement.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAnchorElement.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/HTMLAnchorElement.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx"> 
</span><span class="cx"> static void appendServerMapMousePosition(StringBuilder&amp; url, Event* event)
</span><span class="cx"> {
</span><del>-    if (!event-&gt;isMouseEvent())
</del><ins>+    if (!is&lt;MouseEvent&gt;(event))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     ASSERT(event-&gt;target());
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx">     RenderImage&amp; renderer = toRenderImage(*imageElement.renderer());
</span><span class="cx"> 
</span><span class="cx">     // FIXME: This should probably pass true for useTransforms.
</span><del>-    FloatPoint absolutePosition = renderer.absoluteToLocal(FloatPoint(toMouseEvent(event)-&gt;pageX(), toMouseEvent(event)-&gt;pageY()));
</del><ins>+    FloatPoint absolutePosition = renderer.absoluteToLocal(FloatPoint(downcast&lt;MouseEvent&gt;(*event).pageX(), downcast&lt;MouseEvent&gt;(*event).pageY()));
</ins><span class="cx">     int x = absolutePosition.x();
</span><span class="cx">     int y = absolutePosition.y();
</span><span class="cx">     url.append('?');
</span><span class="lines">@@ -196,9 +196,9 @@
</span><span class="cx">         if (hasEditableStyle()) {
</span><span class="cx">             // This keeps track of the editable block that the selection was in (if it was in one) just before the link was clicked
</span><span class="cx">             // for the LiveWhenNotFocused editable link behavior
</span><del>-            if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; event-&gt;isMouseEvent() &amp;&amp; toMouseEvent(event)-&gt;button() != RightButton &amp;&amp; document().frame()) {
</del><ins>+            if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(*event).button() != RightButton &amp;&amp; document().frame()) {
</ins><span class="cx">                 setRootEditableElementForSelectionOnMouseDown(document().frame()-&gt;selection().selection().rootEditableElement());
</span><del>-                m_wasShiftKeyDownOnMouseDown = toMouseEvent(event)-&gt;shiftKey();
</del><ins>+                m_wasShiftKeyDownOnMouseDown = downcast&lt;MouseEvent&gt;(*event).shiftKey();
</ins><span class="cx">             } else if (event-&gt;type() == eventNames().mouseoverEvent) {
</span><span class="cx">                 // These are cleared on mouseover and not mouseout because their values are needed for drag events,
</span><span class="cx">                 // but drag events happen after mouse out events.
</span><span class="lines">@@ -555,9 +555,9 @@
</span><span class="cx"> 
</span><span class="cx"> HTMLAnchorElement::EventType HTMLAnchorElement::eventType(Event* event)
</span><span class="cx"> {
</span><del>-    if (!event-&gt;isMouseEvent())
</del><ins>+    if (!is&lt;MouseEvent&gt;(event))
</ins><span class="cx">         return NonMouseEvent;
</span><del>-    return toMouseEvent(event)-&gt;shiftKey() ? MouseEventWithShiftKey : MouseEventWithoutShiftKey;
</del><ins>+    return downcast&lt;MouseEvent&gt;(*event).shiftKey() ? MouseEventWithShiftKey : MouseEventWithoutShiftKey;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLAnchorElement::treatLinkAsLiveForEventType(EventType eventType) const
</span><span class="lines">@@ -592,12 +592,12 @@
</span><span class="cx"> 
</span><span class="cx"> bool isEnterKeyKeydownEvent(Event* event)
</span><span class="cx"> {
</span><del>-    return event-&gt;type() == eventNames().keydownEvent &amp;&amp; event-&gt;isKeyboardEvent() &amp;&amp; toKeyboardEvent(event)-&gt;keyIdentifier() == &quot;Enter&quot;;
</del><ins>+    return event-&gt;type() == eventNames().keydownEvent &amp;&amp; is&lt;KeyboardEvent&gt;(event) &amp;&amp; downcast&lt;KeyboardEvent&gt;(*event).keyIdentifier() == &quot;Enter&quot;;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool isLinkClick(Event* event)
</span><span class="cx"> {
</span><del>-    return event-&gt;type() == eventNames().clickEvent &amp;&amp; (!event-&gt;isMouseEvent() || toMouseEvent(event)-&gt;button() != RightButton);
</del><ins>+    return event-&gt;type() == eventNames().clickEvent &amp;&amp; (!is&lt;MouseEvent&gt;(event) || downcast&lt;MouseEvent&gt;(*event).button() != RightButton);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool shouldProhibitLinks(Element* element)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLButtonElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLButtonElement.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLButtonElement.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/HTMLButtonElement.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -123,28 +123,29 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (event-&gt;isKeyboardEvent()) {
-        if (event-&gt;type() == eventNames().keydownEvent &amp;&amp; toKeyboardEvent(event)-&gt;keyIdentifier() == &quot;U+0020&quot;) {
</del><ins>+    if (is&lt;KeyboardEvent&gt;(event)) {
+        KeyboardEvent&amp; keyboardEvent = downcast&lt;KeyboardEvent&gt;(*event);
+        if (keyboardEvent.type() == eventNames().keydownEvent &amp;&amp; keyboardEvent.keyIdentifier() == &quot;U+0020&quot;) {
</ins><span class="cx">             setActive(true, true);
</span><span class="cx">             // No setDefaultHandled() - IE dispatches a keypress in this case.
</span><span class="cx">             return;
</span><span class="cx">         }
</span><del>-        if (event-&gt;type() == eventNames().keypressEvent) {
-            switch (toKeyboardEvent(event)-&gt;charCode()) {
</del><ins>+        if (keyboardEvent.type() == eventNames().keypressEvent) {
+            switch (keyboardEvent.charCode()) {
</ins><span class="cx">                 case '\r':
</span><del>-                    dispatchSimulatedClick(event);
-                    event-&gt;setDefaultHandled();
</del><ins>+                    dispatchSimulatedClick(&amp;keyboardEvent);
+                    keyboardEvent.setDefaultHandled();
</ins><span class="cx">                     return;
</span><span class="cx">                 case ' ':
</span><span class="cx">                     // Prevent scrolling down the page.
</span><del>-                    event-&gt;setDefaultHandled();
</del><ins>+                    keyboardEvent.setDefaultHandled();
</ins><span class="cx">                     return;
</span><span class="cx">             }
</span><span class="cx">         }
</span><del>-        if (event-&gt;type() == eventNames().keyupEvent &amp;&amp; toKeyboardEvent(event)-&gt;keyIdentifier() == &quot;U+0020&quot;) {
</del><ins>+        if (keyboardEvent.type() == eventNames().keyupEvent &amp;&amp; keyboardEvent.keyIdentifier() == &quot;U+0020&quot;) {
</ins><span class="cx">             if (active())
</span><del>-                dispatchSimulatedClick(event);
-            event-&gt;setDefaultHandled();
</del><ins>+                dispatchSimulatedClick(&amp;keyboardEvent);
+            keyboardEvent.setDefaultHandled();
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameSetElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameSetElement.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameSetElement.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/HTMLFrameSetElement.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -187,15 +187,15 @@
</span><span class="cx">         m_noresize = containingFrameSet-&gt;noResize();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLFrameSetElement::defaultEventHandler(Event* evt)
</del><ins>+void HTMLFrameSetElement::defaultEventHandler(Event* event)
</ins><span class="cx"> {
</span><del>-    if (evt-&gt;isMouseEvent() &amp;&amp; !m_noresize &amp;&amp; renderer() &amp;&amp; renderer()-&gt;isFrameSet()) {
-        if (toRenderFrameSet(renderer())-&gt;userResize(toMouseEvent(evt))) {
-            evt-&gt;setDefaultHandled();
</del><ins>+    if (is&lt;MouseEvent&gt;(event) &amp;&amp; !m_noresize &amp;&amp; renderer() &amp;&amp; renderer()-&gt;isFrameSet()) {
+        if (toRenderFrameSet(renderer())-&gt;userResize(downcast&lt;MouseEvent&gt;(event))) {
+            event-&gt;setDefaultHandled();
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">     }
</span><del>-    HTMLElement::defaultEventHandler(evt);
</del><ins>+    HTMLElement::defaultEventHandler(event);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLFrameSetElement::willRecalcStyle(Style::Change)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -1032,7 +1032,7 @@
</span><span class="cx"> {
</span><span class="cx">     if (event.type() == eventNames().textInputEvent &amp;&amp; m_inputType-&gt;shouldSubmitImplicitly(&amp;event))
</span><span class="cx">         event.stopPropagation();
</span><del>-    if (event.type() == eventNames().clickEvent &amp;&amp; event.isMouseEvent() &amp;&amp; toMouseEvent(&amp;event)-&gt;button() == LeftButton) {
</del><ins>+    if (event.type() == eventNames().clickEvent &amp;&amp; is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(event).button() == LeftButton) {
</ins><span class="cx">         m_inputType-&gt;willDispatchClick(state);
</span><span class="cx">         state.stateful = true;
</span><span class="cx">     }
</span><span class="lines">@@ -1045,22 +1045,22 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLInputElement::defaultEventHandler(Event* evt)
</span><span class="cx"> {
</span><del>-    if (evt-&gt;isMouseEvent() &amp;&amp; evt-&gt;type() == eventNames().clickEvent &amp;&amp; toMouseEvent(evt)-&gt;button() == LeftButton) {
-        m_inputType-&gt;handleClickEvent(toMouseEvent(evt));
</del><ins>+    if (is&lt;MouseEvent&gt;(evt) &amp;&amp; evt-&gt;type() == eventNames().clickEvent &amp;&amp; downcast&lt;MouseEvent&gt;(*evt).button() == LeftButton) {
+        m_inputType-&gt;handleClickEvent(downcast&lt;MouseEvent&gt;(evt));
</ins><span class="cx">         if (evt-&gt;defaultHandled())
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><del>-    if (evt-&gt;isTouchEvent()) {
-        m_inputType-&gt;handleTouchEvent(toTouchEvent(evt));
</del><ins>+    if (is&lt;TouchEvent&gt;(evt)) {
+        m_inputType-&gt;handleTouchEvent(downcast&lt;TouchEvent&gt;(evt));
</ins><span class="cx">         if (evt-&gt;defaultHandled())
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    if (evt-&gt;isKeyboardEvent() &amp;&amp; evt-&gt;type() == eventNames().keydownEvent) {
-        m_inputType-&gt;handleKeydownEvent(toKeyboardEvent(evt));
</del><ins>+    if (is&lt;KeyboardEvent&gt;(evt) &amp;&amp; evt-&gt;type() == eventNames().keydownEvent) {
+        m_inputType-&gt;handleKeydownEvent(downcast&lt;KeyboardEvent&gt;(evt));
</ins><span class="cx">         if (evt-&gt;defaultHandled())
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="lines">@@ -1086,18 +1086,19 @@
</span><span class="cx"> 
</span><span class="cx">     // Use key press event here since sending simulated mouse events
</span><span class="cx">     // on key down blocks the proper sending of the key press event.
</span><del>-    if (evt-&gt;isKeyboardEvent() &amp;&amp; evt-&gt;type() == eventNames().keypressEvent) {
-        m_inputType-&gt;handleKeypressEvent(toKeyboardEvent(evt));
-        if (evt-&gt;defaultHandled())
-            return;
</del><ins>+    if (is&lt;KeyboardEvent&gt;(evt)) {
+        KeyboardEvent&amp; keyboardEvent = downcast&lt;KeyboardEvent&gt;(*evt);
+        if (keyboardEvent.type() == eventNames().keypressEvent) {
+            m_inputType-&gt;handleKeypressEvent(&amp;keyboardEvent);
+            if (keyboardEvent.defaultHandled())
+                return;
+        } else if (keyboardEvent.type() == eventNames().keyupEvent) {
+            m_inputType-&gt;handleKeyupEvent(&amp;keyboardEvent);
+            if (keyboardEvent.defaultHandled())
+                return;
+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (evt-&gt;isKeyboardEvent() &amp;&amp; evt-&gt;type() == eventNames().keyupEvent) {
-        m_inputType-&gt;handleKeyupEvent(toKeyboardEvent(evt));
-        if (evt-&gt;defaultHandled())
-            return;
-    }
-
</del><span class="cx">     if (m_inputType-&gt;shouldSubmitImplicitly(evt)) {
</span><span class="cx">         if (isSearchField()) {
</span><span class="cx">             addSearchResult();
</span><span class="lines">@@ -1117,11 +1118,11 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (evt-&gt;isBeforeTextInsertedEvent())
-        m_inputType-&gt;handleBeforeTextInsertedEvent(toBeforeTextInsertedEvent(evt));
</del><ins>+    if (is&lt;BeforeTextInsertedEvent&gt;(evt))
+        m_inputType-&gt;handleBeforeTextInsertedEvent(downcast&lt;BeforeTextInsertedEvent&gt;(evt));
</ins><span class="cx"> 
</span><del>-    if (evt-&gt;isMouseEvent() &amp;&amp; evt-&gt;type() == eventNames().mousedownEvent) {
-        m_inputType-&gt;handleMouseDownEvent(toMouseEvent(evt));
</del><ins>+    if (is&lt;MouseEvent&gt;(evt) &amp;&amp; evt-&gt;type() == eventNames().mousedownEvent) {
+        m_inputType-&gt;handleMouseDownEvent(downcast&lt;MouseEvent&gt;(evt));
</ins><span class="cx">         if (evt-&gt;defaultHandled())
</span><span class="cx">             return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLPlugInImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -747,11 +747,11 @@
</span><span class="cx"> {
</span><span class="cx">     RenderElement* r = renderer();
</span><span class="cx">     if (r &amp;&amp; r-&gt;isEmbeddedObject()) {
</span><del>-        if (isPlugInImageElement() &amp;&amp; displayState() == WaitingForSnapshot &amp;&amp; event-&gt;isMouseEvent() &amp;&amp; event-&gt;type() == eventNames().clickEvent) {
-            MouseEvent* mouseEvent = toMouseEvent(event);
-            if (mouseEvent-&gt;button() == LeftButton) {
-                userDidClickSnapshot(mouseEvent, true);
-                event-&gt;setDefaultHandled();
</del><ins>+        if (displayState() == WaitingForSnapshot &amp;&amp; is&lt;MouseEvent&gt;(event) &amp;&amp; event-&gt;type() == eventNames().clickEvent) {
+            MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
+            if (mouseEvent.button() == LeftButton) {
+                userDidClickSnapshot(&amp;mouseEvent, true);
+                mouseEvent.setDefaultHandled();
</ins><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -1146,10 +1146,11 @@
</span><span class="cx">     RefPtr&lt;RenderTheme&gt; renderTheme = page ? &amp;page-&gt;theme() : RenderTheme::defaultTheme();
</span><span class="cx"> 
</span><span class="cx">     if (event-&gt;type() == eventNames().keydownEvent) {
</span><del>-        if (!event-&gt;isKeyboardEvent())
</del><ins>+        if (!is&lt;KeyboardEvent&gt;(event))
</ins><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        if (platformHandleKeydownEvent(toKeyboardEvent(event)))
</del><ins>+        KeyboardEvent&amp; keyboardEvent = downcast&lt;KeyboardEvent&gt;(*event);
+        if (platformHandleKeydownEvent(&amp;keyboardEvent))
</ins><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         // When using spatial navigation, we want to be able to navigate away
</span><span class="lines">@@ -1160,7 +1161,7 @@
</span><span class="cx">                 return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        const String&amp; keyIdentifier = toKeyboardEvent(event)-&gt;keyIdentifier();
</del><ins>+        const String&amp; keyIdentifier = keyboardEvent.keyIdentifier();
</ins><span class="cx">         bool handled = true;
</span><span class="cx">         const Vector&lt;HTMLElement*&gt;&amp; listItems = this-&gt;listItems();
</span><span class="cx">         int listIndex = optionToListIndex(selectedIndex());
</span><span class="lines">@@ -1192,22 +1193,23 @@
</span><span class="cx">             selectOption(listToOptionIndex(listIndex), DeselectOtherOptions | DispatchChangeEvent | UserDriven);
</span><span class="cx"> 
</span><span class="cx">         if (handled)
</span><del>-            event-&gt;setDefaultHandled();
</del><ins>+            keyboardEvent.setDefaultHandled();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Use key press event here since sending simulated mouse events
</span><span class="cx">     // on key down blocks the proper sending of the key press event.
</span><span class="cx">     if (event-&gt;type() == eventNames().keypressEvent) {
</span><del>-        if (!event-&gt;isKeyboardEvent())
</del><ins>+        if (!is&lt;KeyboardEvent&gt;(event))
</ins><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        int keyCode = toKeyboardEvent(event)-&gt;keyCode();
</del><ins>+        KeyboardEvent&amp; keyboardEvent = downcast&lt;KeyboardEvent&gt;(*event);
+        int keyCode = keyboardEvent.keyCode();
</ins><span class="cx">         bool handled = false;
</span><span class="cx"> 
</span><span class="cx">         if (keyCode == ' ' &amp;&amp; isSpatialNavigationEnabled(document().frame())) {
</span><span class="cx">             // Use space to toggle arrow key handling for selection change or spatial navigation.
</span><span class="cx">             m_activeSelectionState = !m_activeSelectionState;
</span><del>-            event-&gt;setDefaultHandled();
</del><ins>+            keyboardEvent.setDefaultHandled();
</ins><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -1246,17 +1248,17 @@
</span><span class="cx">                 handled = true;
</span><span class="cx">             } else if (keyCode == '\r') {
</span><span class="cx">                 if (form())
</span><del>-                    form()-&gt;submitImplicitly(event, false);
</del><ins>+                    form()-&gt;submitImplicitly(&amp;keyboardEvent, false);
</ins><span class="cx">                 dispatchChangeEventForMenuList();
</span><span class="cx">                 handled = true;
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (handled)
</span><del>-            event-&gt;setDefaultHandled();
</del><ins>+            keyboardEvent.setDefaultHandled();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; event-&gt;isMouseEvent() &amp;&amp; toMouseEvent(event)-&gt;button() == LeftButton) {
</del><ins>+    if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(*event).button() == LeftButton) {
</ins><span class="cx">         focus();
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx">         if (renderer() &amp;&amp; renderer()-&gt;isMenuList()) {
</span><span class="lines">@@ -1336,35 +1338,35 @@
</span><span class="cx"> {
</span><span class="cx">     const Vector&lt;HTMLElement*&gt;&amp; listItems = this-&gt;listItems();
</span><span class="cx"> 
</span><del>-    if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; event-&gt;isMouseEvent() &amp;&amp; toMouseEvent(event)-&gt;button() == LeftButton) {
</del><ins>+    if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(*event).button() == LeftButton) {
</ins><span class="cx">         focus();
</span><span class="cx">         // Calling focus() may remove or change our renderer, in which case we don't want to handle the event further.
</span><span class="cx">         if (!renderer() || !renderer()-&gt;isListBox())
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         // Convert to coords relative to the list box if needed.
</span><del>-        MouseEvent* mouseEvent = toMouseEvent(event);
-        IntPoint localOffset = roundedIntPoint(renderer()-&gt;absoluteToLocal(mouseEvent-&gt;absoluteLocation(), UseTransforms));
</del><ins>+        MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
+        IntPoint localOffset = roundedIntPoint(renderer()-&gt;absoluteToLocal(mouseEvent.absoluteLocation(), UseTransforms));
</ins><span class="cx">         int listIndex = toRenderListBox(renderer())-&gt;listIndexAtOffset(toIntSize(localOffset));
</span><span class="cx">         if (listIndex &gt;= 0) {
</span><span class="cx">             if (!isDisabledFormControl()) {
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-                updateSelectedState(listIndex, mouseEvent-&gt;metaKey(), mouseEvent-&gt;shiftKey());
</del><ins>+                updateSelectedState(listIndex, mouseEvent.metaKey(), mouseEvent.shiftKey());
</ins><span class="cx"> #else
</span><del>-                updateSelectedState(listIndex, mouseEvent-&gt;ctrlKey(), mouseEvent-&gt;shiftKey());
</del><ins>+                updateSelectedState(listIndex, mouseEvent.ctrlKey(), mouseEvent.shiftKey());
</ins><span class="cx"> #endif
</span><span class="cx">             }
</span><span class="cx">             if (Frame* frame = document().frame())
</span><span class="cx">                 frame-&gt;eventHandler().setMouseDownMayStartAutoscroll();
</span><span class="cx"> 
</span><del>-            event-&gt;setDefaultHandled();
</del><ins>+            mouseEvent.setDefaultHandled();
</ins><span class="cx">         }
</span><del>-    } else if (event-&gt;type() == eventNames().mousemoveEvent &amp;&amp; event-&gt;isMouseEvent() &amp;&amp; !toRenderBox(renderer())-&gt;canBeScrolledAndHasScrollableArea()) {
-        MouseEvent* mouseEvent = toMouseEvent(event);
-        if (mouseEvent-&gt;button() != LeftButton || !mouseEvent-&gt;buttonDown())
</del><ins>+    } else if (event-&gt;type() == eventNames().mousemoveEvent &amp;&amp; is&lt;MouseEvent&gt;(event) &amp;&amp; !toRenderBox(renderer())-&gt;canBeScrolledAndHasScrollableArea()) {
+        MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
+        if (mouseEvent.button() != LeftButton || !mouseEvent.buttonDown())
</ins><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        IntPoint localOffset = roundedIntPoint(renderer()-&gt;absoluteToLocal(mouseEvent-&gt;absoluteLocation(), UseTransforms));
</del><ins>+        IntPoint localOffset = roundedIntPoint(renderer()-&gt;absoluteToLocal(mouseEvent.absoluteLocation(), UseTransforms));
</ins><span class="cx">         int listIndex = toRenderListBox(renderer())-&gt;listIndexAtOffset(toIntSize(localOffset));
</span><span class="cx">         if (listIndex &gt;= 0) {
</span><span class="cx">             if (!isDisabledFormControl()) {
</span><span class="lines">@@ -1381,9 +1383,9 @@
</span><span class="cx">                     updateListBoxSelection(true);
</span><span class="cx">                 }
</span><span class="cx">             }
</span><del>-            event-&gt;setDefaultHandled();
</del><ins>+            mouseEvent.setDefaultHandled();
</ins><span class="cx">         }
</span><del>-    } else if (event-&gt;type() == eventNames().mouseupEvent &amp;&amp; event-&gt;isMouseEvent() &amp;&amp; toMouseEvent(event)-&gt;button() == LeftButton &amp;&amp; document().frame()-&gt;eventHandler().autoscrollRenderer() != renderer()) {
</del><ins>+    } else if (event-&gt;type() == eventNames().mouseupEvent &amp;&amp; is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(*event).button() == LeftButton &amp;&amp; document().frame()-&gt;eventHandler().autoscrollRenderer() != renderer()) {
</ins><span class="cx">         // This click or drag event was not over any of the options.
</span><span class="cx">         if (m_lastOnChangeSelection.isEmpty())
</span><span class="cx">             return;
</span><span class="lines">@@ -1392,10 +1394,12 @@
</span><span class="cx">         // timer stops.
</span><span class="cx">         listBoxOnChange();
</span><span class="cx">     } else if (event-&gt;type() == eventNames().keydownEvent) {
</span><del>-        if (!event-&gt;isKeyboardEvent())
</del><ins>+        if (!is&lt;KeyboardEvent&gt;(event))
</ins><span class="cx">             return;
</span><del>-        const String&amp; keyIdentifier = toKeyboardEvent(event)-&gt;keyIdentifier();
</del><span class="cx"> 
</span><ins>+        KeyboardEvent&amp; keyboardEvent = downcast&lt;KeyboardEvent&gt;(*event);
+        const String&amp; keyIdentifier = keyboardEvent.keyIdentifier();
+
</ins><span class="cx">         bool handled = false;
</span><span class="cx">         int endIndex = 0;
</span><span class="cx">         if (m_activeSelectionEndIndex &lt; 0) {
</span><span class="lines">@@ -1456,15 +1460,15 @@
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">             m_allowsNonContiguousSelection = m_multiple &amp;&amp; isSpatialNavigationEnabled(document().frame());
</span><span class="cx"> #else
</span><del>-            m_allowsNonContiguousSelection = m_multiple &amp;&amp; (isSpatialNavigationEnabled(document().frame()) || toKeyboardEvent(event)-&gt;ctrlKey());
</del><ins>+            m_allowsNonContiguousSelection = m_multiple &amp;&amp; (isSpatialNavigationEnabled(document().frame()) || keyboardEvent.ctrlKey());
</ins><span class="cx"> #endif
</span><del>-            bool selectNewItem = toKeyboardEvent(event)-&gt;shiftKey() || !m_allowsNonContiguousSelection;
</del><ins>+            bool selectNewItem = keyboardEvent.shiftKey() || !m_allowsNonContiguousSelection;
</ins><span class="cx"> 
</span><span class="cx">             if (selectNewItem)
</span><span class="cx">                 m_activeSelectionState = true;
</span><span class="cx">             // If the anchor is unitialized, or if we're going to deselect all
</span><span class="cx">             // other options, then set the anchor index equal to the end index.
</span><del>-            bool deselectOthers = !m_multiple || (!toKeyboardEvent(event)-&gt;shiftKey() &amp;&amp; selectNewItem);
</del><ins>+            bool deselectOthers = !m_multiple || (!keyboardEvent.shiftKey() &amp;&amp; selectNewItem);
</ins><span class="cx">             if (m_activeSelectionAnchorIndex &lt; 0 || deselectOthers) {
</span><span class="cx">                 if (deselectOthers)
</span><span class="cx">                     deselectItemsWithoutValidation();
</span><span class="lines">@@ -1478,17 +1482,18 @@
</span><span class="cx">             } else
</span><span class="cx">                 scrollToSelection();
</span><span class="cx"> 
</span><del>-            event-&gt;setDefaultHandled();
</del><ins>+            keyboardEvent.setDefaultHandled();
</ins><span class="cx">         }
</span><span class="cx">     } else if (event-&gt;type() == eventNames().keypressEvent) {
</span><del>-        if (!event-&gt;isKeyboardEvent())
</del><ins>+        if (!is&lt;KeyboardEvent&gt;(event))
</ins><span class="cx">             return;
</span><del>-        int keyCode = toKeyboardEvent(event)-&gt;keyCode();
</del><ins>+        KeyboardEvent&amp; keyboardEvent = downcast&lt;KeyboardEvent&gt;(*event);
+        int keyCode = keyboardEvent.keyCode();
</ins><span class="cx"> 
</span><span class="cx">         if (keyCode == '\r') {
</span><span class="cx">             if (form())
</span><del>-                form()-&gt;submitImplicitly(event, false);
-            event-&gt;setDefaultHandled();
</del><ins>+                form()-&gt;submitImplicitly(&amp;keyboardEvent, false);
+            keyboardEvent.setDefaultHandled();
</ins><span class="cx">         } else if (m_multiple &amp;&amp; keyCode == ' ' &amp;&amp; m_allowsNonContiguousSelection) {
</span><span class="cx">             // Use space to toggle selection change.
</span><span class="cx">             m_activeSelectionState = !m_activeSelectionState;
</span><span class="lines">@@ -1497,7 +1502,7 @@
</span><span class="cx">             ASSERT(is&lt;HTMLOptionElement&gt;(*listItems[m_activeSelectionEndIndex]));
</span><span class="cx">             updateSelectedState(m_activeSelectionEndIndex, true /*multi*/, false /*shift*/);
</span><span class="cx">             listBoxOnChange();
</span><del>-            event-&gt;setDefaultHandled();
</del><ins>+            keyboardEvent.setDefaultHandled();
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -1523,9 +1528,9 @@
</span><span class="cx">     if (event-&gt;defaultHandled())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (event-&gt;type() == eventNames().keypressEvent &amp;&amp; event-&gt;isKeyboardEvent()) {
-        KeyboardEvent* keyboardEvent = toKeyboardEvent(event);
-        if (!keyboardEvent-&gt;ctrlKey() &amp;&amp; !keyboardEvent-&gt;altKey() &amp;&amp; !keyboardEvent-&gt;metaKey() &amp;&amp; u_isprint(keyboardEvent-&gt;charCode())) {
</del><ins>+    if (event-&gt;type() == eventNames().keypressEvent &amp;&amp; is&lt;KeyboardEvent&gt;(event)) {
+        KeyboardEvent&amp; keyboardEvent = downcast&lt;KeyboardEvent&gt;(*event);
+        if (!keyboardEvent.ctrlKey() &amp;&amp; !keyboardEvent.altKey() &amp;&amp; !keyboardEvent.metaKey() &amp;&amp; u_isprint(keyboardEvent.charCode())) {
</ins><span class="cx">             typeAheadFind(keyboardEvent);
</span><span class="cx">             event-&gt;setDefaultHandled();
</span><span class="cx">             return;
</span><span class="lines">@@ -1565,9 +1570,9 @@
</span><span class="cx">     return downcast&lt;HTMLOptionElement&gt;(*element).textIndentedToRespectGroupLabel();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLSelectElement::typeAheadFind(KeyboardEvent* event)
</del><ins>+void HTMLSelectElement::typeAheadFind(KeyboardEvent&amp; event)
</ins><span class="cx"> {
</span><del>-    int index = m_typeAhead.handleEvent(event, TypeAhead::MatchPrefix | TypeAhead::CycleFirstChar);
</del><ins>+    int index = m_typeAhead.handleEvent(&amp;event, TypeAhead::MatchPrefix | TypeAhead::CycleFirstChar);
</ins><span class="cx">     if (index &lt; 0)
</span><span class="cx">         return;
</span><span class="cx">     selectOption(listToOptionIndex(index), DeselectOtherOptions | DispatchChangeEvent | UserDriven);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/HTMLSelectElement.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx">     void recalcListItems(bool updateSelectedStates = true) const;
</span><span class="cx"> 
</span><span class="cx">     void deselectItems(HTMLOptionElement* excludeElement = 0);
</span><del>-    void typeAheadFind(KeyboardEvent*);
</del><ins>+    void typeAheadFind(KeyboardEvent&amp;);
</ins><span class="cx">     void saveLastSelection();
</span><span class="cx"> 
</span><span class="cx">     virtual InsertionNotificationRequest insertedInto(ContainerNode&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSummaryElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSummaryElement.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSummaryElement.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/HTMLSummaryElement.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -126,28 +126,29 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (event-&gt;isKeyboardEvent()) {
-            if (event-&gt;type() == eventNames().keydownEvent &amp;&amp; toKeyboardEvent(event)-&gt;keyIdentifier() == &quot;U+0020&quot;) {
</del><ins>+        if (is&lt;KeyboardEvent&gt;(event)) {
+            KeyboardEvent&amp; keyboardEvent = downcast&lt;KeyboardEvent&gt;(*event);
+            if (keyboardEvent.type() == eventNames().keydownEvent &amp;&amp; keyboardEvent.keyIdentifier() == &quot;U+0020&quot;) {
</ins><span class="cx">                 setActive(true, true);
</span><span class="cx">                 // No setDefaultHandled() - IE dispatches a keypress in this case.
</span><span class="cx">                 return;
</span><span class="cx">             }
</span><del>-            if (event-&gt;type() == eventNames().keypressEvent) {
-                switch (toKeyboardEvent(event)-&gt;charCode()) {
</del><ins>+            if (keyboardEvent.type() == eventNames().keypressEvent) {
+                switch (keyboardEvent.charCode()) {
</ins><span class="cx">                 case '\r':
</span><span class="cx">                     dispatchSimulatedClick(event);
</span><del>-                    event-&gt;setDefaultHandled();
</del><ins>+                    keyboardEvent.setDefaultHandled();
</ins><span class="cx">                     return;
</span><span class="cx">                 case ' ':
</span><span class="cx">                     // Prevent scrolling down the page.
</span><del>-                    event-&gt;setDefaultHandled();
</del><ins>+                    keyboardEvent.setDefaultHandled();
</ins><span class="cx">                     return;
</span><span class="cx">                 }
</span><span class="cx">             }
</span><del>-            if (event-&gt;type() == eventNames().keyupEvent &amp;&amp; toKeyboardEvent(event)-&gt;keyIdentifier() == &quot;U+0020&quot;) {
</del><ins>+            if (keyboardEvent.type() == eventNames().keyupEvent &amp;&amp; keyboardEvent.keyIdentifier() == &quot;U+0020&quot;) {
</ins><span class="cx">                 if (active())
</span><span class="cx">                     dispatchSimulatedClick(event);
</span><del>-                event-&gt;setDefaultHandled();
</del><ins>+                keyboardEvent.setDefaultHandled();
</ins><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextAreaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -270,8 +270,8 @@
</span><span class="cx"> {
</span><span class="cx">     if (renderer() &amp;&amp; (event-&gt;isMouseEvent() || event-&gt;isDragEvent() || event-&gt;eventInterface() == WheelEventInterfaceType || event-&gt;type() == eventNames().blurEvent))
</span><span class="cx">         forwardEvent(event);
</span><del>-    else if (renderer() &amp;&amp; event-&gt;isBeforeTextInsertedEvent())
-        handleBeforeTextInsertedEvent(toBeforeTextInsertedEvent(event));
</del><ins>+    else if (renderer() &amp;&amp; is&lt;BeforeTextInsertedEvent&gt;(event))
+        handleBeforeTextInsertedEvent(downcast&lt;BeforeTextInsertedEvent&gt;(event));
</ins><span class="cx"> 
</span><span class="cx">     HTMLTextFormControlElement::defaultEventHandler(event);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlImageDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ImageDocument.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ImageDocument.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/ImageDocument.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -398,8 +398,8 @@
</span><span class="cx"> {
</span><span class="cx">     if (event-&gt;type() == eventNames().resizeEvent)
</span><span class="cx">         m_document.windowSizeChanged();
</span><del>-    else if (event-&gt;type() == eventNames().clickEvent &amp;&amp; event-&gt;isMouseEvent()) {
-        MouseEvent&amp; mouseEvent = toMouseEvent(*event);
</del><ins>+    else if (event-&gt;type() == eventNames().clickEvent &amp;&amp; is&lt;MouseEvent&gt;(event)) {
+        MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
</ins><span class="cx">         m_document.imageClicked(mouseEvent.x(), mouseEvent.y());
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlImageInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/ImageInputType.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/ImageInputType.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/ImageInputType.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -89,8 +89,8 @@
</span><span class="cx">     m_clickLocation = IntPoint();
</span><span class="cx">     if (event-&gt;underlyingEvent()) {
</span><span class="cx">         Event&amp; underlyingEvent = *event-&gt;underlyingEvent();
</span><del>-        if (underlyingEvent.isMouseEvent()) {
-            MouseEvent&amp; mouseEvent = toMouseEvent(underlyingEvent);
</del><ins>+        if (is&lt;MouseEvent&gt;(underlyingEvent)) {
+            MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(underlyingEvent);
</ins><span class="cx">             if (!mouseEvent.isSimulated())
</span><span class="cx">                 m_clickLocation = IntPoint(mouseEvent.offsetX(), mouseEvent.offsetY());
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/InputType.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/InputType.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/InputType.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -471,7 +471,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool InputType::shouldSubmitImplicitly(Event* event)
</span><span class="cx"> {
</span><del>-    return event-&gt;isKeyboardEvent() &amp;&amp; event-&gt;type() == eventNames().keypressEvent &amp;&amp; toKeyboardEvent(event)-&gt;charCode() == '\r';
</del><ins>+    return is&lt;KeyboardEvent&gt;(event) &amp;&amp; event-&gt;type() == eventNames().keypressEvent &amp;&amp; downcast&lt;KeyboardEvent&gt;(*event).charCode() == '\r';
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;HTMLFormElement&gt; InputType::formForSubmission() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlMediaDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/MediaDocument.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/MediaDocument.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/MediaDocument.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -204,19 +204,19 @@
</span><span class="cx">     if (!is&lt;ContainerNode&gt;(targetNode))
</span><span class="cx">         return;
</span><span class="cx">     ContainerNode&amp; targetContainer = downcast&lt;ContainerNode&gt;(*targetNode);
</span><del>-    if (event-&gt;type() == eventNames().keydownEvent &amp;&amp; event-&gt;isKeyboardEvent()) {
</del><ins>+    if (event-&gt;type() == eventNames().keydownEvent &amp;&amp; is&lt;KeyboardEvent&gt;(event)) {
</ins><span class="cx">         HTMLVideoElement* video = descendentVideoElement(targetContainer);
</span><span class="cx">         if (!video)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        KeyboardEvent* keyboardEvent = toKeyboardEvent(event);
-        if (keyboardEvent-&gt;keyIdentifier() == &quot;U+0020&quot;) { // space
</del><ins>+        KeyboardEvent&amp; keyboardEvent = downcast&lt;KeyboardEvent&gt;(*event);
+        if (keyboardEvent.keyIdentifier() == &quot;U+0020&quot;) { // space
</ins><span class="cx">             if (video-&gt;paused()) {
</span><span class="cx">                 if (video-&gt;canPlay())
</span><span class="cx">                     video-&gt;play();
</span><span class="cx">             } else
</span><span class="cx">                 video-&gt;pause();
</span><del>-            event-&gt;setDefaultHandled();
</del><ins>+            keyboardEvent.setDefaultHandled();
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlTextFieldInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TextFieldInputType.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TextFieldInputType.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/TextFieldInputType.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -206,7 +206,8 @@
</span><span class="cx"> 
</span><span class="cx"> bool TextFieldInputType::shouldSubmitImplicitly(Event* event)
</span><span class="cx"> {
</span><del>-    return (event-&gt;type() == eventNames().textInputEvent &amp;&amp; event-&gt;eventInterface() == TextEventInterfaceType &amp;&amp; toTextEvent(event)-&gt;data() == &quot;\n&quot;) || InputType::shouldSubmitImplicitly(event);
</del><ins>+    return (event-&gt;type() == eventNames().textInputEvent &amp;&amp; is&lt;TextEvent&gt;(event) &amp;&amp; downcast&lt;TextEvent&gt;(*event).data() == &quot;\n&quot;)
+        || InputType::shouldSubmitImplicitly(event);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderPtr&lt;RenderElement&gt; TextFieldInputType::createInputRenderer(PassRef&lt;RenderStyle&gt; style)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlElementTypescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/shadow/MediaControlElementTypes.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -196,7 +196,7 @@
</span><span class="cx"> void MediaControlVolumeSliderElement::defaultEventHandler(Event* event)
</span><span class="cx"> {
</span><span class="cx">     // Left button is 0. Rejects mouse events not from left button.
</span><del>-    if (event-&gt;isMouseEvent() &amp;&amp; toMouseEvent(event)-&gt;button())
</del><ins>+    if (is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(*event).button())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!renderer())
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlElementscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlElements.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlElements.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/shadow/MediaControlElements.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -221,8 +221,8 @@
</span><span class="cx"> {
</span><span class="cx">     MediaControlDivElement::defaultEventHandler(event);
</span><span class="cx"> 
</span><del>-    if (event-&gt;isMouseEvent()) {
-        LayoutPoint location = toMouseEvent(event)-&gt;absoluteLocation();
</del><ins>+    if (is&lt;MouseEvent&gt;(event)) {
+        LayoutPoint location = downcast&lt;MouseEvent&gt;(*event).absoluteLocation();
</ins><span class="cx">         if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; event-&gt;target() == this) {
</span><span class="cx">             startDrag(location);
</span><span class="cx">             event-&gt;setDefaultHandled();
</span><span class="lines">@@ -337,12 +337,12 @@
</span><span class="cx"> 
</span><span class="cx"> void MediaControlVolumeSliderContainerElement::defaultEventHandler(Event* event)
</span><span class="cx"> {
</span><del>-    if (!event-&gt;isMouseEvent() || event-&gt;type() != eventNames().mouseoutEvent)
</del><ins>+    if (!is&lt;MouseEvent&gt;(event) || event-&gt;type() != eventNames().mouseoutEvent)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // Poor man's mouseleave event detection.
</span><del>-    MouseEvent* mouseEvent = toMouseEvent(event);
-    EventTarget* relatedTarget = mouseEvent-&gt;relatedTarget();
</del><ins>+    MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
+    EventTarget* relatedTarget = mouseEvent.relatedTarget();
</ins><span class="cx">     if (!relatedTarget || !relatedTarget-&gt;toNode())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -851,7 +851,7 @@
</span><span class="cx"> void MediaControlTimelineElement::defaultEventHandler(Event* event)
</span><span class="cx"> {
</span><span class="cx">     // Left button is 0. Rejects mouse events not from left button.
</span><del>-    if (event-&gt;isMouseEvent() &amp;&amp; toMouseEvent(event)-&gt;button())
</del><ins>+    if (is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(*event).button())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!renderer())
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControls.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControls.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/shadow/MediaControls.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -366,9 +366,9 @@
</span><span class="cx"> 
</span><span class="cx"> bool MediaControls::containsRelatedTarget(Event* event)
</span><span class="cx"> {
</span><del>-    if (!event-&gt;isMouseEvent())
</del><ins>+    if (!is&lt;MouseEvent&gt;(event))
</ins><span class="cx">         return false;
</span><del>-    EventTarget* relatedTarget = toMouseEvent(event)-&gt;relatedTarget();
</del><ins>+    EventTarget* relatedTarget = downcast&lt;MouseEvent&gt;(*event).relatedTarget();
</ins><span class="cx">     if (!relatedTarget)
</span><span class="cx">         return false;
</span><span class="cx">     return contains(relatedTarget-&gt;toNode());
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlsApplecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -588,10 +588,10 @@
</span><span class="cx"> {
</span><span class="cx">     if (event-&gt;type() == eventNames().clickEvent)
</span><span class="cx">         m_mediaControls-&gt;handleClickEvent(event);
</span><del>-    else if ((event-&gt;type() == eventNames().wheelEvent || event-&gt;type() == eventNames().mousewheelEvent) &amp;&amp; event-&gt;eventInterface() == WheelEventInterfaceType) {
-        WheelEvent* wheelEvent = toWheelEvent(event);
-        if (m_mediaControls-&gt;shouldClosedCaptionsContainerPreventPageScrolling(wheelEvent-&gt;wheelDeltaY()))
-            event-&gt;preventDefault();
</del><ins>+    else if ((event-&gt;type() == eventNames().wheelEvent || event-&gt;type() == eventNames().mousewheelEvent) &amp;&amp; is&lt;WheelEvent&gt;(event)) {
+        WheelEvent&amp; wheelEvent = downcast&lt;WheelEvent&gt;(*event);
+        if (m_mediaControls-&gt;shouldClosedCaptionsContainerPreventPageScrolling(wheelEvent.wheelDeltaY()))
+            wheelEvent.preventDefault();
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowSliderThumbElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -333,7 +333,7 @@
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx"> void SliderThumbElement::defaultEventHandler(Event* event)
</span><span class="cx"> {
</span><del>-    if (!event-&gt;isMouseEvent()) {
</del><ins>+    if (!is&lt;MouseEvent&gt;(event)) {
</ins><span class="cx">         HTMLDivElement::defaultEventHandler(event);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -347,9 +347,9 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    MouseEvent* mouseEvent = toMouseEvent(event);
-    bool isLeftButton = mouseEvent-&gt;button() == LeftButton;
-    const AtomicString&amp; eventType = event-&gt;type();
</del><ins>+    MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
+    bool isLeftButton = mouseEvent.button() == LeftButton;
+    const AtomicString&amp; eventType = mouseEvent.type();
</ins><span class="cx"> 
</span><span class="cx">     // We intentionally do not call event-&gt;setDefaultHandled() here because
</span><span class="cx">     // MediaControlTimelineElement::defaultEventHandler() wants to handle these
</span><span class="lines">@@ -362,11 +362,11 @@
</span><span class="cx">         return;
</span><span class="cx">     } else if (eventType == eventNames().mousemoveEvent) {
</span><span class="cx">         if (m_inDragMode)
</span><del>-            setPositionFromPoint(mouseEvent-&gt;absoluteLocation());
</del><ins>+            setPositionFromPoint(mouseEvent.absoluteLocation());
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    HTMLDivElement::defaultEventHandler(event);
</del><ins>+    HTMLDivElement::defaultEventHandler(&amp;mouseEvent);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowSpinButtonElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/SpinButtonElement.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/SpinButtonElement.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/shadow/SpinButtonElement.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx"> 
</span><span class="cx"> void SpinButtonElement::defaultEventHandler(Event* event)
</span><span class="cx"> {
</span><del>-    if (!event-&gt;isMouseEvent()) {
</del><ins>+    if (!is&lt;MouseEvent&gt;(event)) {
</ins><span class="cx">         if (!event-&gt;defaultHandled())
</span><span class="cx">             HTMLDivElement::defaultEventHandler(event);
</span><span class="cx">         return;
</span><span class="lines">@@ -86,9 +86,9 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    MouseEvent* mouseEvent = toMouseEvent(event);
-    IntPoint local = roundedIntPoint(box-&gt;absoluteToLocal(mouseEvent-&gt;absoluteLocation(), UseTransforms));
-    if (mouseEvent-&gt;type() == eventNames().mousedownEvent &amp;&amp; mouseEvent-&gt;button() == LeftButton) {
</del><ins>+    MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
+    IntPoint local = roundedIntPoint(box-&gt;absoluteToLocal(mouseEvent.absoluteLocation(), UseTransforms));
+    if (mouseEvent.type() == eventNames().mousedownEvent &amp;&amp; mouseEvent.button() == LeftButton) {
</ins><span class="cx">         if (box-&gt;pixelSnappedBorderBoxRect().contains(local)) {
</span><span class="cx">             // The following functions of HTMLInputElement may run JavaScript
</span><span class="cx">             // code which detaches this shadow node. We need to take a reference
</span><span class="lines">@@ -107,11 +107,11 @@
</span><span class="cx">                     doStepAction(m_upDownState == Up ? 1 : -1);
</span><span class="cx">                 }
</span><span class="cx">             }
</span><del>-            event-&gt;setDefaultHandled();
</del><ins>+            mouseEvent.setDefaultHandled();
</ins><span class="cx">         }
</span><del>-    } else if (mouseEvent-&gt;type() == eventNames().mouseupEvent &amp;&amp; mouseEvent-&gt;button() == LeftButton)
</del><ins>+    } else if (mouseEvent.type() == eventNames().mouseupEvent &amp;&amp; mouseEvent.button() == LeftButton)
</ins><span class="cx">         stopRepeatingTimer();
</span><del>-    else if (event-&gt;type() == eventNames().mousemoveEvent) {
</del><ins>+    else if (mouseEvent.type() == eventNames().mousemoveEvent) {
</ins><span class="cx">         if (box-&gt;pixelSnappedBorderBoxRect().contains(local)) {
</span><span class="cx">             if (!m_capturing) {
</span><span class="cx">                 if (Frame* frame = document().frame()) {
</span><span class="lines">@@ -131,8 +131,8 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!event-&gt;defaultHandled())
-        HTMLDivElement::defaultEventHandler(event);
</del><ins>+    if (!mouseEvent.defaultHandled())
+        HTMLDivElement::defaultEventHandler(&amp;mouseEvent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SpinButtonElement::willOpenPopup()
</span><span class="lines">@@ -146,7 +146,7 @@
</span><span class="cx">     if (!renderBox())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (event-&gt;eventInterface() != WheelEventInterfaceType)
</del><ins>+    if (!is&lt;WheelEvent&gt;(event))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_spinButtonOwner)
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx">     if (!m_spinButtonOwner-&gt;shouldSpinButtonRespondToWheelEvents())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    doStepAction(toWheelEvent(event)-&gt;wheelDeltaY());
</del><ins>+    doStepAction(downcast&lt;WheelEvent&gt;(*event).wheelDeltaY());
</ins><span class="cx">     event-&gt;setDefaultHandled();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowTextControlInnerElementscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx"> {
</span><span class="cx">     // On mousedown, bring up a menu, if needed
</span><span class="cx">     HTMLInputElement* input = downcast&lt;HTMLInputElement&gt;(shadowHost());
</span><del>-    if (input &amp;&amp; event-&gt;type() == eventNames().mousedownEvent &amp;&amp; event-&gt;isMouseEvent() &amp;&amp; toMouseEvent(event)-&gt;button() == LeftButton) {
</del><ins>+    if (input &amp;&amp; event-&gt;type() == eventNames().mousedownEvent &amp;&amp; is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(*event).button() == LeftButton) {
</ins><span class="cx">         input-&gt;focus();
</span><span class="cx">         input-&gt;select();
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="lines">@@ -199,7 +199,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; event-&gt;isMouseEvent() &amp;&amp; toMouseEvent(event)-&gt;button() == LeftButton) {
</del><ins>+    if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(*event).button() == LeftButton) {
</ins><span class="cx">         if (renderer() &amp;&amp; renderer()-&gt;visibleToHitTesting()) {
</span><span class="cx">             if (Frame* frame = document().frame()) {
</span><span class="cx">                 frame-&gt;eventHandler().setCapturingMouseEventsElement(this);
</span><span class="lines">@@ -210,7 +210,7 @@
</span><span class="cx">         input-&gt;select();
</span><span class="cx">         event-&gt;setDefaultHandled();
</span><span class="cx">     }
</span><del>-    if (event-&gt;type() == eventNames().mouseupEvent &amp;&amp; event-&gt;isMouseEvent() &amp;&amp; toMouseEvent(event)-&gt;button() == LeftButton) {
</del><ins>+    if (event-&gt;type() == eventNames().mouseupEvent &amp;&amp; is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(*event).button() == LeftButton) {
</ins><span class="cx">         if (m_capturing) {
</span><span class="cx">             if (Frame* frame = document().frame()) {
</span><span class="cx">                 frame-&gt;eventHandler().setCapturingMouseEventsElement(nullptr);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorFrontendHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -284,12 +284,12 @@
</span><span class="cx"> void InspectorFrontendHost::dispatchEventAsContextMenuEvent(Event* event)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS) &amp;&amp; USE(ACCESSIBILITY_CONTEXT_MENUS)
</span><del>-    if (!event || !event-&gt;isMouseEvent())
</del><ins>+    if (!event || !is&lt;MouseEvent&gt;(event))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     Frame* frame = event-&gt;target()-&gt;toNode()-&gt;document().frame();
</span><del>-    MouseEvent* mouseEvent = toMouseEvent(event);
-    IntPoint mousePoint = IntPoint(mouseEvent-&gt;clientX(), mouseEvent-&gt;clientY());
</del><ins>+    MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
+    IntPoint mousePoint = IntPoint(mouseEvent.clientX(), mouseEvent.clientY());
</ins><span class="cx"> 
</span><span class="cx">     m_frontendPage-&gt;contextMenuController().showContextMenuAt(frame, mousePoint);
</span><span class="cx"> #else
</span></span></pre></div>
<a id="trunkSourceWebCorepageContextMenuControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ContextMenuController.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ContextMenuController.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/page/ContextMenuController.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -150,10 +150,10 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(event);
</span><span class="cx">     
</span><del>-    if (!event-&gt;isMouseEvent())
</del><ins>+    if (!is&lt;MouseEvent&gt;(event))
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    MouseEvent&amp; mouseEvent = toMouseEvent(*event);
</del><ins>+    MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
</ins><span class="cx">     HitTestResult result(mouseEvent.absoluteLocation());
</span><span class="cx"> 
</span><span class="cx">     Node* node = event-&gt;target()-&gt;toNode();
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventHandlercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventHandler.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventHandler.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/page/EventHandler.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -3523,7 +3523,7 @@
</span><span class="cx"> {
</span><span class="cx">     // Platforms should differentiate real commands like selectAll from text input in disguise (like insertNewline),
</span><span class="cx">     // and avoid dispatching text input events from keydown default handlers.
</span><del>-    ASSERT(!underlyingEvent || !underlyingEvent-&gt;isKeyboardEvent() || toKeyboardEvent(underlyingEvent)-&gt;type() == eventNames().keypressEvent);
</del><ins>+    ASSERT(!underlyingEvent || !is&lt;KeyboardEvent&gt;(underlyingEvent) || downcast&lt;KeyboardEvent&gt;(*underlyingEvent).type() == eventNames().keypressEvent);
</ins><span class="cx"> 
</span><span class="cx">     EventTarget* target;
</span><span class="cx">     if (underlyingEvent)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderEmbeddedObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -590,9 +590,9 @@
</span><span class="cx">         &amp;&amp; indicatorRect.contains(point);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderEmbeddedObject::isInUnavailablePluginIndicator(MouseEvent* event) const
</del><ins>+bool RenderEmbeddedObject::isInUnavailablePluginIndicator(const MouseEvent&amp; event) const
</ins><span class="cx"> {
</span><del>-    return isInUnavailablePluginIndicator(absoluteToLocal(event-&gt;absoluteLocation(), UseTransforms));
</del><ins>+    return isInUnavailablePluginIndicator(absoluteToLocal(event.absoluteLocation(), UseTransforms));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderEmbeddedObject::handleUnavailablePluginIndicatorEvent(Event* event)
</span><span class="lines">@@ -600,21 +600,21 @@
</span><span class="cx">     if (!shouldUnavailablePluginMessageBeButton(document(), m_pluginUnavailabilityReason))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (!event-&gt;isMouseEvent())
</del><ins>+    if (!is&lt;MouseEvent&gt;(event))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    MouseEvent* mouseEvent = toMouseEvent(event);
</del><ins>+    MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
</ins><span class="cx">     HTMLPlugInElement&amp; element = downcast&lt;HTMLPlugInElement&gt;(frameOwnerElement());
</span><del>-    if (event-&gt;type() == eventNames().mousedownEvent &amp;&amp; toMouseEvent(event)-&gt;button() == LeftButton) {
</del><ins>+    if (mouseEvent.type() == eventNames().mousedownEvent &amp;&amp; mouseEvent.button() == LeftButton) {
</ins><span class="cx">         m_mouseDownWasInUnavailablePluginIndicator = isInUnavailablePluginIndicator(mouseEvent);
</span><span class="cx">         if (m_mouseDownWasInUnavailablePluginIndicator) {
</span><span class="cx">             frame().eventHandler().setCapturingMouseEventsElement(&amp;element);
</span><span class="cx">             element.setIsCapturingMouseEvents(true);
</span><span class="cx">             setUnavailablePluginIndicatorIsPressed(true);
</span><span class="cx">         }
</span><del>-        event-&gt;setDefaultHandled();
</del><ins>+        mouseEvent.setDefaultHandled();
</ins><span class="cx">     }
</span><del>-    if (event-&gt;type() == eventNames().mouseupEvent &amp;&amp; toMouseEvent(event)-&gt;button() == LeftButton) {
</del><ins>+    if (mouseEvent.type() == eventNames().mouseupEvent &amp;&amp; mouseEvent.button() == LeftButton) {
</ins><span class="cx">         if (m_unavailablePluginIndicatorIsPressed) {
</span><span class="cx">             frame().eventHandler().setCapturingMouseEventsElement(nullptr);
</span><span class="cx">             element.setIsCapturingMouseEvents(false);
</span><span class="lines">@@ -627,9 +627,9 @@
</span><span class="cx">         m_mouseDownWasInUnavailablePluginIndicator = false;
</span><span class="cx">         event-&gt;setDefaultHandled();
</span><span class="cx">     }
</span><del>-    if (event-&gt;type() == eventNames().mousemoveEvent) {
</del><ins>+    if (mouseEvent.type() == eventNames().mousemoveEvent) {
</ins><span class="cx">         setUnavailablePluginIndicatorIsPressed(m_mouseDownWasInUnavailablePluginIndicator &amp;&amp; isInUnavailablePluginIndicator(mouseEvent));
</span><del>-        event-&gt;setDefaultHandled();
</del><ins>+        mouseEvent.setDefaultHandled();
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderEmbeddedObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderEmbeddedObject.h (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderEmbeddedObject.h        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/rendering/RenderEmbeddedObject.h        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx">     virtual bool logicalScroll(ScrollLogicalDirection, ScrollGranularity, float multiplier, Element** stopElement) override final;
</span><span class="cx"> 
</span><span class="cx">     void setUnavailablePluginIndicatorIsPressed(bool);
</span><del>-    bool isInUnavailablePluginIndicator(MouseEvent*) const;
</del><ins>+    bool isInUnavailablePluginIndicator(const MouseEvent&amp;) const;
</ins><span class="cx">     bool isInUnavailablePluginIndicator(const FloatPoint&amp;) const;
</span><span class="cx">     bool getReplacementTextGeometry(const LayoutPoint&amp; accumulatedOffset, FloatRect&amp; contentRect, FloatRect&amp; indicatorRect, FloatRect&amp; replacementTextRect, FloatRect&amp; arrowRect, Font&amp;, TextRun&amp;, float&amp; textWidth) const;
</span><span class="cx">     LayoutRect unavailablePluginIndicatorBounds(const LayoutPoint&amp;) const;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderSnapshottedPlugIncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -155,10 +155,10 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderSnapshottedPlugIn::handleEvent(Event* event)
</span><span class="cx"> {
</span><del>-    if (!event-&gt;isMouseEvent())
</del><ins>+    if (!is&lt;MouseEvent&gt;(event))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    MouseEvent* mouseEvent = toMouseEvent(event);
</del><ins>+    MouseEvent&amp; mouseEvent = downcast&lt;MouseEvent&gt;(*event);
</ins><span class="cx"> 
</span><span class="cx">     // If we're a snapshotted plugin, we want to make sure we activate on
</span><span class="cx">     // clicks even if the page is preventing our default behaviour. Otherwise
</span><span class="lines">@@ -168,20 +168,20 @@
</span><span class="cx">     // event. The code below is not completely foolproof, but the worst that
</span><span class="cx">     // could happen is that a snapshotted plugin restarts.
</span><span class="cx"> 
</span><del>-    if (event-&gt;type() == eventNames().mouseoutEvent)
</del><ins>+    if (mouseEvent.type() == eventNames().mouseoutEvent)
</ins><span class="cx">         m_isPotentialMouseActivation = false;
</span><span class="cx"> 
</span><del>-    if (mouseEvent-&gt;button() != LeftButton)
</del><ins>+    if (mouseEvent.button() != LeftButton)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (event-&gt;type() == eventNames().clickEvent || (m_isPotentialMouseActivation &amp;&amp; event-&gt;type() == eventNames().mouseupEvent)) {
</del><ins>+    if (mouseEvent.type() == eventNames().clickEvent || (m_isPotentialMouseActivation &amp;&amp; mouseEvent.type() == eventNames().mouseupEvent)) {
</ins><span class="cx">         m_isPotentialMouseActivation = false;
</span><del>-        bool clickWasOnOverlay = plugInImageElement().partOfSnapshotOverlay(event-&gt;target()-&gt;toNode());
-        plugInImageElement().userDidClickSnapshot(mouseEvent, !clickWasOnOverlay);
-        event-&gt;setDefaultHandled();
-    } else if (event-&gt;type() == eventNames().mousedownEvent) {
</del><ins>+        bool clickWasOnOverlay = plugInImageElement().partOfSnapshotOverlay(mouseEvent.target()-&gt;toNode());
+        plugInImageElement().userDidClickSnapshot(&amp;mouseEvent, !clickWasOnOverlay);
+        mouseEvent.setDefaultHandled();
+    } else if (mouseEvent.type() == eventNames().mousedownEvent) {
</ins><span class="cx">         m_isPotentialMouseActivation = true;
</span><del>-        event-&gt;setDefaultHandled();
</del><ins>+        mouseEvent.setDefaultHandled();
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebKit2/ChangeLog        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-10-01  Christophe Dumez  &lt;cdumez@apple.com&gt;
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Event classes
+        https://bugs.webkit.org/show_bug.cgi?id=137284
+
+        Reviewed by Andreas Kling.
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Event classes.
+
+        * WebProcess/Plugins/PluginView.cpp:
+        (WebKit::PluginView::handleEvent):
+
</ins><span class="cx"> 2014-10-01  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] &lt;select&gt; with &lt;optgroup&gt; may change initial selected option when assisted
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPluginViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp (174177 => 174178)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp        2014-10-01 22:12:30 UTC (rev 174177)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp        2014-10-01 22:29:14 UTC (rev 174178)
</span><span class="lines">@@ -892,8 +892,8 @@
</span><span class="cx"> 
</span><span class="cx">     const WebEvent* currentEvent = WebPage::currentEvent();
</span><span class="cx">     std::unique_ptr&lt;WebEvent&gt; simulatedWebEvent;
</span><del>-    if (event-&gt;isMouseEvent() &amp;&amp; toMouseEvent(event)-&gt;isSimulated()) {
-        simulatedWebEvent = createWebEvent(toMouseEvent(event));
</del><ins>+    if (is&lt;MouseEvent&gt;(event) &amp;&amp; downcast&lt;MouseEvent&gt;(*event).isSimulated()) {
+        simulatedWebEvent = createWebEvent(downcast&lt;MouseEvent&gt;(event));
</ins><span class="cx">         currentEvent = simulatedWebEvent.get();
</span><span class="cx">     }
</span><span class="cx">     if (!currentEvent)
</span></span></pre>
</div>
</div>

</body>
</html>