<!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>[174506] 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/174506">174506</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-10-09 09:45:32 -0700 (Thu, 09 Oct 2014)</dd>
</dl>

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

Reviewed by Darin Adler.

Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses and clean up the
surrounding code.

Source/WebCore:

No new tests, no behavior change.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::getOrCreate):
* accessibility/AccessibilityObject.cpp:
(WebCore::appendAccessibilityObject):
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::visiblePositionForPoint):
* accessibility/AccessibilityScrollView.cpp:
(WebCore::AccessibilityScrollView::webAreaObject):
(WebCore::AccessibilityScrollView::documentFrameView):
(WebCore::AccessibilityScrollView::parentObject):
(WebCore::AccessibilityScrollView::parentObjectIfExists):
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginScriptObjectFromPluginViewBase):
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::appendFormData):
* html/HTMLPlugInElement.cpp:
(WebCore::HTMLPlugInElement::canProcessDrag):
(WebCore::HTMLPlugInElement::isKeyboardFocusable):
(WebCore::HTMLPlugInElement::isUserObservable):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::checkSizeChangeForSnapshotting):
(WebCore::HTMLPlugInImageElement::subframeLoaderDidCreatePlugIn):
* html/HTMLPlugInImageElement.h:
* loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::loadPlugin):
* page/DragController.cpp:
(WebCore::DragController::operationForLoad):
* page/EventHandler.cpp:
(WebCore::EventHandler::subframeForTargetNode):
(WebCore::EventHandler::handleWheelEvent):
* page/EventHandler.h:
* page/Frame.cpp:
(WebCore::Frame::frameForWidget):
* page/FrameView.cpp:
(WebCore::FrameView::hasCustomScrollbars):
(WebCore::FrameView::updateLayoutAndStyleIfNeededRecursive):
(WebCore::FrameView::convertToContainingView):
(WebCore::FrameView::convertFromContainingView):
(WebCore::FrameView::removeChild):
* page/FrameView.h:
* page/Page.cpp:
(WebCore::Page::pluginViews):
* page/efl/EventHandlerEfl.cpp:
(WebCore::EventHandler::passWheelEventToWidget):
* page/gtk/EventHandlerGtk.cpp:
(WebCore::EventHandler::passWheelEventToWidget):
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::passWheelEventToWidget):
* page/mac/EventHandlerMac.mm:
(WebCore::EventHandler::passWheelEventToWidget):
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::computeNonFastScrollableRegion):
* page/win/EventHandlerWin.cpp:
(WebCore::EventHandler::passWheelEventToWidget):
* platform/ScrollView.cpp:
(WebCore::ScrollView::removeChild):
(WebCore::ScrollView::setHasHorizontalScrollbar):
(WebCore::ScrollView::setHasVerticalScrollbar):
* platform/ScrollView.h:
* platform/Scrollbar.cpp:
(WebCore::Scrollbar::root):
Uninline as root() because Widget::root() returns a FrameView now and
it is impossible to include FrameView.h in Scrollbar.h without causing
a cycle.

* platform/Scrollbar.h:
* platform/Widget.cpp:
(WebCore::Widget::root):
Use tighter typing and return a FrameView instead of a ScrollView.

(WebCore::Widget::removeFromParent):
* platform/Widget.h:
* platform/efl/WidgetEfl.cpp:
(WebCore::Widget::setCursor):
* platform/gtk/PlatformScreenGtk.cpp:
* platform/gtk/WidgetGtk.cpp:
(WebCore::Widget::setCursor):
* platform/mac/PlatformScreenMac.mm:
(WebCore::displayFromWidget):
* platform/mac/WidgetMac.mm:
(WebCore::Widget::setCursor):
* platform/win/WidgetWin.cpp:
(WebCore::Widget::setCursor):
* plugins/PluginViewBase.h:
* plugins/win/PluginViewWin.cpp:
(WebCore::PluginView::updatePluginWidget):
(WebCore::PluginView::paintIntoTransformedContext):
(WebCore::PluginView::paintWindowedPluginIntoContext):
(WebCore::PluginView::paint):
(WebCore::PluginView::handleMouseEvent):
(WebCore::PluginView::setNPWindowRect):
(WebCore::PluginView::snapshot):
* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::allowsAcceleratedCompositing):
(WebCore::RenderEmbeddedObject::nodeAtPoint):
(WebCore::RenderEmbeddedObject::scroll):
* rendering/RenderFrameBase.h:
(WebCore::RenderFrameBase::childView):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::layerWillBeDestroyed):
(WebCore::RenderLayerBacking::updateConfiguration):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::shouldPropagateCompositingToEnclosingFrame):
* rendering/RenderTreeAsText.cpp:
(WebCore::write):
* rendering/RenderWidget.cpp:
(WebCore::WidgetHierarchyUpdatesSuspensionScope::moveWidgets):
(WebCore::RenderWidget::paintContents):
(WebCore::RenderWidget::setOverlapTestResult):
(WebCore::RenderWidget::updateWidgetPosition):
(WebCore::RenderWidget::nodeAtPoint):
(WebCore::RenderWidget::embeddedContentBox):

Source/WebKit/mac:

* WebView/WebRenderNode.mm:
(copyRenderNode):
* WebView/WebView.mm:
(-[WebView _addScrollerDashboardRegionsForFrameView:dashboardRegions:]):

Source/WebKit/win:

* WebCoreSupport/EmbeddedWidget.cpp:
(EmbeddedWidget::frameRectsChanged):

Source/WebKit2:

* Shared/WebRenderObject.cpp:
(WebKit::WebRenderObject::WebRenderObject):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAXObjectCachecpp">trunk/Source/WebCore/accessibility/AXObjectCache.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityScrollViewcpp">trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp">trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLObjectElementcpp">trunk/Source/WebCore/html/HTMLObjectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLPlugInElementcpp">trunk/Source/WebCore/html/HTMLPlugInElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLPlugInImageElementcpp">trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLPlugInImageElementh">trunk/Source/WebCore/html/HTMLPlugInImageElement.h</a></li>
<li><a href="#trunkSourceWebCoreloaderSubframeLoadercpp">trunk/Source/WebCore/loader/SubframeLoader.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDragControllercpp">trunk/Source/WebCore/page/DragController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageEventHandlercpp">trunk/Source/WebCore/page/EventHandler.cpp</a></li>
<li><a href="#trunkSourceWebCorepageEventHandlerh">trunk/Source/WebCore/page/EventHandler.h</a></li>
<li><a href="#trunkSourceWebCorepageFramecpp">trunk/Source/WebCore/page/Frame.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewcpp">trunk/Source/WebCore/page/FrameView.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewh">trunk/Source/WebCore/page/FrameView.h</a></li>
<li><a href="#trunkSourceWebCorepagePagecpp">trunk/Source/WebCore/page/Page.cpp</a></li>
<li><a href="#trunkSourceWebCorepageeflEventHandlerEflcpp">trunk/Source/WebCore/page/efl/EventHandlerEfl.cpp</a></li>
<li><a href="#trunkSourceWebCorepagegtkEventHandlerGtkcpp">trunk/Source/WebCore/page/gtk/EventHandlerGtk.cpp</a></li>
<li><a href="#trunkSourceWebCorepageiosEventHandlerIOSmm">trunk/Source/WebCore/page/ios/EventHandlerIOS.mm</a></li>
<li><a href="#trunkSourceWebCorepagemacEventHandlerMacmm">trunk/Source/WebCore/page/mac/EventHandlerMac.mm</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingCoordinatorcpp">trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp</a></li>
<li><a href="#trunkSourceWebCorepagewinEventHandlerWincpp">trunk/Source/WebCore/page/win/EventHandlerWin.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollViewcpp">trunk/Source/WebCore/platform/ScrollView.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollViewh">trunk/Source/WebCore/platform/ScrollView.h</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollbarcpp">trunk/Source/WebCore/platform/Scrollbar.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollbarh">trunk/Source/WebCore/platform/Scrollbar.h</a></li>
<li><a href="#trunkSourceWebCoreplatformWidgetcpp">trunk/Source/WebCore/platform/Widget.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformWidgeth">trunk/Source/WebCore/platform/Widget.h</a></li>
<li><a href="#trunkSourceWebCoreplatformeflWidgetEflcpp">trunk/Source/WebCore/platform/efl/WidgetEfl.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkPlatformScreenGtkcpp">trunk/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkWidgetGtkcpp">trunk/Source/WebCore/platform/gtk/WidgetGtk.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmacPlatformScreenMacmm">trunk/Source/WebCore/platform/mac/PlatformScreenMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacWidgetMacmm">trunk/Source/WebCore/platform/mac/WidgetMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformwinWidgetWincpp">trunk/Source/WebCore/platform/win/WidgetWin.cpp</a></li>
<li><a href="#trunkSourceWebCorepluginsPluginViewBaseh">trunk/Source/WebCore/plugins/PluginViewBase.h</a></li>
<li><a href="#trunkSourceWebCorepluginswinPluginViewWincpp">trunk/Source/WebCore/plugins/win/PluginViewWin.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderEmbeddedObjectcpp">trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFrameBaseh">trunk/Source/WebCore/rendering/RenderFrameBase.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerBackingcpp">trunk/Source/WebCore/rendering/RenderLayerBacking.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerCompositorcpp">trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTreeAsTextcpp">trunk/Source/WebCore/rendering/RenderTreeAsText.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderWidgetcpp">trunk/Source/WebCore/rendering/RenderWidget.cpp</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebRenderNodemm">trunk/Source/WebKit/mac/WebView/WebRenderNode.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebViewmm">trunk/Source/WebKit/mac/WebView/WebView.mm</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportEmbeddedWidgetcpp">trunk/Source/WebKit/win/WebCoreSupport/EmbeddedWidget.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedWebRenderObjectcpp">trunk/Source/WebKit2/Shared/WebRenderObject.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/ChangeLog        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -1,3 +1,128 @@
</span><ins>+2014-10-09  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=137549
+
+        Reviewed by Darin Adler.
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses and clean up the
+        surrounding code.
+
+        No new tests, no behavior change.
+
+        * accessibility/AXObjectCache.cpp:
+        (WebCore::AXObjectCache::getOrCreate):
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::appendAccessibilityObject):
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::visiblePositionForPoint):
+        * accessibility/AccessibilityScrollView.cpp:
+        (WebCore::AccessibilityScrollView::webAreaObject):
+        (WebCore::AccessibilityScrollView::documentFrameView):
+        (WebCore::AccessibilityScrollView::parentObject):
+        (WebCore::AccessibilityScrollView::parentObjectIfExists):
+        * bindings/js/JSPluginElementFunctions.cpp:
+        (WebCore::pluginScriptObjectFromPluginViewBase):
+        * html/HTMLObjectElement.cpp:
+        (WebCore::HTMLObjectElement::appendFormData):
+        * html/HTMLPlugInElement.cpp:
+        (WebCore::HTMLPlugInElement::canProcessDrag):
+        (WebCore::HTMLPlugInElement::isKeyboardFocusable):
+        (WebCore::HTMLPlugInElement::isUserObservable):
+        * html/HTMLPlugInImageElement.cpp:
+        (WebCore::HTMLPlugInImageElement::checkSizeChangeForSnapshotting):
+        (WebCore::HTMLPlugInImageElement::subframeLoaderDidCreatePlugIn):
+        * html/HTMLPlugInImageElement.h:
+        * loader/SubframeLoader.cpp:
+        (WebCore::SubframeLoader::loadPlugin):
+        * page/DragController.cpp:
+        (WebCore::DragController::operationForLoad):
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::subframeForTargetNode):
+        (WebCore::EventHandler::handleWheelEvent):
+        * page/EventHandler.h:
+        * page/Frame.cpp:
+        (WebCore::Frame::frameForWidget):
+        * page/FrameView.cpp:
+        (WebCore::FrameView::hasCustomScrollbars):
+        (WebCore::FrameView::updateLayoutAndStyleIfNeededRecursive):
+        (WebCore::FrameView::convertToContainingView):
+        (WebCore::FrameView::convertFromContainingView):
+        (WebCore::FrameView::removeChild):
+        * page/FrameView.h:
+        * page/Page.cpp:
+        (WebCore::Page::pluginViews):
+        * page/efl/EventHandlerEfl.cpp:
+        (WebCore::EventHandler::passWheelEventToWidget):
+        * page/gtk/EventHandlerGtk.cpp:
+        (WebCore::EventHandler::passWheelEventToWidget):
+        * page/ios/EventHandlerIOS.mm:
+        (WebCore::EventHandler::passWheelEventToWidget):
+        * page/mac/EventHandlerMac.mm:
+        (WebCore::EventHandler::passWheelEventToWidget):
+        * page/scrolling/ScrollingCoordinator.cpp:
+        (WebCore::ScrollingCoordinator::computeNonFastScrollableRegion):
+        * page/win/EventHandlerWin.cpp:
+        (WebCore::EventHandler::passWheelEventToWidget):
+        * platform/ScrollView.cpp:
+        (WebCore::ScrollView::removeChild):
+        (WebCore::ScrollView::setHasHorizontalScrollbar):
+        (WebCore::ScrollView::setHasVerticalScrollbar):
+        * platform/ScrollView.h:
+        * platform/Scrollbar.cpp:
+        (WebCore::Scrollbar::root):
+        Uninline as root() because Widget::root() returns a FrameView now and
+        it is impossible to include FrameView.h in Scrollbar.h without causing
+        a cycle.
+
+        * platform/Scrollbar.h:
+        * platform/Widget.cpp:
+        (WebCore::Widget::root):
+        Use tighter typing and return a FrameView instead of a ScrollView.
+
+        (WebCore::Widget::removeFromParent):
+        * platform/Widget.h:
+        * platform/efl/WidgetEfl.cpp:
+        (WebCore::Widget::setCursor):
+        * platform/gtk/PlatformScreenGtk.cpp:
+        * platform/gtk/WidgetGtk.cpp:
+        (WebCore::Widget::setCursor):
+        * platform/mac/PlatformScreenMac.mm:
+        (WebCore::displayFromWidget):
+        * platform/mac/WidgetMac.mm:
+        (WebCore::Widget::setCursor):
+        * platform/win/WidgetWin.cpp:
+        (WebCore::Widget::setCursor):
+        * plugins/PluginViewBase.h:
+        * plugins/win/PluginViewWin.cpp:
+        (WebCore::PluginView::updatePluginWidget):
+        (WebCore::PluginView::paintIntoTransformedContext):
+        (WebCore::PluginView::paintWindowedPluginIntoContext):
+        (WebCore::PluginView::paint):
+        (WebCore::PluginView::handleMouseEvent):
+        (WebCore::PluginView::setNPWindowRect):
+        (WebCore::PluginView::snapshot):
+        * rendering/RenderEmbeddedObject.cpp:
+        (WebCore::RenderEmbeddedObject::allowsAcceleratedCompositing):
+        (WebCore::RenderEmbeddedObject::nodeAtPoint):
+        (WebCore::RenderEmbeddedObject::scroll):
+        * rendering/RenderFrameBase.h:
+        (WebCore::RenderFrameBase::childView):
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::layerWillBeDestroyed):
+        (WebCore::RenderLayerBacking::updateConfiguration):
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::shouldPropagateCompositingToEnclosingFrame):
+        * rendering/RenderTreeAsText.cpp:
+        (WebCore::write):
+        * rendering/RenderWidget.cpp:
+        (WebCore::WidgetHierarchyUpdatesSuspensionScope::moveWidgets):
+        (WebCore::RenderWidget::paintContents):
+        (WebCore::RenderWidget::setOverlapTestResult):
+        (WebCore::RenderWidget::updateWidgetPosition):
+        (WebCore::RenderWidget::nodeAtPoint):
+        (WebCore::RenderWidget::embeddedContentBox):
+
</ins><span class="cx"> 2014-10-09  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Layering violation: MediaPlayer should not reference/use FrameView
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAXObjectCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AXObjectCache.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AXObjectCache.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/accessibility/AXObjectCache.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -342,11 +342,11 @@
</span><span class="cx">     if (AccessibilityObject* obj = get(widget))
</span><span class="cx">         return obj;
</span><span class="cx">     
</span><del>-    RefPtr&lt;AccessibilityObject&gt; newObj = nullptr;
-    if (widget-&gt;isFrameView())
-        newObj = AccessibilityScrollView::create(toScrollView(widget));
-    else if (widget-&gt;isScrollbar())
-        newObj = AccessibilityScrollbar::create(toScrollbar(widget));
</del><ins>+    RefPtr&lt;AccessibilityObject&gt; newObj;
+    if (is&lt;ScrollView&gt;(*widget))
+        newObj = AccessibilityScrollView::create(downcast&lt;ScrollView&gt;(widget));
+    else if (is&lt;Scrollbar&gt;(*widget))
+        newObj = AccessibilityScrollbar::create(downcast&lt;Scrollbar&gt;(widget));
</ins><span class="cx"> 
</span><span class="cx">     // Will crash later if we have two objects for the same widget.
</span><span class="cx">     ASSERT(!get(widget));
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -484,14 +484,14 @@
</span><span class="cx">     // Find the next descendant of this attachment object so search can continue through frames.
</span><span class="cx">     if (object-&gt;isAttachment()) {
</span><span class="cx">         Widget* widget = object-&gt;widgetForAttachmentView();
</span><del>-        if (!widget || !widget-&gt;isFrameView())
</del><ins>+        if (!is&lt;FrameView&gt;(widget))
</ins><span class="cx">             return;
</span><span class="cx">         
</span><del>-        Document* doc = toFrameView(widget)-&gt;frame().document();
-        if (!doc || !doc-&gt;hasLivingRenderTree())
</del><ins>+        Document* document = downcast&lt;FrameView&gt;(*widget).frame().document();
+        if (!document || !document-&gt;hasLivingRenderTree())
</ins><span class="cx">             return;
</span><span class="cx">         
</span><del>-        object = object-&gt;axObjectCache()-&gt;getOrCreate(doc);
</del><ins>+        object = object-&gt;axObjectCache()-&gt;getOrCreate(document);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (object)
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -2007,12 +2007,12 @@
</span><span class="cx"> 
</span><span class="cx">         // descend into widget (FRAME, IFRAME, OBJECT...)
</span><span class="cx">         Widget* widget = toRenderWidget(renderer)-&gt;widget();
</span><del>-        if (!widget || !widget-&gt;isFrameView())
</del><ins>+        if (!is&lt;FrameView&gt;(widget))
</ins><span class="cx">             break;
</span><del>-        Frame&amp; frame = toFrameView(widget)-&gt;frame();
</del><ins>+        Frame&amp; frame = downcast&lt;FrameView&gt;(*widget).frame();
</ins><span class="cx">         renderView = frame.document()-&gt;renderView();
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-        frameView = toFrameView(widget);
</del><ins>+        frameView = downcast&lt;FrameView&gt;(widget);
</ins><span class="cx"> #endif
</span><span class="cx">     }
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityScrollViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -189,15 +189,15 @@
</span><span class="cx"> 
</span><span class="cx"> AccessibilityObject* AccessibilityScrollView::webAreaObject() const
</span><span class="cx"> {
</span><del>-    if (!m_scrollView || !m_scrollView-&gt;isFrameView())
</del><ins>+    if (!is&lt;FrameView&gt;(m_scrollView))
</ins><span class="cx">         return nullptr;
</span><span class="cx">     
</span><del>-    Document* doc = toFrameView(m_scrollView)-&gt;frame().document();
-    if (!doc || !doc-&gt;hasLivingRenderTree())
</del><ins>+    Document* document = downcast&lt;FrameView&gt;(*m_scrollView).frame().document();
+    if (!document || !document-&gt;hasLivingRenderTree())
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     if (AXObjectCache* cache = axObjectCache())
</span><del>-        return cache-&gt;getOrCreate(doc);
</del><ins>+        return cache-&gt;getOrCreate(document);
</ins><span class="cx">     
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="lines">@@ -231,22 +231,22 @@
</span><span class="cx"> 
</span><span class="cx"> FrameView* AccessibilityScrollView::documentFrameView() const
</span><span class="cx"> {
</span><del>-    if (!m_scrollView || !m_scrollView-&gt;isFrameView())
</del><ins>+    if (!is&lt;FrameView&gt;(m_scrollView))
</ins><span class="cx">         return nullptr;
</span><span class="cx">     
</span><del>-    return toFrameView(m_scrollView);
</del><ins>+    return downcast&lt;FrameView&gt;(m_scrollView);
</ins><span class="cx"> }    
</span><span class="cx"> 
</span><span class="cx"> AccessibilityObject* AccessibilityScrollView::parentObject() const
</span><span class="cx"> {
</span><del>-    if (!m_scrollView || !m_scrollView-&gt;isFrameView())
</del><ins>+    if (!is&lt;FrameView&gt;(m_scrollView))
</ins><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     AXObjectCache* cache = axObjectCache();
</span><span class="cx">     if (!cache)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    HTMLFrameOwnerElement* owner = toFrameView(m_scrollView)-&gt;frame().ownerElement();
</del><ins>+    HTMLFrameOwnerElement* owner = downcast&lt;FrameView&gt;(*m_scrollView).frame().ownerElement();
</ins><span class="cx">     if (owner &amp;&amp; owner-&gt;renderer())
</span><span class="cx">         return cache-&gt;getOrCreate(owner);
</span><span class="cx"> 
</span><span class="lines">@@ -255,14 +255,14 @@
</span><span class="cx">     
</span><span class="cx"> AccessibilityObject* AccessibilityScrollView::parentObjectIfExists() const
</span><span class="cx"> {
</span><del>-    if (!m_scrollView || !m_scrollView-&gt;isFrameView())
</del><ins>+    if (!is&lt;FrameView&gt;(m_scrollView))
</ins><span class="cx">         return nullptr;
</span><span class="cx">     
</span><span class="cx">     AXObjectCache* cache = axObjectCache();
</span><span class="cx">     if (!cache)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    HTMLFrameOwnerElement* owner = toFrameView(m_scrollView)-&gt;frame().ownerElement();
</del><ins>+    HTMLFrameOwnerElement* owner = downcast&lt;FrameView&gt;(m_scrollView)-&gt;frame().ownerElement();
</ins><span class="cx">     if (owner &amp;&amp; owner-&gt;renderer())
</span><span class="cx">         return cache-&gt;get(owner);
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -49,14 +49,10 @@
</span><span class="cx"> static JSObject* pluginScriptObjectFromPluginViewBase(HTMLPlugInElement&amp; pluginElement, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx">     Widget* pluginWidget = pluginElement.pluginWidget();
</span><del>-    if (!pluginWidget)
</del><ins>+    if (!is&lt;PluginViewBase&gt;(pluginWidget))
</ins><span class="cx">         return nullptr;
</span><del>-    
-    if (!pluginWidget-&gt;isPluginViewBase())
-        return nullptr;
</del><span class="cx"> 
</span><del>-    PluginViewBase* pluginViewBase = toPluginViewBase(pluginWidget);
-    return pluginViewBase-&gt;scriptObject(globalObject);
</del><ins>+    return downcast&lt;PluginViewBase&gt;(*pluginWidget).scriptObject(globalObject);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static JSObject* pluginScriptObjectFromPluginViewBase(JSHTMLElement* jsHTMLElement)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLObjectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLObjectElement.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLObjectElement.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/html/HTMLObjectElement.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -500,10 +500,10 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     Widget* widget = pluginWidget();
</span><del>-    if (!widget || !widget-&gt;isPluginViewBase())
</del><ins>+    if (!is&lt;PluginViewBase&gt;(widget))
</ins><span class="cx">         return false;
</span><span class="cx">     String value;
</span><del>-    if (!toPluginViewBase(widget)-&gt;getFormValue(value))
</del><ins>+    if (!downcast&lt;PluginViewBase&gt;(*widget).getFormValue(value))
</ins><span class="cx">         return false;
</span><span class="cx">     encoding.appendData(name(), value);
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLPlugInElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLPlugInElement.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLPlugInElement.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/html/HTMLPlugInElement.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool HTMLPlugInElement::canProcessDrag() const
</span><span class="cx"> {
</span><del>-    const PluginViewBase* plugin = pluginWidget() &amp;&amp; pluginWidget()-&gt;isPluginViewBase() ? toPluginViewBase(pluginWidget()) : nullptr;
</del><ins>+    const PluginViewBase* plugin = is&lt;PluginViewBase&gt;(pluginWidget()) ? downcast&lt;PluginViewBase&gt;(pluginWidget()) : nullptr;
</ins><span class="cx">     return plugin ? plugin-&gt;canProcessDrag() : false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -242,10 +242,10 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     Widget* widget = pluginWidget();
</span><del>-    if (!widget || !widget-&gt;isPluginViewBase())
</del><ins>+    if (!is&lt;PluginViewBase&gt;(widget))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return toPluginViewBase(widget)-&gt;supportsKeyboardFocus();
</del><ins>+    return downcast&lt;PluginViewBase&gt;(*widget).supportsKeyboardFocus();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLPlugInElement::isPluginElement() const
</span><span class="lines">@@ -257,17 +257,17 @@
</span><span class="cx"> {
</span><span class="cx">     // No widget - can't be anything to see or hear here.
</span><span class="cx">     Widget* widget = pluginWidget(PluginLoadingPolicy::DoNotLoad);
</span><del>-    if (!widget || !widget-&gt;isPluginViewBase())
</del><ins>+    if (!is&lt;PluginViewBase&gt;(widget))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    PluginViewBase* pluginView = toPluginViewBase(widget);
</del><ins>+    PluginViewBase&amp; pluginView = downcast&lt;PluginViewBase&gt;(*widget);
</ins><span class="cx"> 
</span><span class="cx">     // If audio is playing (or might be) then the plugin is detectable.
</span><del>-    if (pluginView-&gt;audioHardwareActivity() != AudioHardwareActivityType::IsInactive)
</del><ins>+    if (pluginView.audioHardwareActivity() != AudioHardwareActivityType::IsInactive)
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     // If the plugin is visible and not vanishingly small in either dimension it is detectable.
</span><del>-    return pluginView-&gt;isVisible() &amp;&amp; widget-&gt;width() &gt; 2 &amp;&amp; widget-&gt;height() &gt; 2;
</del><ins>+    return pluginView.isVisible() &amp;&amp; pluginView.width() &gt; 2 &amp;&amp; pluginView.height() &gt; 2;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLPlugInElement::supportsFocus() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLPlugInImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -551,8 +551,8 @@
</span><span class="cx">     setDisplayState(WaitingForSnapshot);
</span><span class="cx">     m_snapshotDecision = Snapshotted;
</span><span class="cx">     Widget* widget = pluginWidget();
</span><del>-    if (widget &amp;&amp; widget-&gt;isPluginViewBase())
-        toPluginViewBase(widget)-&gt;beginSnapshottingRunningPlugin();
</del><ins>+    if (is&lt;PluginViewBase&gt;(widget))
+        downcast&lt;PluginViewBase&gt;(*widget).beginSnapshottingRunningPlugin();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline bool is100Percent(Length length)
</span><span class="lines">@@ -725,11 +725,11 @@
</span><span class="cx">     setDisplayState(WaitingForSnapshot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLPlugInImageElement::subframeLoaderDidCreatePlugIn(const Widget* widget)
</del><ins>+void HTMLPlugInImageElement::subframeLoaderDidCreatePlugIn(const Widget&amp; widget)
</ins><span class="cx"> {
</span><span class="cx">     m_plugInWasCreated = true;
</span><span class="cx"> 
</span><del>-    if (widget-&gt;isPluginViewBase() &amp;&amp; toPluginViewBase(widget)-&gt;shouldAlwaysAutoStart()) {
</del><ins>+    if (is&lt;PluginViewBase&gt;(widget) &amp;&amp; downcast&lt;PluginViewBase&gt;(widget).shouldAlwaysAutoStart()) {
</ins><span class="cx">         LOG(Plugins, &quot;%p Plug-in should auto-start, set to play&quot;, this);
</span><span class="cx">         m_snapshotDecision = NeverSnapshot;
</span><span class="cx">         setDisplayState(Playing);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLPlugInImageElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLPlugInImageElement.h (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLPlugInImageElement.h        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/html/HTMLPlugInImageElement.h        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Plug-in URL might not be the same as url() with overriding parameters.
</span><span class="cx">     void subframeLoaderWillCreatePlugIn(const URL&amp; plugInURL);
</span><del>-    void subframeLoaderDidCreatePlugIn(const Widget*);
</del><ins>+    void subframeLoaderDidCreatePlugIn(const Widget&amp;);
</ins><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT void setIsPrimarySnapshottedPlugIn(bool);
</span><span class="cx">     bool partOfSnapshotOverlay(Node*);
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderSubframeLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/SubframeLoader.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/SubframeLoader.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/loader/SubframeLoader.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -409,7 +409,7 @@
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    pluginElement.subframeLoaderDidCreatePlugIn(widget.get());
</del><ins>+    pluginElement.subframeLoaderDidCreatePlugIn(*widget);
</ins><span class="cx">     renderer-&gt;setWidget(widget);
</span><span class="cx">     m_containsPlugins = true;
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="trunkSourceWebCorepageDragControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DragController.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DragController.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/DragController.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -393,19 +393,19 @@
</span><span class="cx"> 
</span><span class="cx"> DragOperation DragController::operationForLoad(DragData&amp; dragData)
</span><span class="cx"> {
</span><del>-    Document* doc = m_page.mainFrame().documentAtPoint(dragData.clientPosition());
</del><ins>+    Document* document = m_page.mainFrame().documentAtPoint(dragData.clientPosition());
</ins><span class="cx"> 
</span><span class="cx">     bool pluginDocumentAcceptsDrags = false;
</span><span class="cx"> 
</span><del>-    if (is&lt;PluginDocument&gt;(doc)) {
-        const Widget* widget = downcast&lt;PluginDocument&gt;(*doc).pluginWidget();
-        const PluginViewBase* pluginView = (widget &amp;&amp; widget-&gt;isPluginViewBase()) ? toPluginViewBase(widget) : nullptr;
</del><ins>+    if (is&lt;PluginDocument&gt;(document)) {
+        const Widget* widget = downcast&lt;PluginDocument&gt;(*document).pluginWidget();
+        const PluginViewBase* pluginView = is&lt;PluginViewBase&gt;(widget) ? downcast&lt;PluginViewBase&gt;(widget) : nullptr;
</ins><span class="cx"> 
</span><span class="cx">         if (pluginView)
</span><span class="cx">             pluginDocumentAcceptsDrags = pluginView-&gt;shouldAllowNavigationFromDrags();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (doc &amp;&amp; (m_didInitiateDrag || (doc-&gt;isPluginDocument() &amp;&amp; !pluginDocumentAcceptsDrags) || doc-&gt;hasEditableStyle()))
</del><ins>+    if (document &amp;&amp; (m_didInitiateDrag || (is&lt;PluginDocument&gt;(*document) &amp;&amp; !pluginDocumentAcceptsDrags) || document-&gt;hasEditableStyle()))
</ins><span class="cx">         return DragOperationNone;
</span><span class="cx">     return dragOperation(dragData);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventHandlercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventHandler.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventHandler.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/EventHandler.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -1251,17 +1251,17 @@
</span><span class="cx"> Frame* EventHandler::subframeForTargetNode(Node* node)
</span><span class="cx"> {
</span><span class="cx">     if (!node)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     auto renderer = node-&gt;renderer();
</span><del>-    if (!renderer || !renderer-&gt;isWidget())
-        return 0;
</del><ins>+    if (!is&lt;RenderWidget&gt;(renderer))
+        return nullptr;
</ins><span class="cx"> 
</span><del>-    Widget* widget = toRenderWidget(renderer)-&gt;widget();
-    if (!widget || !widget-&gt;isFrameView())
-        return 0;
</del><ins>+    Widget* widget = downcast&lt;RenderWidget&gt;(*renderer).widget();
+    if (!is&lt;FrameView&gt;(widget))
+        return nullptr;
</ins><span class="cx"> 
</span><del>-    return &amp;toFrameView(widget)-&gt;frame();
</del><ins>+    return &amp;downcast&lt;FrameView&gt;(*widget).frame();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(CURSOR_SUPPORT)
</span><span class="lines">@@ -2704,9 +2704,9 @@
</span><span class="cx">     if (element) {
</span><span class="cx">         if (isOverWidget) {
</span><span class="cx">             RenderElement* target = element-&gt;renderer();
</span><del>-            if (target &amp;&amp; target-&gt;isWidget()) {
-                Widget* widget = toRenderWidget(target)-&gt;widget();
-                if (widget &amp;&amp; passWheelEventToWidget(event, widget)) {
</del><ins>+            if (is&lt;RenderWidget&gt;(target)) {
+                Widget* widget = downcast&lt;RenderWidget&gt;(*target).widget();
+                if (widget &amp;&amp; passWheelEventToWidget(event, *widget)) {
</ins><span class="cx">                     m_isHandlingWheelEvent = false;
</span><span class="cx">                     if (scrollableArea)
</span><span class="cx">                         scrollableArea-&gt;setScrolledProgrammatically(false);
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventHandlerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventHandler.h (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventHandler.h        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/EventHandler.h        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -394,7 +394,7 @@
</span><span class="cx">     bool passWidgetMouseDownEventToWidget(RenderWidget*);
</span><span class="cx"> 
</span><span class="cx">     bool passMouseDownEventToWidget(Widget*);
</span><del>-    bool passWheelEventToWidget(const PlatformWheelEvent&amp;, Widget*);
</del><ins>+    bool passWheelEventToWidget(const PlatformWheelEvent&amp;, Widget&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void defaultSpaceEventHandler(KeyboardEvent*);
</span><span class="cx">     void defaultBackspaceEventHandler(KeyboardEvent*);
</span></span></pre></div>
<a id="trunkSourceWebCorepageFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Frame.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Frame.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/Frame.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -757,8 +757,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Assume all widgets are either a FrameView or owned by a RenderWidget.
</span><span class="cx">     // FIXME: That assumption is not right for scroll bars!
</span><del>-    ASSERT_WITH_SECURITY_IMPLICATION(widget-&gt;isFrameView());
-    return &amp;toFrameView(widget)-&gt;frame();
</del><ins>+    return &amp;downcast&lt;FrameView&gt;(*widget).frame();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Frame::clearTimers(FrameView *view, Document *document)
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/FrameView.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -3568,11 +3568,11 @@
</span><span class="cx"> bool FrameView::hasCustomScrollbars() const
</span><span class="cx"> {
</span><span class="cx">     for (auto&amp; widget : children()) {
</span><del>-        if (widget-&gt;isFrameView()) {
-            if (toFrameView(*widget).hasCustomScrollbars())
</del><ins>+        if (is&lt;FrameView&gt;(*widget)) {
+            if (downcast&lt;FrameView&gt;(*widget).hasCustomScrollbars())
</ins><span class="cx">                 return true;
</span><del>-        } else if (widget-&gt;isScrollbar()) {
-            if (toScrollbar(*widget).isCustomScrollbar())
</del><ins>+        } else if (is&lt;Scrollbar&gt;(*widget)) {
+            if (downcast&lt;Scrollbar&gt;(*widget).isCustomScrollbar())
</ins><span class="cx">                 return true;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -3905,8 +3905,8 @@
</span><span class="cx">     Vector&lt;Ref&lt;FrameView&gt;, 16&gt; childViews;
</span><span class="cx">     childViews.reserveInitialCapacity(children().size());
</span><span class="cx">     for (auto&amp; widget : children()) {
</span><del>-        if (widget-&gt;isFrameView())
-            childViews.uncheckedAppend(toFrameView(*widget));
</del><ins>+        if (is&lt;FrameView&gt;(*widget))
+            childViews.uncheckedAppend(downcast&lt;FrameView&gt;(*widget));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; childViews.size(); ++i)
</span><span class="lines">@@ -4104,8 +4104,8 @@
</span><span class="cx"> IntRect FrameView::convertToContainingView(const IntRect&amp; localRect) const
</span><span class="cx"> {
</span><span class="cx">     if (const ScrollView* parentScrollView = parent()) {
</span><del>-        if (parentScrollView-&gt;isFrameView()) {
-            const FrameView* parentView = toFrameView(parentScrollView);
</del><ins>+        if (is&lt;FrameView&gt;(*parentScrollView)) {
+            const FrameView&amp; parentView = downcast&lt;FrameView&gt;(*parentScrollView);
</ins><span class="cx">             // Get our renderer in the parent view
</span><span class="cx">             RenderWidget* renderer = frame().ownerRenderer();
</span><span class="cx">             if (!renderer)
</span><span class="lines">@@ -4115,7 +4115,7 @@
</span><span class="cx">             // Add borders and padding??
</span><span class="cx">             rect.move(renderer-&gt;borderLeft() + renderer-&gt;paddingLeft(),
</span><span class="cx">                       renderer-&gt;borderTop() + renderer-&gt;paddingTop());
</span><del>-            return parentView-&gt;convertFromRendererToContainingView(renderer, rect);
</del><ins>+            return parentView.convertFromRendererToContainingView(renderer, rect);
</ins><span class="cx">         }
</span><span class="cx">         
</span><span class="cx">         return Widget::convertToContainingView(localRect);
</span><span class="lines">@@ -4127,15 +4127,15 @@
</span><span class="cx"> IntRect FrameView::convertFromContainingView(const IntRect&amp; parentRect) const
</span><span class="cx"> {
</span><span class="cx">     if (const ScrollView* parentScrollView = parent()) {
</span><del>-        if (parentScrollView-&gt;isFrameView()) {
-            const FrameView* parentView = toFrameView(parentScrollView);
</del><ins>+        if (is&lt;FrameView&gt;(*parentScrollView)) {
+            const FrameView&amp; parentView = downcast&lt;FrameView&gt;(*parentScrollView);
</ins><span class="cx"> 
</span><span class="cx">             // Get our renderer in the parent view
</span><span class="cx">             RenderWidget* renderer = frame().ownerRenderer();
</span><span class="cx">             if (!renderer)
</span><span class="cx">                 return parentRect;
</span><span class="cx"> 
</span><del>-            IntRect rect = parentView-&gt;convertFromContainingViewToRenderer(renderer, parentRect);
</del><ins>+            IntRect rect = parentView.convertFromContainingViewToRenderer(renderer, parentRect);
</ins><span class="cx">             // Subtract borders and padding
</span><span class="cx">             rect.move(-renderer-&gt;borderLeft() - renderer-&gt;paddingLeft(),
</span><span class="cx">                       -renderer-&gt;borderTop() - renderer-&gt;paddingTop());
</span><span class="lines">@@ -4151,8 +4151,8 @@
</span><span class="cx"> IntPoint FrameView::convertToContainingView(const IntPoint&amp; localPoint) const
</span><span class="cx"> {
</span><span class="cx">     if (const ScrollView* parentScrollView = parent()) {
</span><del>-        if (parentScrollView-&gt;isFrameView()) {
-            const FrameView* parentView = toFrameView(parentScrollView);
</del><ins>+        if (is&lt;FrameView&gt;(*parentScrollView)) {
+            const FrameView&amp; parentView = downcast&lt;FrameView&gt;(*parentScrollView);
</ins><span class="cx"> 
</span><span class="cx">             // Get our renderer in the parent view
</span><span class="cx">             RenderWidget* renderer = frame().ownerRenderer();
</span><span class="lines">@@ -4164,7 +4164,7 @@
</span><span class="cx">             // Add borders and padding
</span><span class="cx">             point.move(renderer-&gt;borderLeft() + renderer-&gt;paddingLeft(),
</span><span class="cx">                        renderer-&gt;borderTop() + renderer-&gt;paddingTop());
</span><del>-            return parentView-&gt;convertFromRendererToContainingView(renderer, point);
</del><ins>+            return parentView.convertFromRendererToContainingView(renderer, point);
</ins><span class="cx">         }
</span><span class="cx">         
</span><span class="cx">         return Widget::convertToContainingView(localPoint);
</span><span class="lines">@@ -4176,15 +4176,15 @@
</span><span class="cx"> IntPoint FrameView::convertFromContainingView(const IntPoint&amp; parentPoint) const
</span><span class="cx"> {
</span><span class="cx">     if (const ScrollView* parentScrollView = parent()) {
</span><del>-        if (parentScrollView-&gt;isFrameView()) {
-            const FrameView* parentView = toFrameView(parentScrollView);
</del><ins>+        if (is&lt;FrameView&gt;(*parentScrollView)) {
+            const FrameView&amp; parentView = downcast&lt;FrameView&gt;(*parentScrollView);
</ins><span class="cx"> 
</span><span class="cx">             // Get our renderer in the parent view
</span><span class="cx">             RenderWidget* renderer = frame().ownerRenderer();
</span><span class="cx">             if (!renderer)
</span><span class="cx">                 return parentPoint;
</span><span class="cx"> 
</span><del>-            IntPoint point = parentView-&gt;convertFromContainingViewToRenderer(renderer, parentPoint);
</del><ins>+            IntPoint point = parentView.convertFromContainingViewToRenderer(renderer, parentPoint);
</ins><span class="cx">             // Subtract borders and padding
</span><span class="cx">             point.move(-renderer-&gt;borderLeft() - renderer-&gt;paddingLeft(),
</span><span class="cx">                        -renderer-&gt;borderTop() - renderer-&gt;paddingTop());
</span><span class="lines">@@ -4280,10 +4280,10 @@
</span><span class="cx">     frame().eventHandler().dispatchFakeMouseMoveEventSoon();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FrameView::removeChild(Widget* widget)
</del><ins>+void FrameView::removeChild(Widget&amp; widget)
</ins><span class="cx"> {
</span><del>-    if (widget-&gt;isFrameView())
-        removeScrollableArea(toFrameView(widget));
</del><ins>+    if (is&lt;FrameView&gt;(widget))
+        removeScrollableArea(&amp;downcast&lt;FrameView&gt;(widget));
</ins><span class="cx"> 
</span><span class="cx">     ScrollView::removeChild(widget);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.h (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.h        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/FrameView.h        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -434,7 +434,7 @@
</span><span class="cx">     bool containsScrollableArea(ScrollableArea*) const;
</span><span class="cx">     const ScrollableAreaSet* scrollableAreas() const { return m_scrollableAreas.get(); }
</span><span class="cx"> 
</span><del>-    virtual void removeChild(Widget*) override;
</del><ins>+    virtual void removeChild(Widget&amp;) override;
</ins><span class="cx"> 
</span><span class="cx">     // This function exists for ports that need to handle wheel events manually.
</span><span class="cx">     // On Mac WebKit1 the underlying NSScrollView just does the scrolling, but on most other platforms
</span><span class="lines">@@ -788,8 +788,8 @@
</span><span class="cx">     updateIsVisuallyNonEmpty();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WIDGET_TYPE_CASTS(FrameView, isFrameView());
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_WIDGET(FrameView, isFrameView())
+
</ins><span class="cx"> #endif // FrameView_h
</span></span></pre></div>
<a id="trunkSourceWebCorepagePagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/Page.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -1163,9 +1163,9 @@
</span><span class="cx">             break;
</span><span class="cx"> 
</span><span class="cx">         for (auto it = view-&gt;children().begin(), end = view-&gt;children().end(); it != end; ++it) {
</span><del>-            Widget* widget = (*it).get();
-            if (widget-&gt;isPluginViewBase())
-                views.append(*toPluginViewBase(widget));
</del><ins>+            Widget&amp; widget = **it;
+            if (is&lt;PluginViewBase&gt;(widget))
+                views.append(downcast&lt;PluginViewBase&gt;(widget));
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageeflEventHandlerEflcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/efl/EventHandlerEfl.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/efl/EventHandlerEfl.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/efl/EventHandlerEfl.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -87,13 +87,12 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&amp; event, Widget* widget)
</del><ins>+bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&amp; event, Widget&amp; widget)
</ins><span class="cx"> {
</span><del>-    ASSERT(widget);
-    if (!widget-&gt;isFrameView())
</del><ins>+    if (!is&lt;FrameView&gt;(widget))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return toFrameView(widget)-&gt;frame().eventHandler().handleWheelEvent(event);
</del><ins>+    return downcast&lt;FrameView&gt;(widget).frame().eventHandler().handleWheelEvent(event);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(DRAG_SUPPORT)
</span></span></pre></div>
<a id="trunkSourceWebCorepagegtkEventHandlerGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/gtk/EventHandlerGtk.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/gtk/EventHandlerGtk.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/gtk/EventHandlerGtk.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -87,13 +87,12 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&amp; event, Widget* widget)
</del><ins>+bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&amp; event, Widget&amp; widget)
</ins><span class="cx"> {
</span><del>-    ASSERT(widget);
-    if (!widget-&gt;isFrameView())
</del><ins>+    if (!is&lt;FrameView&gt;(widget))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return toFrameView(widget)-&gt;frame().eventHandler().handleWheelEvent(event);
</del><ins>+    return downcast&lt;FrameView&gt;(widget).frame().eventHandler().handleWheelEvent(event);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(DRAG_SUPPORT)
</span></span></pre></div>
<a id="trunkSourceWebCorepageiosEventHandlerIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ios/EventHandlerIOS.mm (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ios/EventHandlerIOS.mm        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/ios/EventHandlerIOS.mm        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -397,20 +397,17 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&amp;, Widget* widget)
</del><ins>+bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&amp;, Widget&amp; widget)
</ins><span class="cx"> {
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> 
</span><del>-    if (!widget)
-        return false;
-
-    NSView* nodeView = widget-&gt;platformWidget();
</del><ins>+    NSView* nodeView = widget.platformWidget();
</ins><span class="cx">     if (!nodeView) {
</span><span class="cx">         // WK2 code path. No wheel events on iOS anyway.
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (currentEvent().type != WebEventScrollWheel || m_sendingEventToSubview || !widget)
</del><ins>+    if (currentEvent().type != WebEventScrollWheel || m_sendingEventToSubview)
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     ASSERT(nodeView);
</span></span></pre></div>
<a id="trunkSourceWebCorepagemacEventHandlerMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/mac/EventHandlerMac.mm (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/mac/EventHandlerMac.mm        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/mac/EventHandlerMac.mm        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -423,20 +423,17 @@
</span><span class="cx">         [self release];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&amp; wheelEvent, Widget* widget)
</del><ins>+bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&amp; wheelEvent, Widget&amp; widget)
</ins><span class="cx"> {
</span><span class="cx">     BEGIN_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> 
</span><del>-    if (!widget)
-        return false;
-
-    NSView* nodeView = widget-&gt;platformWidget();
</del><ins>+    NSView* nodeView = widget.platformWidget();
</ins><span class="cx">     if (!nodeView) {
</span><span class="cx">         // WebKit2 code path.
</span><del>-        if (!widget-&gt;isFrameView())
</del><ins>+        if (!is&lt;FrameView&gt;(widget))
</ins><span class="cx">             return false;
</span><span class="cx"> 
</span><del>-        return toFrameView(widget)-&gt;frame().eventHandler().handleWheelEvent(wheelEvent);
</del><ins>+        return downcast&lt;FrameView&gt;(widget).frame().eventHandler().handleWheelEvent(wheelEvent);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if ([currentNSEvent() type] != NSScrollWheel || m_sendingEventToSubview) 
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingCoordinatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -138,11 +138,11 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     for (const auto&amp; child : frameView-&gt;children()) {
</span><del>-        if (!child-&gt;isPluginViewBase())
</del><ins>+        if (!is&lt;PluginViewBase&gt;(*child))
</ins><span class="cx">             continue;
</span><del>-        PluginViewBase* pluginViewBase = toPluginViewBase(child.get());
-        if (pluginViewBase-&gt;wantsWheelEvents())
-            nonFastScrollableRegion.unite(pluginViewBase-&gt;frameRect());
</del><ins>+        PluginViewBase&amp; pluginViewBase = downcast&lt;PluginViewBase&gt;(*child);
+        if (pluginViewBase.wantsWheelEvents())
+            nonFastScrollableRegion.unite(pluginViewBase.frameRect());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     for (Frame* subframe = frame-&gt;tree().firstChild(); subframe; subframe = subframe-&gt;tree().nextSibling())
</span></span></pre></div>
<a id="trunkSourceWebCorepagewinEventHandlerWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/win/EventHandlerWin.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/win/EventHandlerWin.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/page/win/EventHandlerWin.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -73,12 +73,12 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&amp; wheelEvent, Widget* widget)
</del><ins>+bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&amp; wheelEvent, Widget&amp; widget)
</ins><span class="cx"> {
</span><del>-    if (!widget-&gt;isFrameView())
</del><ins>+    if (!is&lt;FrameView&gt;(widget))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return toFrameView(widget)-&gt;frame().eventHandler().handleWheelEvent(wheelEvent);
</del><ins>+    return downcast&lt;FrameView&gt;(*widget).frame().eventHandler().handleWheelEvent(wheelEvent);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool EventHandler::tabsToAllFormControls(KeyboardEvent*) const
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ScrollView.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ScrollView.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/ScrollView.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -71,13 +71,13 @@
</span><span class="cx">         platformAddChild(child);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollView::removeChild(Widget* child)
</del><ins>+void ScrollView::removeChild(Widget&amp; child)
</ins><span class="cx"> {
</span><del>-    ASSERT(child-&gt;parent() == this);
-    child-&gt;setParent(0);
-    m_children.remove(child);
-    if (child-&gt;platformWidget())
-        platformRemoveChild(child);
</del><ins>+    ASSERT(child.parent() == this);
+    child.setParent(nullptr);
+    m_children.remove(&amp;child);
+    if (child.platformWidget())
+        platformRemoveChild(&amp;child);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool ScrollView::setHasHorizontalScrollbar(bool hasBar, bool* contentSizeAffected)
</span><span class="lines">@@ -96,8 +96,8 @@
</span><span class="cx">     if (!hasBar &amp;&amp; m_horizontalScrollbar) {
</span><span class="cx">         bool wasOverlayScrollbar = m_horizontalScrollbar-&gt;isOverlayScrollbar();
</span><span class="cx">         willRemoveScrollbar(m_horizontalScrollbar.get(), HorizontalScrollbar);
</span><del>-        removeChild(m_horizontalScrollbar.get());
-        m_horizontalScrollbar = 0;
</del><ins>+        removeChild(*m_horizontalScrollbar);
+        m_horizontalScrollbar = nullptr;
</ins><span class="cx">         if (contentSizeAffected)
</span><span class="cx">             *contentSizeAffected = !wasOverlayScrollbar;
</span><span class="cx">         return true;
</span><span class="lines">@@ -122,8 +122,8 @@
</span><span class="cx">     if (!hasBar &amp;&amp; m_verticalScrollbar) {
</span><span class="cx">         bool wasOverlayScrollbar = m_verticalScrollbar-&gt;isOverlayScrollbar();
</span><span class="cx">         willRemoveScrollbar(m_verticalScrollbar.get(), VerticalScrollbar);
</span><del>-        removeChild(m_verticalScrollbar.get());
-        m_verticalScrollbar = 0;
</del><ins>+        removeChild(*m_verticalScrollbar);
+        m_verticalScrollbar = nullptr;
</ins><span class="cx">         if (contentSizeAffected)
</span><span class="cx">             *contentSizeAffected = !wasOverlayScrollbar;
</span><span class="cx">         return true;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ScrollView.h (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ScrollView.h        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/ScrollView.h        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -90,7 +90,7 @@
</span><span class="cx">     // Functions for child manipulation and inspection.
</span><span class="cx">     const HashSet&lt;RefPtr&lt;Widget&gt;&gt;&amp; children() const { return m_children; }
</span><span class="cx">     WEBCORE_EXPORT virtual void addChild(PassRefPtr&lt;Widget&gt;);
</span><del>-    virtual void removeChild(Widget*);
</del><ins>+    virtual void removeChild(Widget&amp;);
</ins><span class="cx"> 
</span><span class="cx">     // If the scroll view does not use a native widget, then it will have cross-platform Scrollbars. These functions
</span><span class="cx">     // can be used to obtain those scrollbars.
</span><span class="lines">@@ -507,8 +507,8 @@
</span><span class="cx"> #endif
</span><span class="cx"> }; // class ScrollView
</span><span class="cx"> 
</span><del>-WIDGET_TYPE_CASTS(ScrollView, isScrollView());
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_WIDGET(ScrollView, isScrollView())
+
</ins><span class="cx"> #endif // ScrollView_h
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollbarcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/Scrollbar.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/Scrollbar.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/Scrollbar.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;Scrollbar.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;FrameView.h&quot;
</ins><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="cx"> #include &quot;PlatformMouseEvent.h&quot;
</span><span class="cx"> #include &quot;ScrollAnimator.h&quot;
</span><span class="lines">@@ -558,4 +559,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+ScrollView* Scrollbar::root() const
+{
+    return Widget::root();
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollbarh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/Scrollbar.h (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/Scrollbar.h        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/Scrollbar.h        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">     virtual IntPoint location() const override { return Widget::location(); }
</span><span class="cx"> 
</span><span class="cx">     virtual ScrollView* parent() const override { return Widget::parent(); }
</span><del>-    virtual ScrollView* root() const override { return Widget::root(); }
</del><ins>+    virtual ScrollView* root() const override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void setFrameRect(const IntRect&amp;) override;
</span><span class="cx">     virtual IntRect frameRect() const override { return Widget::frameRect(); }
</span><span class="lines">@@ -207,8 +207,8 @@
</span><span class="cx">     virtual bool isScrollbar() const override { return true; }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-WIDGET_TYPE_CASTS(Scrollbar, isScrollbar());
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_WIDGET(Scrollbar, isScrollbar())
+
</ins><span class="cx"> #endif // Scrollbar_h
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformWidgetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/Widget.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/Widget.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/Widget.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -26,9 +26,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;Widget.h&quot;
</span><span class="cx"> 
</span><ins>+#include &quot;FrameView.h&quot;
</ins><span class="cx"> #include &quot;IntRect.h&quot;
</span><del>-#include &quot;ScrollView.h&quot;
-
</del><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -53,20 +52,20 @@
</span><span class="cx">         setParentVisible(true);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ScrollView* Widget::root() const
</del><ins>+FrameView* Widget::root() const
</ins><span class="cx"> {
</span><span class="cx">     const Widget* top = this;
</span><span class="cx">     while (top-&gt;parent())
</span><span class="cx">         top = top-&gt;parent();
</span><del>-    if (top-&gt;isFrameView())
-        return const_cast&lt;ScrollView*&gt;(toScrollView(top));
</del><ins>+    if (is&lt;FrameView&gt;(*top))
+        return const_cast&lt;FrameView*&gt;(downcast&lt;FrameView&gt;(top));
</ins><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> void Widget::removeFromParent()
</span><span class="cx"> {
</span><span class="cx">     if (parent())
</span><del>-        parent()-&gt;removeChild(this);
</del><ins>+        parent()-&gt;removeChild(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> IntRect Widget::convertFromRootView(const IntRect&amp; rootRect) const
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformWidgeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/Widget.h (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/Widget.h        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/Widget.h        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #include &quot;PlatformScreen.h&quot;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><ins>+#include &lt;wtf/TypeCasts.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="lines">@@ -70,6 +71,7 @@
</span><span class="cx"> class Cursor;
</span><span class="cx"> class Event;
</span><span class="cx"> class Font;
</span><ins>+class FrameView;
</ins><span class="cx"> class GraphicsContext;
</span><span class="cx"> class PlatformMouseEvent;
</span><span class="cx"> class ScrollView;
</span><span class="lines">@@ -143,7 +145,7 @@
</span><span class="cx">     WEBCORE_EXPORT void removeFromParent();
</span><span class="cx">     WEBCORE_EXPORT virtual void setParent(ScrollView* view);
</span><span class="cx">     ScrollView* parent() const { return m_parent; }
</span><del>-    ScrollView* root() const;
</del><ins>+    FrameView* root() const;
</ins><span class="cx"> 
</span><span class="cx">     virtual void handleEvent(Event*) { }
</span><span class="cx"> 
</span><span class="lines">@@ -216,9 +218,6 @@
</span><span class="cx">     IntRect m_frame; // Not used when a native widget exists.
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-#define WIDGET_TYPE_CASTS(ToValueTypeName, predicate) \
-    TYPE_CASTS_BASE(ToValueTypeName, Widget, object, object-&gt;predicate, object.predicate)
-
</del><span class="cx"> #if !PLATFORM(COCOA)
</span><span class="cx"> 
</span><span class="cx"> inline PlatformWidget Widget::platformWidget() const
</span><span class="lines">@@ -251,4 +250,9 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+#define SPECIALIZE_TYPE_TRAITS_WIDGET(ToValueTypeName, predicate) \
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ToValueTypeName) \
+    static bool isType(const WebCore::Widget&amp; widget) { return widget.predicate; } \
+SPECIALIZE_TYPE_TRAITS_END()
+
</ins><span class="cx"> #endif // Widget_h
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformeflWidgetEflcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/efl/WidgetEfl.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/efl/WidgetEfl.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/efl/WidgetEfl.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> 
</span><span class="cx"> void Widget::setCursor(const Cursor&amp; cursor)
</span><span class="cx"> {
</span><del>-    ScrollView* view = root();
</del><ins>+    FrameView* view = root();
</ins><span class="cx">     if (!view)
</span><span class="cx">         return;
</span><span class="cx">     view-&gt;hostWindow()-&gt;setCursor(cursor);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkPlatformScreenGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -32,10 +32,10 @@
</span><span class="cx"> #include &quot;PlatformScreen.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;FloatRect.h&quot;
</span><ins>+#include &quot;FrameView.h&quot;
</ins><span class="cx"> #include &quot;GtkVersioning.h&quot;
</span><span class="cx"> #include &quot;HostWindow.h&quot;
</span><span class="cx"> #include &quot;NotImplemented.h&quot;
</span><del>-#include &quot;ScrollView.h&quot;
</del><span class="cx"> #include &quot;Widget.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &lt;gtk/gtk.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkWidgetGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/WidgetGtk.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/gtk/WidgetGtk.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/gtk/WidgetGtk.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -29,11 +29,11 @@
</span><span class="cx"> #include &quot;Widget.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Cursor.h&quot;
</span><ins>+#include &quot;FrameView.h&quot;
</ins><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="cx"> #include &quot;GtkVersioning.h&quot;
</span><span class="cx"> #include &quot;HostWindow.h&quot;
</span><span class="cx"> #include &quot;IntRect.h&quot;
</span><del>-#include &quot;ScrollView.h&quot;
</del><span class="cx"> 
</span><span class="cx"> #include &lt;gdk/gdk.h&gt;
</span><span class="cx"> #include &lt;gtk/gtk.h&gt;
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> 
</span><span class="cx"> void Widget::setCursor(const Cursor&amp; cursor)
</span><span class="cx"> {
</span><del>-    ScrollView* view = root();
</del><ins>+    FrameView* view = root();
</ins><span class="cx">     if (!view)
</span><span class="cx">         return;
</span><span class="cx">     view-&gt;hostWindow()-&gt;setCursor(cursor);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacPlatformScreenMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/PlatformScreenMac.mm (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/PlatformScreenMac.mm        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/mac/PlatformScreenMac.mm        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -27,8 +27,8 @@
</span><span class="cx"> #import &quot;PlatformScreen.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #import &quot;FloatRect.h&quot;
</span><ins>+#import &quot;FrameView.h&quot;
</ins><span class="cx"> #import &quot;HostWindow.h&quot;
</span><del>-#import &quot;ScrollView.h&quot;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     if (!widget)
</span><span class="cx">         return 0;
</span><span class="cx">     
</span><del>-    ScrollView* view = widget-&gt;root();
</del><ins>+    FrameView* view = widget-&gt;root();
</ins><span class="cx">     if (!view)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacWidgetMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/WidgetMac.mm (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/WidgetMac.mm        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/mac/WidgetMac.mm        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -33,11 +33,11 @@
</span><span class="cx"> #import &quot;Document.h&quot;
</span><span class="cx"> #import &quot;Font.h&quot;
</span><span class="cx"> #import &quot;Frame.h&quot;
</span><ins>+#import &quot;FrameView.h&quot;
</ins><span class="cx"> #import &quot;GraphicsContext.h&quot;
</span><span class="cx"> #import &quot;Page.h&quot;
</span><span class="cx"> #import &quot;PlatformMouseEvent.h&quot;
</span><span class="cx"> #import &quot;RuntimeApplicationChecks.h&quot;
</span><del>-#import &quot;ScrollView.h&quot;
</del><span class="cx"> #import &quot;WebCoreFrameView.h&quot;
</span><span class="cx"> #import &quot;WebCoreView.h&quot;
</span><span class="cx"> #import &lt;wtf/Ref.h&gt;
</span><span class="lines">@@ -106,7 +106,7 @@
</span><span class="cx"> 
</span><span class="cx"> void Widget::setCursor(const Cursor&amp; cursor)
</span><span class="cx"> {
</span><del>-    ScrollView* view = root();
</del><ins>+    FrameView* view = root();
</ins><span class="cx">     if (!view)
</span><span class="cx">         return;
</span><span class="cx">     view-&gt;hostWindow()-&gt;setCursor(cursor);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformwinWidgetWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/win/WidgetWin.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/win/WidgetWin.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/platform/win/WidgetWin.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ScrollView* view = root();
</del><ins>+    FrameView* view = root();
</ins><span class="cx">     if (!view)
</span><span class="cx">         return;
</span><span class="cx">     view-&gt;hostWindow()-&gt;setCursor(cursor);
</span></span></pre></div>
<a id="trunkSourceWebCorepluginsPluginViewBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/plugins/PluginViewBase.h (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/plugins/PluginViewBase.h        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/plugins/PluginViewBase.h        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -81,8 +81,8 @@
</span><span class="cx">     explicit PluginViewBase(PlatformWidget widget = 0) : Widget(widget) { }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-WIDGET_TYPE_CASTS(PluginViewBase, isPluginViewBase());
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_WIDGET(PluginViewBase, isPluginViewBase())
+
</ins><span class="cx"> #endif // PluginWidget_h
</span></span></pre></div>
<a id="trunkSourceWebCorepluginswinPluginViewWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/plugins/win/PluginViewWin.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/plugins/win/PluginViewWin.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/plugins/win/PluginViewWin.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -396,13 +396,12 @@
</span><span class="cx">     if (!parent())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ASSERT(parent()-&gt;isFrameView());
-    FrameView* frameView = toFrameView(parent());
</del><ins>+    FrameView&amp; frameView = downcast&lt;FrameView&gt;(*parent());
</ins><span class="cx"> 
</span><span class="cx">     IntRect oldWindowRect = m_windowRect;
</span><span class="cx">     IntRect oldClipRect = m_clipRect;
</span><span class="cx"> 
</span><del>-    m_windowRect = IntRect(frameView-&gt;contentsToWindow(frameRect().location()), frameRect().size());
</del><ins>+    m_windowRect = IntRect(frameView.contentsToWindow(frameRect().location()), frameRect().size());
</ins><span class="cx">     m_clipRect = windowClipRect();
</span><span class="cx">     m_clipRect.move(-m_windowRect.x(), -m_windowRect.y());
</span><span class="cx"> 
</span><span class="lines">@@ -511,7 +510,7 @@
</span><span class="cx"> 
</span><span class="cx">     WINDOWPOS windowpos = { 0, 0, 0, 0, 0, 0, 0 };
</span><span class="cx"> 
</span><del>-    IntRect r = contentsToNativeWindow(toFrameView(parent()), frameRect());
</del><ins>+    IntRect r = contentsToNativeWindow(downcast&lt;FrameView&gt;(parent()), frameRect());
</ins><span class="cx"> 
</span><span class="cx">     windowpos.x = r.x();
</span><span class="cx">     windowpos.y = r.y();
</span><span class="lines">@@ -543,8 +542,7 @@
</span><span class="cx">     ASSERT(m_isWindowed);
</span><span class="cx">     ASSERT(context-&gt;shouldIncludeChildWindows());
</span><span class="cx"> 
</span><del>-    ASSERT(parent()-&gt;isFrameView());
-    IntPoint locationInWindow = toFrameView(parent())-&gt;convertToContainingWindow(frameRect().location());
</del><ins>+    IntPoint locationInWindow = downcast&lt;FrameView&gt;(*parent()).convertToContainingWindow(frameRect().location());
</ins><span class="cx"> 
</span><span class="cx">     LocalWindowsContext windowsContext(context, frameRect(), false);
</span><span class="cx"> 
</span><span class="lines">@@ -596,15 +594,13 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT(parent()-&gt;isFrameView());
-
</del><span class="cx">     // In the GTK and Qt ports we draw in an offscreen buffer and don't want to use the window
</span><span class="cx">     // coordinates.
</span><span class="cx"> #if PLATFORM(GTK)
</span><span class="cx">     IntRect rectInWindow(rect);
</span><span class="cx">     rectInWindow.intersect(frameRect());
</span><span class="cx"> #else
</span><del>-    IntRect rectInWindow = toFrameView(parent())-&gt;contentsToWindow(frameRect());
</del><ins>+    IntRect rectInWindow = downcast&lt;FrameView&gt;(*parent()).contentsToWindow(frameRect());
</ins><span class="cx"> #endif
</span><span class="cx">     LocalWindowsContext windowsContext(context, rectInWindow, m_isTransparent);
</span><span class="cx"> 
</span><span class="lines">@@ -658,7 +654,7 @@
</span><span class="cx"> 
</span><span class="cx">     NPEvent npEvent;
</span><span class="cx"> 
</span><del>-    IntPoint p = contentsToNativeWindow(toFrameView(parent()), IntPoint(event-&gt;pageX(), event-&gt;pageY()));
</del><ins>+    IntPoint p = contentsToNativeWindow(downcast&lt;FrameView&gt;(parent()), IntPoint(event-&gt;pageX(), event-&gt;pageY()));
</ins><span class="cx"> 
</span><span class="cx">     npEvent.lParam = MAKELPARAM(p.x(), p.y());
</span><span class="cx">     npEvent.wParam = 0;
</span><span class="lines">@@ -771,7 +767,7 @@
</span><span class="cx"> # if PLATFORM(GTK)
</span><span class="cx">     IntPoint p = rect.location();
</span><span class="cx"> # else
</span><del>-    IntPoint p = toFrameView(parent())-&gt;contentsToWindow(rect.location());
</del><ins>+    IntPoint p = downcast&lt;FrameView&gt;(*parent()).contentsToWindow(rect.location());
</ins><span class="cx"> # endif
</span><span class="cx">     m_npWindow.x = p.x();
</span><span class="cx">     m_npWindow.y = p.y();
</span><span class="lines">@@ -990,8 +986,7 @@
</span><span class="cx"> 
</span><span class="cx">         // Windowless plug-ins assume that they're drawing onto the view's DC.
</span><span class="cx">         // Translate the context so that the plug-in draws at (0, 0).
</span><del>-        ASSERT(parent()-&gt;isFrameView());
-        IntPoint position = toFrameView(parent())-&gt;contentsToWindow(frameRect()).location();
</del><ins>+        IntPoint position = downcast&lt;FrameView&gt;(*parent()).contentsToWindow(frameRect()).location();
</ins><span class="cx">         transform.eDx = -position.x();
</span><span class="cx">         transform.eDy = -position.y();
</span><span class="cx">         SetWorldTransform(hdc.get(), &amp;transform);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderEmbeddedObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -131,9 +131,9 @@
</span><span class="cx"> {
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     // The timing of layer creation is different on the phone, since the plugin can only be manipulated from the main thread.
</span><del>-    return widget() &amp;&amp; widget()-&gt;isPluginViewBase() &amp;&amp; toPluginViewBase(widget())-&gt;willProvidePluginLayer();
</del><ins>+    return is&lt;PluginViewBase&gt;(widget()) &amp;&amp; downcast&lt;PluginViewBase&gt;(*widget()).willProvidePluginLayer();
</ins><span class="cx"> #else
</span><del>-    return widget() &amp;&amp; widget()-&gt;isPluginViewBase() &amp;&amp; toPluginViewBase(widget())-&gt;platformLayer();
</del><ins>+    return is&lt;PluginViewBase&gt;(widget()) &amp;&amp; downcast&lt;PluginViewBase&gt;(*widget()).platformLayer();
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -539,20 +539,20 @@
</span><span class="cx">     if (!RenderWidget::nodeAtPoint(request, result, locationInContainer, accumulatedOffset, hitTestAction))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (!widget() || !widget()-&gt;isPluginViewBase())
</del><ins>+    if (!is&lt;PluginViewBase&gt;(widget()))
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    PluginViewBase* view = toPluginViewBase(widget());
</del><ins>+    PluginViewBase&amp; view = downcast&lt;PluginViewBase&gt;(*widget());
</ins><span class="cx">     IntPoint roundedPoint = locationInContainer.roundedPoint();
</span><span class="cx"> 
</span><del>-    if (Scrollbar* horizontalScrollbar = view-&gt;horizontalScrollbar()) {
</del><ins>+    if (Scrollbar* horizontalScrollbar = view.horizontalScrollbar()) {
</ins><span class="cx">         if (horizontalScrollbar-&gt;shouldParticipateInHitTesting() &amp;&amp; horizontalScrollbar-&gt;frameRect().contains(roundedPoint)) {
</span><span class="cx">             result.setScrollbar(horizontalScrollbar);
</span><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (Scrollbar* verticalScrollbar = view-&gt;verticalScrollbar()) {
</del><ins>+    if (Scrollbar* verticalScrollbar = view.verticalScrollbar()) {
</ins><span class="cx">         if (verticalScrollbar-&gt;shouldParticipateInHitTesting() &amp;&amp; verticalScrollbar-&gt;frameRect().contains(roundedPoint)) {
</span><span class="cx">             result.setScrollbar(verticalScrollbar);
</span><span class="cx">             return true;
</span><span class="lines">@@ -564,10 +564,10 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderEmbeddedObject::scroll(ScrollDirection direction, ScrollGranularity granularity, float, Element**, RenderBox*, const IntPoint&amp;)
</span><span class="cx"> {
</span><del>-    if (!widget() || !widget()-&gt;isPluginViewBase())
</del><ins>+    if (!is&lt;PluginViewBase&gt;(widget()))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return toPluginViewBase(widget())-&gt;scroll(direction, granularity);
</del><ins>+    return downcast&lt;PluginViewBase&gt;(*widget()).scroll(direction, granularity);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RenderEmbeddedObject::logicalScroll(ScrollLogicalDirection direction, ScrollGranularity granularity, float multiplier, Element** stopElement)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFrameBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFrameBase.h (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFrameBase.h        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/rendering/RenderFrameBase.h        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx">     RenderFrameBase(HTMLFrameElementBase&amp;, PassRef&lt;RenderStyle&gt;);
</span><span class="cx"> 
</span><span class="cx"> public:
</span><del>-    FrameView* childView() const { return toFrameView(RenderWidget::widget()); }
</del><ins>+    FrameView* childView() const { return downcast&lt;FrameView&gt;(RenderWidget::widget()); }
</ins><span class="cx"> 
</span><span class="cx">     void layoutWithFlattening(bool fixedWidth, bool fixedHeight);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerBackingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -318,8 +318,8 @@
</span><span class="cx"> void RenderLayerBacking::layerWillBeDestroyed()
</span><span class="cx"> {
</span><span class="cx">     RenderObject&amp; renderer = this-&gt;renderer();
</span><del>-    if (renderer.isEmbeddedObject() &amp;&amp; toRenderEmbeddedObject(renderer).allowsAcceleratedCompositing()) {
-        PluginViewBase* pluginViewBase = toPluginViewBase(toRenderWidget(renderer).widget());
</del><ins>+    if (is&lt;RenderEmbeddedObject&gt;(renderer) &amp;&amp; downcast&lt;RenderEmbeddedObject&gt;(renderer).allowsAcceleratedCompositing()) {
+        PluginViewBase* pluginViewBase = downcast&lt;PluginViewBase&gt;(downcast&lt;RenderWidget&gt;(renderer).widget());
</ins><span class="cx">         if (pluginViewBase &amp;&amp; m_graphicsLayer-&gt;contentsLayerForMedia())
</span><span class="cx">             pluginViewBase-&gt;detachPluginLayer();
</span><span class="cx">     }
</span><span class="lines">@@ -572,8 +572,8 @@
</span><span class="cx">     if (isDirectlyCompositedImage())
</span><span class="cx">         updateImageContents();
</span><span class="cx"> 
</span><del>-    if (renderer().isEmbeddedObject() &amp;&amp; toRenderEmbeddedObject(&amp;renderer())-&gt;allowsAcceleratedCompositing()) {
-        PluginViewBase* pluginViewBase = toPluginViewBase(toRenderWidget(&amp;renderer())-&gt;widget());
</del><ins>+    if (is&lt;RenderEmbeddedObject&gt;(renderer()) &amp;&amp; downcast&lt;RenderEmbeddedObject&gt;(renderer()).allowsAcceleratedCompositing()) {
+        PluginViewBase* pluginViewBase = downcast&lt;PluginViewBase&gt;(downcast&lt;RenderWidget&gt;(renderer()).widget());
</ins><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">         if (pluginViewBase &amp;&amp; !m_graphicsLayer-&gt;contentsLayerForMedia()) {
</span><span class="cx">             pluginViewBase-&gt;detachPluginLayer();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerCompositorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -2068,7 +2068,6 @@
</span><span class="cx">     // is to have the parent document become composited too. However, this can cause problems on platforms that
</span><span class="cx">     // use native views for frames (like Mac), so disable that behavior on those platforms for now.
</span><span class="cx">     HTMLFrameOwnerElement* ownerElement = m_renderView.document().ownerElement();
</span><del>-    RenderElement* renderer = ownerElement ? ownerElement-&gt;renderer() : 0;
</del><span class="cx"> 
</span><span class="cx">     // If we are the top-level frame, don't propagate.
</span><span class="cx">     if (!ownerElement)
</span><span class="lines">@@ -2077,7 +2076,8 @@
</span><span class="cx">     if (!allowsIndependentlyCompositedFrames(&amp;m_renderView.frameView()))
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    if (!renderer || !renderer-&gt;isWidget())
</del><ins>+    RenderElement* renderer = ownerElement-&gt;renderer();
+    if (!is&lt;RenderWidget&gt;(renderer))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     // On Mac, only propagate compositing if the frame is overlapped in the parent
</span><span class="lines">@@ -2086,11 +2086,10 @@
</span><span class="cx">     if (page &amp;&amp; page-&gt;pageScaleFactor() != 1)
</span><span class="cx">         return true;
</span><span class="cx">     
</span><del>-    RenderWidget* frameRenderer = toRenderWidget(renderer);
-    if (frameRenderer-&gt;widget()) {
-        ASSERT(frameRenderer-&gt;widget()-&gt;isFrameView());
-        FrameView* view = toFrameView(frameRenderer-&gt;widget());
-        if (view-&gt;isOverlappedIncludingAncestors() || view-&gt;hasCompositingAncestor())
</del><ins>+    RenderWidget&amp; frameRenderer = downcast&lt;RenderWidget&gt;(*renderer);
+    if (frameRenderer.widget()) {
+        FrameView&amp; view = downcast&lt;FrameView&gt;(*frameRenderer.widget());
+        if (view.isOverlappedIncludingAncestors() || view.hasCompositingAncestor())
</ins><span class="cx">             return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTreeAsTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTreeAsText.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTreeAsText.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/rendering/RenderTreeAsText.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -563,16 +563,15 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (o.isWidget()) {
-        Widget* widget = toRenderWidget(&amp;o)-&gt;widget();
-        if (widget &amp;&amp; widget-&gt;isFrameView()) {
-            FrameView* view = toFrameView(widget);
-            if (RenderView* root = view-&gt;frame().contentRenderer()) {
</del><ins>+    if (is&lt;RenderWidget&gt;(o)) {
+        Widget* widget = downcast&lt;RenderWidget&gt;(o).widget();
+        if (is&lt;FrameView&gt;(widget)) {
+            FrameView&amp; view = downcast&lt;FrameView&gt;(*widget);
+            if (RenderView* root = view.frame().contentRenderer()) {
</ins><span class="cx">                 if (!(behavior &amp; RenderAsTextDontUpdateLayout))
</span><del>-                    view-&gt;layout();
-                RenderLayer* l = root-&gt;layer();
-                if (l)
-                    writeLayers(ts, l, l, l-&gt;rect(), indent + 1, behavior);
</del><ins>+                    view.layout();
+                if (RenderLayer* layer = root-&gt;layer())
+                    writeLayers(ts, layer, layer, layer-&gt;rect(), indent + 1, behavior);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderWidgetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderWidget.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderWidget.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebCore/rendering/RenderWidget.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">         FrameView* newParent = it-&gt;value;
</span><span class="cx">         if (newParent != currentParent) {
</span><span class="cx">             if (currentParent)
</span><del>-                currentParent-&gt;removeChild(child);
</del><ins>+                currentParent-&gt;removeChild(*child);
</ins><span class="cx">             if (newParent)
</span><span class="cx">                 newParent-&gt;addChild(child);
</span><span class="cx">         }
</span><span class="lines">@@ -238,9 +238,9 @@
</span><span class="cx">     if (!widgetPaintOffset.isZero())
</span><span class="cx">         paintInfo.context-&gt;translate(-widgetPaintOffset);
</span><span class="cx"> 
</span><del>-    if (m_widget-&gt;isFrameView()) {
-        FrameView* frameView = toFrameView(m_widget.get());
-        bool runOverlapTests = !frameView-&gt;useSlowRepaintsIfNotOverlapped() || frameView-&gt;hasCompositedContentIncludingDescendants();
</del><ins>+    if (is&lt;FrameView&gt;(*m_widget)) {
+        FrameView&amp; frameView = downcast&lt;FrameView&gt;(*m_widget);
+        bool runOverlapTests = !frameView.useSlowRepaintsIfNotOverlapped() || frameView.hasCompositedContentIncludingDescendants();
</ins><span class="cx">         if (paintInfo.overlapTestRequests &amp;&amp; runOverlapTests) {
</span><span class="cx">             ASSERT(!paintInfo.overlapTestRequests-&gt;contains(this));
</span><span class="cx">             paintInfo.overlapTestRequests-&gt;set(this, m_widget-&gt;frameRect());
</span><span class="lines">@@ -301,8 +301,7 @@
</span><span class="cx"> void RenderWidget::setOverlapTestResult(bool isOverlapped)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_widget);
</span><del>-    ASSERT(m_widget-&gt;isFrameView());
-    toFrameView(m_widget.get())-&gt;setIsOverlapped(isOverlapped);
</del><ins>+    downcast&lt;FrameView&gt;(*m_widget).setIsOverlapped(isOverlapped);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderWidget::updateWidgetPosition()
</span><span class="lines">@@ -317,11 +316,11 @@
</span><span class="cx"> 
</span><span class="cx">     // if the frame size got changed, or if view needs layout (possibly indicating
</span><span class="cx">     // content size is wrong) we have to do a layout to set the right widget size.
</span><del>-    if (m_widget-&gt;isFrameView()) {
-        FrameView* frameView = toFrameView(m_widget.get());
</del><ins>+    if (is&lt;FrameView&gt;(*m_widget)) {
+        FrameView&amp; frameView = downcast&lt;FrameView&gt;(*m_widget);
</ins><span class="cx">         // Check the frame's page to make sure that the frame isn't in the process of being destroyed.
</span><del>-        if ((widgetSizeChanged || frameView-&gt;needsLayout()) &amp;&amp; frameView-&gt;frame().page())
-            frameView-&gt;layout();
</del><ins>+        if ((widgetSizeChanged || frameView.needsLayout()) &amp;&amp; frameView.frame().page())
+            frameView.layout();
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -346,17 +345,17 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderWidget::nodeAtPoint(const HitTestRequest&amp; request, HitTestResult&amp; result, const HitTestLocation&amp; locationInContainer, const LayoutPoint&amp; accumulatedOffset, HitTestAction action)
</span><span class="cx"> {
</span><del>-    if (request.allowsChildFrameContent() &amp;&amp; widget() &amp;&amp; widget()-&gt;isFrameView() &amp;&amp; toFrameView(widget())-&gt;renderView()) {
-        FrameView* childFrameView = toFrameView(widget());
-        RenderView* childRoot = childFrameView-&gt;renderView();
</del><ins>+    if (request.allowsChildFrameContent() &amp;&amp; is&lt;FrameView&gt;(widget()) &amp;&amp; downcast&lt;FrameView&gt;(*widget()).renderView()) {
+        FrameView&amp; childFrameView = downcast&lt;FrameView&gt;(*widget());
+        RenderView&amp; childRoot = *childFrameView.renderView();
</ins><span class="cx"> 
</span><span class="cx">         LayoutPoint adjustedLocation = accumulatedOffset + location();
</span><del>-        LayoutPoint contentOffset = LayoutPoint(borderLeft() + paddingLeft(), borderTop() + paddingTop()) - childFrameView-&gt;scrollOffset();
</del><ins>+        LayoutPoint contentOffset = LayoutPoint(borderLeft() + paddingLeft(), borderTop() + paddingTop()) - childFrameView.scrollOffset();
</ins><span class="cx">         HitTestLocation newHitTestLocation(locationInContainer, -adjustedLocation - contentOffset);
</span><span class="cx">         HitTestRequest newHitTestRequest(request.type() | HitTestRequest::ChildFrameHitTest);
</span><span class="cx">         HitTestResult childFrameResult(newHitTestLocation);
</span><span class="cx"> 
</span><del>-        bool isInsideChildFrame = childRoot-&gt;hitTest(newHitTestRequest, newHitTestLocation, childFrameResult);
</del><ins>+        bool isInsideChildFrame = childRoot.hitTest(newHitTestRequest, newHitTestLocation, childFrameResult);
</ins><span class="cx"> 
</span><span class="cx">         if (newHitTestLocation.isRectBasedTest())
</span><span class="cx">             result.append(childFrameResult);
</span><span class="lines">@@ -401,9 +400,9 @@
</span><span class="cx"> 
</span><span class="cx"> RenderBox* RenderWidget::embeddedContentBox() const
</span><span class="cx"> {
</span><del>-    if (!widget() || !widget()-&gt;isFrameView())
-        return 0;
-    return toFrameView(widget())-&gt;embeddedContentBox();
</del><ins>+    if (!is&lt;FrameView&gt;(widget()))
+        return nullptr;
+    return downcast&lt;FrameView&gt;(*widget()).embeddedContentBox();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebKit/mac/ChangeLog        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2014-10-09  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=137549
+
+        Reviewed by Darin Adler.
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses and clean up the
+        surrounding code.
+
+        * WebView/WebRenderNode.mm:
+        (copyRenderNode):
+        * WebView/WebView.mm:
+        (-[WebView _addScrollerDashboardRegionsForFrameView:dashboardRegions:]):
+
</ins><span class="cx"> 2014-10-07  Christophe Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Use is&lt;&gt;() / downcast&lt;&gt;() for RenderText / RenderTextFragment
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebRenderNodemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebRenderNode.mm (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebRenderNode.mm        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebKit/mac/WebView/WebRenderNode.mm        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -95,9 +95,9 @@
</span><span class="cx"> 
</span><span class="cx">     NSString *name = [[NSString alloc] initWithUTF8String:node-&gt;renderName()];
</span><span class="cx">     
</span><del>-    RenderWidget* renderWidget = node-&gt;isWidget() ? toRenderWidget(node) : nullptr;
</del><ins>+    RenderWidget* renderWidget = is&lt;RenderWidget&gt;(*node) ? downcast&lt;RenderWidget&gt;(node) : nullptr;
</ins><span class="cx">     Widget* widget = renderWidget ? renderWidget-&gt;widget() : nullptr;
</span><del>-    FrameView* frameView = widget &amp;&amp; widget-&gt;isFrameView() ? toFrameView(widget) : nullptr;
</del><ins>+    FrameView* frameView = is&lt;FrameView&gt;(widget) ? downcast&lt;FrameView&gt;(widget) : nullptr;
</ins><span class="cx">     Frame* frame = frameView ? &amp;frameView-&gt;frame() : nullptr;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: broken with transforms
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebView.mm        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -2958,8 +2958,8 @@
</span><span class="cx">     NSView *documentView = [[kit(&amp;frameView-&gt;frame()) frameView] documentView];
</span><span class="cx"> 
</span><span class="cx">     for (const auto&amp; widget: frameView-&gt;children()) {
</span><del>-        if (widget-&gt;isFrameView()) {
-            [self _addScrollerDashboardRegionsForFrameView:toFrameView(widget.get()) dashboardRegions:regions];
</del><ins>+        if (is&lt;FrameView&gt;(*widget)) {
+            [self _addScrollerDashboardRegionsForFrameView:downcast&lt;FrameView&gt;(widget.get()) dashboardRegions:regions];
</ins><span class="cx">             continue;
</span><span class="cx">         }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebKit/win/ChangeLog        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2014-10-09  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=137549
+
+        Reviewed by Darin Adler.
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses and clean up the
+        surrounding code.
+
+        * WebCoreSupport/EmbeddedWidget.cpp:
+        (EmbeddedWidget::frameRectsChanged):
+
</ins><span class="cx"> 2014-10-08  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win] Resolve various static analyzer warnings in WebKit.
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebCoreSupportEmbeddedWidgetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebCoreSupport/EmbeddedWidget.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebCoreSupport/EmbeddedWidget.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebKit/win/WebCoreSupport/EmbeddedWidget.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -93,13 +93,12 @@
</span><span class="cx">     if (!parent())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ASSERT(parent()-&gt;isFrameView());
-    FrameView* frameView = toFrameView(parent());
</del><ins>+    FrameView&amp; frameView = downcast&lt;FrameView&gt;(*parent());
</ins><span class="cx"> 
</span><span class="cx">     IntRect oldWindowRect = m_windowRect;
</span><span class="cx">     IntRect oldClipRect = m_clipRect;
</span><span class="cx"> 
</span><del>-    m_windowRect = IntRect(frameView-&gt;contentsToWindow(frameRect().location()), frameRect().size());
</del><ins>+    m_windowRect = IntRect(frameView.contentsToWindow(frameRect().location()), frameRect().size());
</ins><span class="cx">     m_clipRect = windowClipRect();
</span><span class="cx">     m_clipRect.move(-m_windowRect.x(), -m_windowRect.y());
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebKit2/ChangeLog        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2014-10-09  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=137549
+
+        Reviewed by Darin Adler.
+
+        Use is&lt;&gt;() / downcast&lt;&gt;() for Widget subclasses and clean up the
+        surrounding code.
+
+        * Shared/WebRenderObject.cpp:
+        (WebKit::WebRenderObject::WebRenderObject):
+
</ins><span class="cx"> 2014-10-08  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] Use the PageLoadState observer also to monitor title and estimated load progress
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebRenderObject.cpp (174505 => 174506)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebRenderObject.cpp        2014-10-09 16:18:46 UTC (rev 174505)
+++ trunk/Source/WebKit2/Shared/WebRenderObject.cpp        2014-10-09 16:45:32 UTC (rev 174506)
</span><span class="lines">@@ -106,11 +106,11 @@
</span><span class="cx">         children.append(WTF::move(child));
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (renderer-&gt;isWidget()) {
-        if (Widget* widget = toRenderWidget(renderer)-&gt;widget()) {
-            if (widget-&gt;isFrameView()) {
-                FrameView* frameView = toFrameView(widget);
-                if (RenderView* coreContentRenderer = frameView-&gt;frame().contentRenderer()) {
</del><ins>+    if (is&lt;RenderWidget&gt;(*renderer)) {
+        if (Widget* widget = downcast&lt;RenderWidget&gt;(*renderer).widget()) {
+            if (is&lt;FrameView&gt;(*widget)) {
+                FrameView&amp; frameView = downcast&lt;FrameView&gt;(*widget);
+                if (RenderView* coreContentRenderer = frameView.frame().contentRenderer()) {
</ins><span class="cx">                     RefPtr&lt;WebRenderObject&gt; contentRenderer = adoptRef(new WebRenderObject(coreContentRenderer, shouldIncludeDescendants));
</span><span class="cx"> 
</span><span class="cx">                     children.append(WTF::move(contentRenderer));
</span></span></pre>
</div>
</div>

</body>
</html>