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