<!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<>() / downcast<>() for Widget subclasses
https://bugs.webkit.org/show_bug.cgi?id=137549
Reviewed by Darin Adler.
Use is<>() / downcast<>() 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 <cdumez@apple.com>
+
+ Use is<>() / downcast<>() for Widget subclasses
+ https://bugs.webkit.org/show_bug.cgi?id=137549
+
+ Reviewed by Darin Adler.
+
+ Use is<>() / downcast<>() 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 <cgarcia@igalia.com>
</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<AccessibilityObject> newObj = nullptr;
- if (widget->isFrameView())
- newObj = AccessibilityScrollView::create(toScrollView(widget));
- else if (widget->isScrollbar())
- newObj = AccessibilityScrollbar::create(toScrollbar(widget));
</del><ins>+ RefPtr<AccessibilityObject> newObj;
+ if (is<ScrollView>(*widget))
+ newObj = AccessibilityScrollView::create(downcast<ScrollView>(widget));
+ else if (is<Scrollbar>(*widget))
+ newObj = AccessibilityScrollbar::create(downcast<Scrollbar>(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->isAttachment()) {
</span><span class="cx"> Widget* widget = object->widgetForAttachmentView();
</span><del>- if (!widget || !widget->isFrameView())
</del><ins>+ if (!is<FrameView>(widget))
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- Document* doc = toFrameView(widget)->frame().document();
- if (!doc || !doc->hasLivingRenderTree())
</del><ins>+ Document* document = downcast<FrameView>(*widget).frame().document();
+ if (!document || !document->hasLivingRenderTree())
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- object = object->axObjectCache()->getOrCreate(doc);
</del><ins>+ object = object->axObjectCache()->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)->widget();
</span><del>- if (!widget || !widget->isFrameView())
</del><ins>+ if (!is<FrameView>(widget))
</ins><span class="cx"> break;
</span><del>- Frame& frame = toFrameView(widget)->frame();
</del><ins>+ Frame& frame = downcast<FrameView>(*widget).frame();
</ins><span class="cx"> renderView = frame.document()->renderView();
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>- frameView = toFrameView(widget);
</del><ins>+ frameView = downcast<FrameView>(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->isFrameView())
</del><ins>+ if (!is<FrameView>(m_scrollView))
</ins><span class="cx"> return nullptr;
</span><span class="cx">
</span><del>- Document* doc = toFrameView(m_scrollView)->frame().document();
- if (!doc || !doc->hasLivingRenderTree())
</del><ins>+ Document* document = downcast<FrameView>(*m_scrollView).frame().document();
+ if (!document || !document->hasLivingRenderTree())
</ins><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> if (AXObjectCache* cache = axObjectCache())
</span><del>- return cache->getOrCreate(doc);
</del><ins>+ return cache->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->isFrameView())
</del><ins>+ if (!is<FrameView>(m_scrollView))
</ins><span class="cx"> return nullptr;
</span><span class="cx">
</span><del>- return toFrameView(m_scrollView);
</del><ins>+ return downcast<FrameView>(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->isFrameView())
</del><ins>+ if (!is<FrameView>(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)->frame().ownerElement();
</del><ins>+ HTMLFrameOwnerElement* owner = downcast<FrameView>(*m_scrollView).frame().ownerElement();
</ins><span class="cx"> if (owner && owner->renderer())
</span><span class="cx"> return cache->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->isFrameView())
</del><ins>+ if (!is<FrameView>(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)->frame().ownerElement();
</del><ins>+ HTMLFrameOwnerElement* owner = downcast<FrameView>(m_scrollView)->frame().ownerElement();
</ins><span class="cx"> if (owner && owner->renderer())
</span><span class="cx"> return cache->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& pluginElement, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Widget* pluginWidget = pluginElement.pluginWidget();
</span><del>- if (!pluginWidget)
</del><ins>+ if (!is<PluginViewBase>(pluginWidget))
</ins><span class="cx"> return nullptr;
</span><del>-
- if (!pluginWidget->isPluginViewBase())
- return nullptr;
</del><span class="cx">
</span><del>- PluginViewBase* pluginViewBase = toPluginViewBase(pluginWidget);
- return pluginViewBase->scriptObject(globalObject);
</del><ins>+ return downcast<PluginViewBase>(*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->isPluginViewBase())
</del><ins>+ if (!is<PluginViewBase>(widget))
</ins><span class="cx"> return false;
</span><span class="cx"> String value;
</span><del>- if (!toPluginViewBase(widget)->getFormValue(value))
</del><ins>+ if (!downcast<PluginViewBase>(*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() && pluginWidget()->isPluginViewBase() ? toPluginViewBase(pluginWidget()) : nullptr;
</del><ins>+ const PluginViewBase* plugin = is<PluginViewBase>(pluginWidget()) ? downcast<PluginViewBase>(pluginWidget()) : nullptr;
</ins><span class="cx"> return plugin ? plugin->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->isPluginViewBase())
</del><ins>+ if (!is<PluginViewBase>(widget))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- return toPluginViewBase(widget)->supportsKeyboardFocus();
</del><ins>+ return downcast<PluginViewBase>(*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->isPluginViewBase())
</del><ins>+ if (!is<PluginViewBase>(widget))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- PluginViewBase* pluginView = toPluginViewBase(widget);
</del><ins>+ PluginViewBase& pluginView = downcast<PluginViewBase>(*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->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->isVisible() && widget->width() > 2 && widget->height() > 2;
</del><ins>+ return pluginView.isVisible() && pluginView.width() > 2 && pluginView.height() > 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 && widget->isPluginViewBase())
- toPluginViewBase(widget)->beginSnapshottingRunningPlugin();
</del><ins>+ if (is<PluginViewBase>(widget))
+ downcast<PluginViewBase>(*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& widget)
</ins><span class="cx"> {
</span><span class="cx"> m_plugInWasCreated = true;
</span><span class="cx">
</span><del>- if (widget->isPluginViewBase() && toPluginViewBase(widget)->shouldAlwaysAutoStart()) {
</del><ins>+ if (is<PluginViewBase>(widget) && downcast<PluginViewBase>(widget).shouldAlwaysAutoStart()) {
</ins><span class="cx"> LOG(Plugins, "%p Plug-in should auto-start, set to play", 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& plugInURL);
</span><del>- void subframeLoaderDidCreatePlugIn(const Widget*);
</del><ins>+ void subframeLoaderDidCreatePlugIn(const Widget&);
</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->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& 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<PluginDocument>(doc)) {
- const Widget* widget = downcast<PluginDocument>(*doc).pluginWidget();
- const PluginViewBase* pluginView = (widget && widget->isPluginViewBase()) ? toPluginViewBase(widget) : nullptr;
</del><ins>+ if (is<PluginDocument>(document)) {
+ const Widget* widget = downcast<PluginDocument>(*document).pluginWidget();
+ const PluginViewBase* pluginView = is<PluginViewBase>(widget) ? downcast<PluginViewBase>(widget) : nullptr;
</ins><span class="cx">
</span><span class="cx"> if (pluginView)
</span><span class="cx"> pluginDocumentAcceptsDrags = pluginView->shouldAllowNavigationFromDrags();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (doc && (m_didInitiateDrag || (doc->isPluginDocument() && !pluginDocumentAcceptsDrags) || doc->hasEditableStyle()))
</del><ins>+ if (document && (m_didInitiateDrag || (is<PluginDocument>(*document) && !pluginDocumentAcceptsDrags) || document->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->renderer();
</span><del>- if (!renderer || !renderer->isWidget())
- return 0;
</del><ins>+ if (!is<RenderWidget>(renderer))
+ return nullptr;
</ins><span class="cx">
</span><del>- Widget* widget = toRenderWidget(renderer)->widget();
- if (!widget || !widget->isFrameView())
- return 0;
</del><ins>+ Widget* widget = downcast<RenderWidget>(*renderer).widget();
+ if (!is<FrameView>(widget))
+ return nullptr;
</ins><span class="cx">
</span><del>- return &toFrameView(widget)->frame();
</del><ins>+ return &downcast<FrameView>(*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->renderer();
</span><del>- if (target && target->isWidget()) {
- Widget* widget = toRenderWidget(target)->widget();
- if (widget && passWheelEventToWidget(event, widget)) {
</del><ins>+ if (is<RenderWidget>(target)) {
+ Widget* widget = downcast<RenderWidget>(*target).widget();
+ if (widget && passWheelEventToWidget(event, *widget)) {
</ins><span class="cx"> m_isHandlingWheelEvent = false;
</span><span class="cx"> if (scrollableArea)
</span><span class="cx"> scrollableArea->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&, Widget*);
</del><ins>+ bool passWheelEventToWidget(const PlatformWheelEvent&, Widget&);
</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->isFrameView());
- return &toFrameView(widget)->frame();
</del><ins>+ return &downcast<FrameView>(*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& widget : children()) {
</span><del>- if (widget->isFrameView()) {
- if (toFrameView(*widget).hasCustomScrollbars())
</del><ins>+ if (is<FrameView>(*widget)) {
+ if (downcast<FrameView>(*widget).hasCustomScrollbars())
</ins><span class="cx"> return true;
</span><del>- } else if (widget->isScrollbar()) {
- if (toScrollbar(*widget).isCustomScrollbar())
</del><ins>+ } else if (is<Scrollbar>(*widget)) {
+ if (downcast<Scrollbar>(*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<Ref<FrameView>, 16> childViews;
</span><span class="cx"> childViews.reserveInitialCapacity(children().size());
</span><span class="cx"> for (auto& widget : children()) {
</span><del>- if (widget->isFrameView())
- childViews.uncheckedAppend(toFrameView(*widget));
</del><ins>+ if (is<FrameView>(*widget))
+ childViews.uncheckedAppend(downcast<FrameView>(*widget));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> for (unsigned i = 0; i < childViews.size(); ++i)
</span><span class="lines">@@ -4104,8 +4104,8 @@
</span><span class="cx"> IntRect FrameView::convertToContainingView(const IntRect& localRect) const
</span><span class="cx"> {
</span><span class="cx"> if (const ScrollView* parentScrollView = parent()) {
</span><del>- if (parentScrollView->isFrameView()) {
- const FrameView* parentView = toFrameView(parentScrollView);
</del><ins>+ if (is<FrameView>(*parentScrollView)) {
+ const FrameView& parentView = downcast<FrameView>(*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->borderLeft() + renderer->paddingLeft(),
</span><span class="cx"> renderer->borderTop() + renderer->paddingTop());
</span><del>- return parentView->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& parentRect) const
</span><span class="cx"> {
</span><span class="cx"> if (const ScrollView* parentScrollView = parent()) {
</span><del>- if (parentScrollView->isFrameView()) {
- const FrameView* parentView = toFrameView(parentScrollView);
</del><ins>+ if (is<FrameView>(*parentScrollView)) {
+ const FrameView& parentView = downcast<FrameView>(*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->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->borderLeft() - renderer->paddingLeft(),
</span><span class="cx"> -renderer->borderTop() - renderer->paddingTop());
</span><span class="lines">@@ -4151,8 +4151,8 @@
</span><span class="cx"> IntPoint FrameView::convertToContainingView(const IntPoint& localPoint) const
</span><span class="cx"> {
</span><span class="cx"> if (const ScrollView* parentScrollView = parent()) {
</span><del>- if (parentScrollView->isFrameView()) {
- const FrameView* parentView = toFrameView(parentScrollView);
</del><ins>+ if (is<FrameView>(*parentScrollView)) {
+ const FrameView& parentView = downcast<FrameView>(*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->borderLeft() + renderer->paddingLeft(),
</span><span class="cx"> renderer->borderTop() + renderer->paddingTop());
</span><del>- return parentView->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& parentPoint) const
</span><span class="cx"> {
</span><span class="cx"> if (const ScrollView* parentScrollView = parent()) {
</span><del>- if (parentScrollView->isFrameView()) {
- const FrameView* parentView = toFrameView(parentScrollView);
</del><ins>+ if (is<FrameView>(*parentScrollView)) {
+ const FrameView& parentView = downcast<FrameView>(*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->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->borderLeft() - renderer->paddingLeft(),
</span><span class="cx"> -renderer->borderTop() - renderer->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& widget)
</ins><span class="cx"> {
</span><del>- if (widget->isFrameView())
- removeScrollableArea(toFrameView(widget));
</del><ins>+ if (is<FrameView>(widget))
+ removeScrollableArea(&downcast<FrameView>(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&) 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->children().begin(), end = view->children().end(); it != end; ++it) {
</span><del>- Widget* widget = (*it).get();
- if (widget->isPluginViewBase())
- views.append(*toPluginViewBase(widget));
</del><ins>+ Widget& widget = **it;
+ if (is<PluginViewBase>(widget))
+ views.append(downcast<PluginViewBase>(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& event, Widget* widget)
</del><ins>+bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent& event, Widget& widget)
</ins><span class="cx"> {
</span><del>- ASSERT(widget);
- if (!widget->isFrameView())
</del><ins>+ if (!is<FrameView>(widget))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- return toFrameView(widget)->frame().eventHandler().handleWheelEvent(event);
</del><ins>+ return downcast<FrameView>(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& event, Widget* widget)
</del><ins>+bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent& event, Widget& widget)
</ins><span class="cx"> {
</span><del>- ASSERT(widget);
- if (!widget->isFrameView())
</del><ins>+ if (!is<FrameView>(widget))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- return toFrameView(widget)->frame().eventHandler().handleWheelEvent(event);
</del><ins>+ return downcast<FrameView>(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&, Widget* widget)
</del><ins>+bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent&, Widget& 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->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& wheelEvent, Widget* widget)
</del><ins>+bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent& wheelEvent, Widget& 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->platformWidget();
</del><ins>+ NSView* nodeView = widget.platformWidget();
</ins><span class="cx"> if (!nodeView) {
</span><span class="cx"> // WebKit2 code path.
</span><del>- if (!widget->isFrameView())
</del><ins>+ if (!is<FrameView>(widget))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- return toFrameView(widget)->frame().eventHandler().handleWheelEvent(wheelEvent);
</del><ins>+ return downcast<FrameView>(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& child : frameView->children()) {
</span><del>- if (!child->isPluginViewBase())
</del><ins>+ if (!is<PluginViewBase>(*child))
</ins><span class="cx"> continue;
</span><del>- PluginViewBase* pluginViewBase = toPluginViewBase(child.get());
- if (pluginViewBase->wantsWheelEvents())
- nonFastScrollableRegion.unite(pluginViewBase->frameRect());
</del><ins>+ PluginViewBase& pluginViewBase = downcast<PluginViewBase>(*child);
+ if (pluginViewBase.wantsWheelEvents())
+ nonFastScrollableRegion.unite(pluginViewBase.frameRect());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> for (Frame* subframe = frame->tree().firstChild(); subframe; subframe = subframe->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& wheelEvent, Widget* widget)
</del><ins>+bool EventHandler::passWheelEventToWidget(const PlatformWheelEvent& wheelEvent, Widget& widget)
</ins><span class="cx"> {
</span><del>- if (!widget->isFrameView())
</del><ins>+ if (!is<FrameView>(widget))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- return toFrameView(widget)->frame().eventHandler().handleWheelEvent(wheelEvent);
</del><ins>+ return downcast<FrameView>(*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& child)
</ins><span class="cx"> {
</span><del>- ASSERT(child->parent() == this);
- child->setParent(0);
- m_children.remove(child);
- if (child->platformWidget())
- platformRemoveChild(child);
</del><ins>+ ASSERT(child.parent() == this);
+ child.setParent(nullptr);
+ m_children.remove(&child);
+ if (child.platformWidget())
+ platformRemoveChild(&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 && m_horizontalScrollbar) {
</span><span class="cx"> bool wasOverlayScrollbar = m_horizontalScrollbar->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 && m_verticalScrollbar) {
</span><span class="cx"> bool wasOverlayScrollbar = m_verticalScrollbar->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<RefPtr<Widget>>& children() const { return m_children; }
</span><span class="cx"> WEBCORE_EXPORT virtual void addChild(PassRefPtr<Widget>);
</span><del>- virtual void removeChild(Widget*);
</del><ins>+ virtual void removeChild(Widget&);
</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 "config.h"
</span><span class="cx"> #include "Scrollbar.h"
</span><span class="cx">
</span><ins>+#include "FrameView.h"
</ins><span class="cx"> #include "GraphicsContext.h"
</span><span class="cx"> #include "PlatformMouseEvent.h"
</span><span class="cx"> #include "ScrollAnimator.h"
</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&) 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 "config.h"
</span><span class="cx"> #include "Widget.h"
</span><span class="cx">
</span><ins>+#include "FrameView.h"
</ins><span class="cx"> #include "IntRect.h"
</span><del>-#include "ScrollView.h"
-
</del><span class="cx"> #include <wtf/Assertions.h>
</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->parent())
</span><span class="cx"> top = top->parent();
</span><del>- if (top->isFrameView())
- return const_cast<ScrollView*>(toScrollView(top));
</del><ins>+ if (is<FrameView>(*top))
+ return const_cast<FrameView*>(downcast<FrameView>(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()->removeChild(this);
</del><ins>+ parent()->removeChild(*this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> IntRect Widget::convertFromRootView(const IntRect& 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 "PlatformScreen.h"
</span><span class="cx"> #include <wtf/Forward.h>
</span><span class="cx"> #include <wtf/RefCounted.h>
</span><ins>+#include <wtf/TypeCasts.h>
</ins><span class="cx">
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx"> #include <wtf/RetainPtr.h>
</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->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& 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& 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->hostWindow()->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 "PlatformScreen.h"
</span><span class="cx">
</span><span class="cx"> #include "FloatRect.h"
</span><ins>+#include "FrameView.h"
</ins><span class="cx"> #include "GtkVersioning.h"
</span><span class="cx"> #include "HostWindow.h"
</span><span class="cx"> #include "NotImplemented.h"
</span><del>-#include "ScrollView.h"
</del><span class="cx"> #include "Widget.h"
</span><span class="cx">
</span><span class="cx"> #include <gtk/gtk.h>
</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 "Widget.h"
</span><span class="cx">
</span><span class="cx"> #include "Cursor.h"
</span><ins>+#include "FrameView.h"
</ins><span class="cx"> #include "GraphicsContext.h"
</span><span class="cx"> #include "GtkVersioning.h"
</span><span class="cx"> #include "HostWindow.h"
</span><span class="cx"> #include "IntRect.h"
</span><del>-#include "ScrollView.h"
</del><span class="cx">
</span><span class="cx"> #include <gdk/gdk.h>
</span><span class="cx"> #include <gtk/gtk.h>
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">
</span><span class="cx"> void Widget::setCursor(const Cursor& 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->hostWindow()->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 "PlatformScreen.h"
</span><span class="cx">
</span><span class="cx"> #import "FloatRect.h"
</span><ins>+#import "FrameView.h"
</ins><span class="cx"> #import "HostWindow.h"
</span><del>-#import "ScrollView.h"
</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->root();
</del><ins>+ FrameView* view = widget->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 "Document.h"
</span><span class="cx"> #import "Font.h"
</span><span class="cx"> #import "Frame.h"
</span><ins>+#import "FrameView.h"
</ins><span class="cx"> #import "GraphicsContext.h"
</span><span class="cx"> #import "Page.h"
</span><span class="cx"> #import "PlatformMouseEvent.h"
</span><span class="cx"> #import "RuntimeApplicationChecks.h"
</span><del>-#import "ScrollView.h"
</del><span class="cx"> #import "WebCoreFrameView.h"
</span><span class="cx"> #import "WebCoreView.h"
</span><span class="cx"> #import <wtf/Ref.h>
</span><span class="lines">@@ -106,7 +106,7 @@
</span><span class="cx">
</span><span class="cx"> void Widget::setCursor(const Cursor& 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->hostWindow()->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->hostWindow()->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()->isFrameView());
- FrameView* frameView = toFrameView(parent());
</del><ins>+ FrameView& frameView = downcast<FrameView>(*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->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<FrameView>(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->shouldIncludeChildWindows());
</span><span class="cx">
</span><del>- ASSERT(parent()->isFrameView());
- IntPoint locationInWindow = toFrameView(parent())->convertToContainingWindow(frameRect().location());
</del><ins>+ IntPoint locationInWindow = downcast<FrameView>(*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()->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())->contentsToWindow(frameRect());
</del><ins>+ IntRect rectInWindow = downcast<FrameView>(*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->pageX(), event->pageY()));
</del><ins>+ IntPoint p = contentsToNativeWindow(downcast<FrameView>(parent()), IntPoint(event->pageX(), event->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())->contentsToWindow(rect.location());
</del><ins>+ IntPoint p = downcast<FrameView>(*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()->isFrameView());
- IntPoint position = toFrameView(parent())->contentsToWindow(frameRect()).location();
</del><ins>+ IntPoint position = downcast<FrameView>(*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(), &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() && widget()->isPluginViewBase() && toPluginViewBase(widget())->willProvidePluginLayer();
</del><ins>+ return is<PluginViewBase>(widget()) && downcast<PluginViewBase>(*widget()).willProvidePluginLayer();
</ins><span class="cx"> #else
</span><del>- return widget() && widget()->isPluginViewBase() && toPluginViewBase(widget())->platformLayer();
</del><ins>+ return is<PluginViewBase>(widget()) && downcast<PluginViewBase>(*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()->isPluginViewBase())
</del><ins>+ if (!is<PluginViewBase>(widget()))
</ins><span class="cx"> return true;
</span><span class="cx">
</span><del>- PluginViewBase* view = toPluginViewBase(widget());
</del><ins>+ PluginViewBase& view = downcast<PluginViewBase>(*widget());
</ins><span class="cx"> IntPoint roundedPoint = locationInContainer.roundedPoint();
</span><span class="cx">
</span><del>- if (Scrollbar* horizontalScrollbar = view->horizontalScrollbar()) {
</del><ins>+ if (Scrollbar* horizontalScrollbar = view.horizontalScrollbar()) {
</ins><span class="cx"> if (horizontalScrollbar->shouldParticipateInHitTesting() && horizontalScrollbar->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->verticalScrollbar()) {
</del><ins>+ if (Scrollbar* verticalScrollbar = view.verticalScrollbar()) {
</ins><span class="cx"> if (verticalScrollbar->shouldParticipateInHitTesting() && verticalScrollbar->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&)
</span><span class="cx"> {
</span><del>- if (!widget() || !widget()->isPluginViewBase())
</del><ins>+ if (!is<PluginViewBase>(widget()))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- return toPluginViewBase(widget())->scroll(direction, granularity);
</del><ins>+ return downcast<PluginViewBase>(*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&, PassRef<RenderStyle>);
</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<FrameView>(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& renderer = this->renderer();
</span><del>- if (renderer.isEmbeddedObject() && toRenderEmbeddedObject(renderer).allowsAcceleratedCompositing()) {
- PluginViewBase* pluginViewBase = toPluginViewBase(toRenderWidget(renderer).widget());
</del><ins>+ if (is<RenderEmbeddedObject>(renderer) && downcast<RenderEmbeddedObject>(renderer).allowsAcceleratedCompositing()) {
+ PluginViewBase* pluginViewBase = downcast<PluginViewBase>(downcast<RenderWidget>(renderer).widget());
</ins><span class="cx"> if (pluginViewBase && m_graphicsLayer->contentsLayerForMedia())
</span><span class="cx"> pluginViewBase->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() && toRenderEmbeddedObject(&renderer())->allowsAcceleratedCompositing()) {
- PluginViewBase* pluginViewBase = toPluginViewBase(toRenderWidget(&renderer())->widget());
</del><ins>+ if (is<RenderEmbeddedObject>(renderer()) && downcast<RenderEmbeddedObject>(renderer()).allowsAcceleratedCompositing()) {
+ PluginViewBase* pluginViewBase = downcast<PluginViewBase>(downcast<RenderWidget>(renderer()).widget());
</ins><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> if (pluginViewBase && !m_graphicsLayer->contentsLayerForMedia()) {
</span><span class="cx"> pluginViewBase->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->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(&m_renderView.frameView()))
</span><span class="cx"> return true;
</span><span class="cx">
</span><del>- if (!renderer || !renderer->isWidget())
</del><ins>+ RenderElement* renderer = ownerElement->renderer();
+ if (!is<RenderWidget>(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 && page->pageScaleFactor() != 1)
</span><span class="cx"> return true;
</span><span class="cx">
</span><del>- RenderWidget* frameRenderer = toRenderWidget(renderer);
- if (frameRenderer->widget()) {
- ASSERT(frameRenderer->widget()->isFrameView());
- FrameView* view = toFrameView(frameRenderer->widget());
- if (view->isOverlappedIncludingAncestors() || view->hasCompositingAncestor())
</del><ins>+ RenderWidget& frameRenderer = downcast<RenderWidget>(*renderer);
+ if (frameRenderer.widget()) {
+ FrameView& view = downcast<FrameView>(*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(&o)->widget();
- if (widget && widget->isFrameView()) {
- FrameView* view = toFrameView(widget);
- if (RenderView* root = view->frame().contentRenderer()) {
</del><ins>+ if (is<RenderWidget>(o)) {
+ Widget* widget = downcast<RenderWidget>(o).widget();
+ if (is<FrameView>(widget)) {
+ FrameView& view = downcast<FrameView>(*widget);
+ if (RenderView* root = view.frame().contentRenderer()) {
</ins><span class="cx"> if (!(behavior & RenderAsTextDontUpdateLayout))
</span><del>- view->layout();
- RenderLayer* l = root->layer();
- if (l)
- writeLayers(ts, l, l, l->rect(), indent + 1, behavior);
</del><ins>+ view.layout();
+ if (RenderLayer* layer = root->layer())
+ writeLayers(ts, layer, layer, layer->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->value;
</span><span class="cx"> if (newParent != currentParent) {
</span><span class="cx"> if (currentParent)
</span><del>- currentParent->removeChild(child);
</del><ins>+ currentParent->removeChild(*child);
</ins><span class="cx"> if (newParent)
</span><span class="cx"> newParent->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->translate(-widgetPaintOffset);
</span><span class="cx">
</span><del>- if (m_widget->isFrameView()) {
- FrameView* frameView = toFrameView(m_widget.get());
- bool runOverlapTests = !frameView->useSlowRepaintsIfNotOverlapped() || frameView->hasCompositedContentIncludingDescendants();
</del><ins>+ if (is<FrameView>(*m_widget)) {
+ FrameView& frameView = downcast<FrameView>(*m_widget);
+ bool runOverlapTests = !frameView.useSlowRepaintsIfNotOverlapped() || frameView.hasCompositedContentIncludingDescendants();
</ins><span class="cx"> if (paintInfo.overlapTestRequests && runOverlapTests) {
</span><span class="cx"> ASSERT(!paintInfo.overlapTestRequests->contains(this));
</span><span class="cx"> paintInfo.overlapTestRequests->set(this, m_widget->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->isFrameView());
- toFrameView(m_widget.get())->setIsOverlapped(isOverlapped);
</del><ins>+ downcast<FrameView>(*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->isFrameView()) {
- FrameView* frameView = toFrameView(m_widget.get());
</del><ins>+ if (is<FrameView>(*m_widget)) {
+ FrameView& frameView = downcast<FrameView>(*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->needsLayout()) && frameView->frame().page())
- frameView->layout();
</del><ins>+ if ((widgetSizeChanged || frameView.needsLayout()) && 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& request, HitTestResult& result, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction action)
</span><span class="cx"> {
</span><del>- if (request.allowsChildFrameContent() && widget() && widget()->isFrameView() && toFrameView(widget())->renderView()) {
- FrameView* childFrameView = toFrameView(widget());
- RenderView* childRoot = childFrameView->renderView();
</del><ins>+ if (request.allowsChildFrameContent() && is<FrameView>(widget()) && downcast<FrameView>(*widget()).renderView()) {
+ FrameView& childFrameView = downcast<FrameView>(*widget());
+ RenderView& 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->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->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()->isFrameView())
- return 0;
- return toFrameView(widget())->embeddedContentBox();
</del><ins>+ if (!is<FrameView>(widget()))
+ return nullptr;
+ return downcast<FrameView>(*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 <cdumez@apple.com>
+
+ Use is<>() / downcast<>() for Widget subclasses
+ https://bugs.webkit.org/show_bug.cgi?id=137549
+
+ Reviewed by Darin Adler.
+
+ Use is<>() / downcast<>() 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 <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> Use is<>() / downcast<>() 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->renderName()];
</span><span class="cx">
</span><del>- RenderWidget* renderWidget = node->isWidget() ? toRenderWidget(node) : nullptr;
</del><ins>+ RenderWidget* renderWidget = is<RenderWidget>(*node) ? downcast<RenderWidget>(node) : nullptr;
</ins><span class="cx"> Widget* widget = renderWidget ? renderWidget->widget() : nullptr;
</span><del>- FrameView* frameView = widget && widget->isFrameView() ? toFrameView(widget) : nullptr;
</del><ins>+ FrameView* frameView = is<FrameView>(widget) ? downcast<FrameView>(widget) : nullptr;
</ins><span class="cx"> Frame* frame = frameView ? &frameView->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(&frameView->frame()) frameView] documentView];
</span><span class="cx">
</span><span class="cx"> for (const auto& widget: frameView->children()) {
</span><del>- if (widget->isFrameView()) {
- [self _addScrollerDashboardRegionsForFrameView:toFrameView(widget.get()) dashboardRegions:regions];
</del><ins>+ if (is<FrameView>(*widget)) {
+ [self _addScrollerDashboardRegionsForFrameView:downcast<FrameView>(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 <cdumez@apple.com>
+
+ Use is<>() / downcast<>() for Widget subclasses
+ https://bugs.webkit.org/show_bug.cgi?id=137549
+
+ Reviewed by Darin Adler.
+
+ Use is<>() / downcast<>() for Widget subclasses and clean up the
+ surrounding code.
+
+ * WebCoreSupport/EmbeddedWidget.cpp:
+ (EmbeddedWidget::frameRectsChanged):
+
</ins><span class="cx"> 2014-10-08 Brent Fulgham <bfulgham@apple.com>
</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()->isFrameView());
- FrameView* frameView = toFrameView(parent());
</del><ins>+ FrameView& frameView = downcast<FrameView>(*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->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 <cdumez@apple.com>
+
+ Use is<>() / downcast<>() for Widget subclasses
+ https://bugs.webkit.org/show_bug.cgi?id=137549
+
+ Reviewed by Darin Adler.
+
+ Use is<>() / downcast<>() 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 <cgarcia@igalia.com>
</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->isWidget()) {
- if (Widget* widget = toRenderWidget(renderer)->widget()) {
- if (widget->isFrameView()) {
- FrameView* frameView = toFrameView(widget);
- if (RenderView* coreContentRenderer = frameView->frame().contentRenderer()) {
</del><ins>+ if (is<RenderWidget>(*renderer)) {
+ if (Widget* widget = downcast<RenderWidget>(*renderer).widget()) {
+ if (is<FrameView>(*widget)) {
+ FrameView& frameView = downcast<FrameView>(*widget);
+ if (RenderView* coreContentRenderer = frameView.frame().contentRenderer()) {
</ins><span class="cx"> RefPtr<WebRenderObject> 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>