WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-137424-20141004171155.patch (text/plain), 81.34 KB, created by
Chris Dumez
on 2014-10-04 17:11:54 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Chris Dumez
Created:
2014-10-04 17:11:54 PDT
Size:
81.34 KB
patch
obsolete
>Subversion Revision: 174321 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 01af5543b41203dead06cbb1859110ba3ec90e01..383c2dd044ac5bb53f5159e432703771a7d54ef4 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,148 @@ >+2014-10-04 Christophe Dumez <cdumez@apple.com> >+ >+ Add is<>() / downcast<>() support for RenderObject subclasses >+ https://bugs.webkit.org/show_bug.cgi?id=137424 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add is<>() / downcast<>() support for RenderObject subclasses, and >+ get rid of IsRendererOfType traits struct as we can now rely on the >+ TypeCastsTraits instead. >+ >+ toRender*() is still supported for most render objects because I did >+ not want to remove all usages in this patch, to keep the size small. >+ For now, only the MathML render objects were ported over to using >+ is<>() / downcast<>(). Other render objects will be taken care of in >+ follow-up patches and I will drop support for toRender*() >+ incrementally. >+ >+ No new tests, no behavior change. >+ >+ * accessibility/AccessibilityRenderObject.cpp: >+ (WebCore::AccessibilityRenderObject::isMathFenceOperator): >+ (WebCore::AccessibilityRenderObject::isMathSeparatorOperator): >+ (WebCore::AccessibilityRenderObject::mathLineThickness): >+ * mathml/MathMLInlineContainerElement.cpp: >+ (WebCore::MathMLInlineContainerElement::childrenChanged): >+ * mathml/MathMLTextElement.cpp: >+ (WebCore::MathMLTextElement::didAttachRenderers): >+ (WebCore::MathMLTextElement::childrenChanged): >+ * rendering/RenderAncestorIterator.h: >+ (WebCore::lineageOfType): >+ * rendering/RenderBlock.h: >+ * rendering/RenderBlockFlow.h: >+ * rendering/RenderBox.h: >+ * rendering/RenderBoxModelObject.h: >+ * rendering/RenderButton.h: >+ * rendering/RenderCombineText.h: >+ * rendering/RenderCounter.h: >+ * rendering/RenderDetailsMarker.h: >+ * rendering/RenderElement.h: >+ * rendering/RenderEmbeddedObject.h: >+ * rendering/RenderFieldset.h: >+ * rendering/RenderFileUploadControl.h: >+ * rendering/RenderFlexibleBox.h: >+ * rendering/RenderFlowThread.h: >+ * rendering/RenderFrame.h: >+ * rendering/RenderFrameSet.h: >+ * rendering/RenderFullScreen.h: >+ * rendering/RenderGrid.h: >+ * rendering/RenderHTMLCanvas.h: >+ * rendering/RenderIFrame.h: >+ * rendering/RenderImage.h: >+ * rendering/RenderInline.h: >+ * rendering/RenderIterator.h: >+ (WebCore::RenderTraversal::firstChild): >+ (WebCore::RenderTraversal::lastChild): >+ (WebCore::RenderTraversal::nextSibling): >+ (WebCore::RenderTraversal::previousSibling): >+ (WebCore::RenderTraversal::findAncestorOfType): >+ * rendering/RenderLayerModelObject.h: >+ * rendering/RenderLineBreak.h: >+ * rendering/RenderListBox.h: >+ * rendering/RenderListItem.h: >+ * rendering/RenderListMarker.h: >+ * rendering/RenderMedia.h: >+ * rendering/RenderMenuList.h: >+ * rendering/RenderMeter.h: >+ * rendering/RenderMultiColumnFlowThread.h: >+ * rendering/RenderMultiColumnSet.h: >+ * rendering/RenderMultiColumnSpannerPlaceholder.h: >+ * rendering/RenderNamedFlowFragment.h: >+ * rendering/RenderNamedFlowThread.h: >+ * rendering/RenderObject.h: >+ (WebCore::RenderObject>): Deleted. >+ * rendering/RenderProgress.h: >+ * rendering/RenderQuote.h: >+ * rendering/RenderRegion.h: >+ * rendering/RenderReplaced.h: >+ * rendering/RenderRubyRun.h: >+ * rendering/RenderScrollbarPart.h: >+ * rendering/RenderSearchField.h: >+ * rendering/RenderSlider.h: >+ * rendering/RenderSnapshottedPlugIn.h: >+ * rendering/RenderTable.h: >+ * rendering/RenderTableCaption.h: >+ * rendering/RenderTableCell.h: >+ * rendering/RenderTableCol.h: >+ * rendering/RenderTableRow.h: >+ * rendering/RenderTableSection.h: >+ * rendering/RenderText.h: >+ * rendering/RenderTextControl.h: >+ * rendering/RenderTextControlMultiLine.h: >+ * rendering/RenderTextControlSingleLine.h: >+ * rendering/RenderTextFragment.h: >+ * rendering/RenderVideo.h: >+ * rendering/RenderView.h: >+ * rendering/RenderWidget.h: >+ * rendering/mathml/RenderMathMLBlock.h: >+ * rendering/mathml/RenderMathMLFenced.cpp: >+ (WebCore::RenderMathMLFenced::updateFromElement): >+ * rendering/mathml/RenderMathMLFraction.cpp: >+ (WebCore::RenderMathMLFraction::unembellishedOperator): >+ * rendering/mathml/RenderMathMLFraction.h: >+ * rendering/mathml/RenderMathMLOperator.h: >+ * rendering/mathml/RenderMathMLRadicalOperator.h: >+ * rendering/mathml/RenderMathMLRoot.cpp: >+ (WebCore::RenderMathMLRoot::baseWrapper): >+ (WebCore::RenderMathMLRoot::radicalWrapper): >+ (WebCore::RenderMathMLRoot::indexWrapper): >+ (WebCore::RenderMathMLRoot::radicalOperator): >+ (WebCore::RenderMathMLRootWrapper::removeChild): >+ * rendering/mathml/RenderMathMLRoot.h: >+ * rendering/mathml/RenderMathMLRow.cpp: >+ (WebCore::RenderMathMLRow::updateOperatorProperties): >+ (WebCore::RenderMathMLRow::layout): >+ * rendering/mathml/RenderMathMLRow.h: >+ * rendering/mathml/RenderMathMLScripts.cpp: >+ (WebCore::RenderMathMLScripts::addChildInternal): >+ (WebCore::RenderMathMLScripts::removeChildInternal): >+ (WebCore::RenderMathMLScripts::unembellishedOperator): >+ (WebCore::RenderMathMLScripts::layout): >+ (WebCore::RenderMathMLScriptsWrapper::addChildInternal): >+ (WebCore::RenderMathMLScriptsWrapper::addChild): >+ (WebCore::RenderMathMLScriptsWrapper::removeChildInternal): >+ (WebCore::RenderMathMLScriptsWrapper::removeChild): >+ * rendering/mathml/RenderMathMLScripts.h: >+ * rendering/mathml/RenderMathMLSpace.h: >+ * rendering/mathml/RenderMathMLSquareRoot.h: >+ * rendering/mathml/RenderMathMLToken.h: >+ * rendering/mathml/RenderMathMLUnderOver.cpp: >+ (WebCore::RenderMathMLUnderOver::unembellishedOperator): >+ * rendering/svg/RenderSVGContainer.h: >+ * rendering/svg/RenderSVGGradientStop.h: >+ * rendering/svg/RenderSVGImage.h: >+ * rendering/svg/RenderSVGInlineText.h: >+ * rendering/svg/RenderSVGModelObject.h: >+ * rendering/svg/RenderSVGPath.h: >+ * rendering/svg/RenderSVGResourceContainer.h: >+ * rendering/svg/RenderSVGResourceFilter.h: >+ * rendering/svg/RenderSVGRoot.h: >+ * rendering/svg/RenderSVGShape.h: >+ * rendering/svg/RenderSVGText.h: >+ * rendering/svg/RenderSVGTextPath.h: >+ * rendering/svg/RenderSVGViewportContainer.h: >+ > 2014-10-04 Brian J. Burg <burg@cs.washington.edu> > > Web Inspector: timelines should not count time elapsed while paused in the debugger >diff --git a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp b/Source/WebCore/accessibility/AccessibilityRenderObject.cpp >index 4505655a592dafcbe1230b29c9b0bfec7bf53675..4e22f5f92845320fae9e259bf634e04157debdca 100644 >--- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp >+++ b/Source/WebCore/accessibility/AccessibilityRenderObject.cpp >@@ -3536,18 +3536,18 @@ bool AccessibilityRenderObject::isMathOperator() const > > bool AccessibilityRenderObject::isMathFenceOperator() const > { >- if (!m_renderer || !m_renderer->isRenderMathMLOperator()) >+ if (!is<RenderMathMLOperator>(m_renderer)) > return false; > >- return toRenderMathMLOperator(*m_renderer).hasOperatorFlag(MathMLOperatorDictionary::Fence); >+ return downcast<RenderMathMLOperator>(*m_renderer).hasOperatorFlag(MathMLOperatorDictionary::Fence); > } > > bool AccessibilityRenderObject::isMathSeparatorOperator() const > { >- if (!m_renderer || !m_renderer->isRenderMathMLOperator()) >+ if (!is<RenderMathMLOperator>(m_renderer)) > return false; > >- return toRenderMathMLOperator(*m_renderer).hasOperatorFlag(MathMLOperatorDictionary::Separator); >+ return downcast<RenderMathMLOperator>(*m_renderer).hasOperatorFlag(MathMLOperatorDictionary::Separator); > } > > bool AccessibilityRenderObject::isMathText() const >@@ -3823,10 +3823,10 @@ void AccessibilityRenderObject::mathPostscripts(AccessibilityMathMultiscriptPair > > int AccessibilityRenderObject::mathLineThickness() const > { >- if (!isMathFraction()) >+ if (!is<RenderMathMLFraction>(m_renderer)) > return -1; > >- return toRenderMathMLFraction(m_renderer)->lineThickness(); >+ return downcast<RenderMathMLFraction>(*m_renderer).lineThickness(); > } > > #endif >diff --git a/Source/WebCore/mathml/MathMLInlineContainerElement.cpp b/Source/WebCore/mathml/MathMLInlineContainerElement.cpp >index e583035ec1cac165ca315741ee8f2e9abf7e8074..bdb6bf6fc034bd455f596ece548098e99cbfa271 100644 >--- a/Source/WebCore/mathml/MathMLInlineContainerElement.cpp >+++ b/Source/WebCore/mathml/MathMLInlineContainerElement.cpp >@@ -58,12 +58,12 @@ PassRefPtr<MathMLInlineContainerElement> MathMLInlineContainerElement::create(co > void MathMLInlineContainerElement::childrenChanged(const ChildChange& change) > { > if (renderer()) { >- if (renderer()->isRenderMathMLRow()) >- toRenderMathMLRow(renderer())->updateOperatorProperties(); >+ if (is<RenderMathMLRow>(*renderer())) >+ downcast<RenderMathMLRow>(*renderer()).updateOperatorProperties(); > else if (hasTagName(mathTag) || hasTagName(msqrtTag)) { >- auto childRenderer = renderer()->firstChild(); >- if (childRenderer && childRenderer->isRenderMathMLRow()) >- toRenderMathMLRow(childRenderer)->updateOperatorProperties(); >+ auto* childRenderer = renderer()->firstChild(); >+ if (is<RenderMathMLRow>(childRenderer)) >+ downcast<RenderMathMLRow>(*childRenderer).updateOperatorProperties(); > } > } > MathMLElement::childrenChanged(change); >diff --git a/Source/WebCore/mathml/MathMLTextElement.cpp b/Source/WebCore/mathml/MathMLTextElement.cpp >index 22383c037669b5b24b33d75f9c004234a6974774..08e5edd99f0a907a655ca43ebb899fe985ac4c91 100644 >--- a/Source/WebCore/mathml/MathMLTextElement.cpp >+++ b/Source/WebCore/mathml/MathMLTextElement.cpp >@@ -53,15 +53,15 @@ PassRefPtr<MathMLTextElement> MathMLTextElement::create(const QualifiedName& tag > void MathMLTextElement::didAttachRenderers() > { > MathMLElement::didAttachRenderers(); >- if (renderer() && renderer()->isRenderMathMLToken()) >- toRenderMathMLToken(renderer())->updateTokenContent(); >+ if (is<RenderMathMLToken>(renderer())) >+ downcast<RenderMathMLToken>(*renderer()).updateTokenContent(); > } > > void MathMLTextElement::childrenChanged(const ChildChange& change) > { > MathMLElement::childrenChanged(change); >- if (renderer() && renderer()->isRenderMathMLToken()) >- toRenderMathMLToken(renderer())->updateTokenContent(); >+ if (is<RenderMathMLToken>(renderer())) >+ downcast<RenderMathMLToken>(*renderer()).updateTokenContent(); > } > > RenderPtr<RenderElement> MathMLTextElement::createElementRenderer(PassRef<RenderStyle> style) >diff --git a/Source/WebCore/rendering/RenderAncestorIterator.h b/Source/WebCore/rendering/RenderAncestorIterator.h >index 39dd05e725213391e190c17a633f9accb4ef2581..1a614fd3203de53f354c3fa4265f283522712b61 100644 >--- a/Source/WebCore/rendering/RenderAncestorIterator.h >+++ b/Source/WebCore/rendering/RenderAncestorIterator.h >@@ -186,16 +186,16 @@ inline RenderAncestorConstIteratorAdapter<T> ancestorsOfType(const RenderObject& > template <typename T> > inline RenderAncestorIteratorAdapter<T> lineageOfType(RenderObject& first) > { >- if (isRendererOfType<const T>(first)) >- return RenderAncestorIteratorAdapter<T>(static_cast<T*>(&first)); >+ if (is<T>(first)) >+ return RenderAncestorIteratorAdapter<T>(downcast<T>(&first)); > return ancestorsOfType<T>(first); > } > > template <typename T> > inline RenderAncestorConstIteratorAdapter<T> lineageOfType(const RenderObject& first) > { >- if (isRendererOfType<const T>(first)) >- return RenderAncestorConstIteratorAdapter<T>(static_cast<const T*>(&first)); >+ if (is<T>(first)) >+ return RenderAncestorConstIteratorAdapter<T>(downcast<T>(&first)); > return ancestorsOfType<T>(first); > } > >diff --git a/Source/WebCore/rendering/RenderBlock.h b/Source/WebCore/rendering/RenderBlock.h >index 9a4cf88a3c4525553d6880804a094636f3def8eb..6400db6f559294a7cf6119af724c97ca027f24d2 100644 >--- a/Source/WebCore/rendering/RenderBlock.h >+++ b/Source/WebCore/rendering/RenderBlock.h >@@ -538,4 +538,6 @@ VisiblePosition positionForPointRespectingEditingBoundaries(RenderBlock&, Render > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderBlock, isRenderBlock()) >+ > #endif // RenderBlock_h >diff --git a/Source/WebCore/rendering/RenderBlockFlow.h b/Source/WebCore/rendering/RenderBlockFlow.h >index 2079bbf44412e1a5886b0876d54748aafd0fc6da..3aafae2cf47f81e7c00b18bd7e97b9a3ebebac2b 100644 >--- a/Source/WebCore/rendering/RenderBlockFlow.h >+++ b/Source/WebCore/rendering/RenderBlockFlow.h >@@ -636,4 +636,6 @@ inline const SimpleLineLayout::Layout* RenderBlockFlow::simpleLineLayout() const > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderBlockFlow, isRenderBlockFlow()) >+ > #endif // RenderBlockFlow_h >diff --git a/Source/WebCore/rendering/RenderBox.h b/Source/WebCore/rendering/RenderBox.h >index b8266a3be14894446d51526ff08b56da2d7baa39..9c75462ef67fa8dc5e311e730e1c22462cf6e3b7 100644 >--- a/Source/WebCore/rendering/RenderBox.h >+++ b/Source/WebCore/rendering/RenderBox.h >@@ -767,4 +767,6 @@ inline void RenderBox::setInlineBoxWrapper(InlineElementBox* boxWrapper) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderBox, isBox()) >+ > #endif // RenderBox_h >diff --git a/Source/WebCore/rendering/RenderBoxModelObject.h b/Source/WebCore/rendering/RenderBoxModelObject.h >index ace8885482d7aa579ab37d0744c053792e5f373a..71b993ebfbff08f8640a305bf33072aad1f7452d 100644 >--- a/Source/WebCore/rendering/RenderBoxModelObject.h >+++ b/Source/WebCore/rendering/RenderBoxModelObject.h >@@ -343,4 +343,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderBoxModelObject, isBoxModelObject()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderBoxModelObject, isBoxModelObject()) >+ > #endif // RenderBoxModelObject_h >diff --git a/Source/WebCore/rendering/RenderButton.h b/Source/WebCore/rendering/RenderButton.h >index acd69b2277541a4108ca404c3dd4e9d09a49c7f2..a1a6520e97c948fc0c936f10c474b15051e5e4b3 100644 >--- a/Source/WebCore/rendering/RenderButton.h >+++ b/Source/WebCore/rendering/RenderButton.h >@@ -87,4 +87,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderButton, isRenderButton()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderButton, isRenderButton()) >+ > #endif // RenderButton_h >diff --git a/Source/WebCore/rendering/RenderCombineText.h b/Source/WebCore/rendering/RenderCombineText.h >index 3963b30c5f696d70ec7292a35485f33da2d299b5..d4293292e2b6801ed761ae3df01bb21583d8ffd7 100644 >--- a/Source/WebCore/rendering/RenderCombineText.h >+++ b/Source/WebCore/rendering/RenderCombineText.h >@@ -61,4 +61,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderCombineText, isCombineText()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderCombineText, isCombineText()) >+ > #endif // RenderCombineText_h >diff --git a/Source/WebCore/rendering/RenderCounter.h b/Source/WebCore/rendering/RenderCounter.h >index c6f86db8e50453a74fc55d374f7d7b23c205951b..8c3816c8eff5ba9b3b922cbe38cbc537e5ddaf73 100644 >--- a/Source/WebCore/rendering/RenderCounter.h >+++ b/Source/WebCore/rendering/RenderCounter.h >@@ -66,6 +66,8 @@ RENDER_OBJECT_TYPE_CASTS(RenderCounter, isCounter()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderCounter, isCounter()) >+ > #ifndef NDEBUG > // Outside the WebCore namespace for ease of invocation from gdb. > void showCounterRendererTree(const WebCore::RenderObject*, const char* counterName = 0); >diff --git a/Source/WebCore/rendering/RenderDetailsMarker.h b/Source/WebCore/rendering/RenderDetailsMarker.h >index 833f2a677134ac3eae8dd3b61d00df22c24a1713..1c4aaf02192e7a0e4534f6b3a9e47b153bd090b9 100644 >--- a/Source/WebCore/rendering/RenderDetailsMarker.h >+++ b/Source/WebCore/rendering/RenderDetailsMarker.h >@@ -47,9 +47,11 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderDetailsMarker, isDetailsMarker()) > >-} >+} // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderDetailsMarker, isDetailsMarker()) >+ >+#endif // ENABLE(DETAILS_ELEMENT) > > #endif // RenderDetailsMarker_h > >diff --git a/Source/WebCore/rendering/RenderElement.h b/Source/WebCore/rendering/RenderElement.h >index 05ce794d19a4cfe593f7736cc8ce10808230f4ce..ed04876f5afdcae046402b0e93af09d9dd45060e 100644 >--- a/Source/WebCore/rendering/RenderElement.h >+++ b/Source/WebCore/rendering/RenderElement.h >@@ -380,4 +380,6 @@ inline LayoutUnit adjustLayoutUnitForAbsoluteZoom(LayoutUnit value, const Render > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderElement, isRenderElement()) >+ > #endif // RenderElement_h >diff --git a/Source/WebCore/rendering/RenderEmbeddedObject.h b/Source/WebCore/rendering/RenderEmbeddedObject.h >index 2bfbec181c8abc48434a13e3fb1541e2cb2db7d3..83c7c37291062399c98d82a668e32ade0712ee7b 100644 >--- a/Source/WebCore/rendering/RenderEmbeddedObject.h >+++ b/Source/WebCore/rendering/RenderEmbeddedObject.h >@@ -105,4 +105,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderEmbeddedObject, isEmbeddedObject()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderEmbeddedObject, isEmbeddedObject()) >+ > #endif // RenderEmbeddedObject_h >diff --git a/Source/WebCore/rendering/RenderFieldset.h b/Source/WebCore/rendering/RenderFieldset.h >index 9f672d7a618d0ca0e8ad6206d04a3e915910c22b..44a83743e11534c8ebd293d7aaa1d647c687e900 100644 >--- a/Source/WebCore/rendering/RenderFieldset.h >+++ b/Source/WebCore/rendering/RenderFieldset.h >@@ -59,4 +59,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderFieldset, isFieldset()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFieldset, isFieldset()) >+ > #endif // RenderFieldset_h >diff --git a/Source/WebCore/rendering/RenderFileUploadControl.h b/Source/WebCore/rendering/RenderFileUploadControl.h >index 1d5a4cf5918c9faba406316c450c24c18c508ef0..ce4abadec1a9fd7f2c5391feb5275a033929ec90 100644 >--- a/Source/WebCore/rendering/RenderFileUploadControl.h >+++ b/Source/WebCore/rendering/RenderFileUploadControl.h >@@ -68,4 +68,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderFileUploadControl, isFileUploadControl()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFileUploadControl, isFileUploadControl()) >+ > #endif // RenderFileUploadControl_h >diff --git a/Source/WebCore/rendering/RenderFlexibleBox.h b/Source/WebCore/rendering/RenderFlexibleBox.h >index 35852c9bcf18bd50e411c70f7a7f0921d91de5b2..1f13620e20f85b16e34c7c2a6372fec41d48cec5 100644 >--- a/Source/WebCore/rendering/RenderFlexibleBox.h >+++ b/Source/WebCore/rendering/RenderFlexibleBox.h >@@ -165,4 +165,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderFlexibleBox, isFlexibleBox()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFlexibleBox, isFlexibleBox()) >+ > #endif // RenderFlexibleBox_h >diff --git a/Source/WebCore/rendering/RenderFlowThread.h b/Source/WebCore/rendering/RenderFlowThread.h >index d37328007b749df1027153d8eb9ebf5e2a0bff09..b9ed3b4fb0edc256a4e3a9030e872c9df9ba06d9 100644 >--- a/Source/WebCore/rendering/RenderFlowThread.h >+++ b/Source/WebCore/rendering/RenderFlowThread.h >@@ -410,4 +410,6 @@ template <> struct ValueToString<RenderRegion*> { > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFlowThread, isRenderFlowThread()) >+ > #endif // RenderFlowThread_h >diff --git a/Source/WebCore/rendering/RenderFrame.h b/Source/WebCore/rendering/RenderFrame.h >index 03f5a4fbb262dbdbd9bc99a5b81e488db1eaa540..dde9b6b8a3ba4c02d3b07d519f1c57f9ba994929 100644 >--- a/Source/WebCore/rendering/RenderFrame.h >+++ b/Source/WebCore/rendering/RenderFrame.h >@@ -50,4 +50,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderFrame, isFrame()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFrame, isFrame()) >+ > #endif // RenderFrame_h >diff --git a/Source/WebCore/rendering/RenderFrameSet.h b/Source/WebCore/rendering/RenderFrameSet.h >index 898293a7df6718fa438cd4bf788455286911fec5..e9b8a1ee30ca29c79a54daee9a8e0ef4e41d0e35 100644 >--- a/Source/WebCore/rendering/RenderFrameSet.h >+++ b/Source/WebCore/rendering/RenderFrameSet.h >@@ -130,4 +130,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderFrameSet, isFrameSet()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFrameSet, isFrameSet()) >+ > #endif // RenderFrameSet_h >diff --git a/Source/WebCore/rendering/RenderFullScreen.h b/Source/WebCore/rendering/RenderFullScreen.h >index c942fc578f9288053e6a7868783ed63e28e811f5..525e0e9633a0fd443c347accc4b875f1b7fff58e 100644 >--- a/Source/WebCore/rendering/RenderFullScreen.h >+++ b/Source/WebCore/rendering/RenderFullScreen.h >@@ -55,8 +55,10 @@ protected: > > RENDER_OBJECT_TYPE_CASTS(RenderFullScreen, isRenderFullScreen()) > >-} >+} // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFullScreen, isRenderFullScreen()) > >-#endif >+#endif // ENABLE(FULLSCREEN_API) >+ >+#endif // RenderFullScreen_h >diff --git a/Source/WebCore/rendering/RenderGrid.h b/Source/WebCore/rendering/RenderGrid.h >index 919461076255d74e4db91342bbcb3a39b508ae97..13563eb5c925d35ac0d9355241879c7f0ecd9a7c 100644 >--- a/Source/WebCore/rendering/RenderGrid.h >+++ b/Source/WebCore/rendering/RenderGrid.h >@@ -135,6 +135,8 @@ RENDER_OBJECT_TYPE_CASTS(RenderGrid, isRenderGrid()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderGrid, isRenderGrid()) >+ > #endif /* ENABLE(CSS_GRID_LAYOUT) */ > > #endif // RenderGrid_h >diff --git a/Source/WebCore/rendering/RenderHTMLCanvas.h b/Source/WebCore/rendering/RenderHTMLCanvas.h >index a05a1e1c91394f8c73a35d3d978e2c878cf7df53..a71edab44edeb7a50b2e0e6da454586ed66ac676 100644 >--- a/Source/WebCore/rendering/RenderHTMLCanvas.h >+++ b/Source/WebCore/rendering/RenderHTMLCanvas.h >@@ -53,4 +53,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderHTMLCanvas, isCanvas()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderHTMLCanvas, isCanvas()) >+ > #endif // RenderHTMLCanvas_h >diff --git a/Source/WebCore/rendering/RenderIFrame.h b/Source/WebCore/rendering/RenderIFrame.h >index 7cc0331b6cbef4d3856bbb0e4a96789cbdc6917f..686c6b25ed7ea3e91d8d3d9e9cd1bf07b0f81762 100644 >--- a/Source/WebCore/rendering/RenderIFrame.h >+++ b/Source/WebCore/rendering/RenderIFrame.h >@@ -66,4 +66,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderIFrame, isRenderIFrame()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderIFrame, isRenderIFrame()) >+ > #endif // RenderIFrame_h >diff --git a/Source/WebCore/rendering/RenderImage.h b/Source/WebCore/rendering/RenderImage.h >index 46370a919ac9812f1c5def7fb96c3033d7f03d92..c5aea054176230295b18f42689e7b0b1a6ab63df 100644 >--- a/Source/WebCore/rendering/RenderImage.h >+++ b/Source/WebCore/rendering/RenderImage.h >@@ -132,4 +132,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderImage, isRenderImage()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderImage, isRenderImage()) >+ > #endif // RenderImage_h >diff --git a/Source/WebCore/rendering/RenderInline.h b/Source/WebCore/rendering/RenderInline.h >index 49ae0cf99e7a4bac677d7c399d7eb59ff8fbc1b1..6281117ac967bf500f3fc8d08365bea4baa9a1b6 100644 >--- a/Source/WebCore/rendering/RenderInline.h >+++ b/Source/WebCore/rendering/RenderInline.h >@@ -184,4 +184,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderInline, isRenderInline()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderInline, isRenderInline()) >+ > #endif // RenderInline_h >diff --git a/Source/WebCore/rendering/RenderIterator.h b/Source/WebCore/rendering/RenderIterator.h >index 5c519475abd1e6d62754228fad710145045c607e..71b6135a32f60f49cb6ad3ba6c61b97ab62dfb1a 100644 >--- a/Source/WebCore/rendering/RenderIterator.h >+++ b/Source/WebCore/rendering/RenderIterator.h >@@ -80,7 +80,7 @@ template <typename T, typename U> > inline T* firstChild(U& current) > { > RenderObject* object = current.firstChild(); >- while (object && !isRendererOfType<const T>(*object)) >+ while (object && !WTF::TypeCastTraits<const T, const RenderObject>::isOfType(*object)) > object = object->nextSibling(); > return static_cast<T*>(object); > } >@@ -89,7 +89,7 @@ template <typename T, typename U> > inline T* lastChild(U& current) > { > RenderObject* object = current.lastChild(); >- while (object && !isRendererOfType<const T>(*object)) >+ while (object && !WTF::TypeCastTraits<const T, const RenderObject>::isOfType(*object)) > object = object->previousSibling(); > return static_cast<T*>(object); > } >@@ -98,7 +98,7 @@ template <typename T, typename U> > inline T* nextSibling(U& current) > { > RenderObject* object = current.nextSibling(); >- while (object && !isRendererOfType<const T>(*object)) >+ while (object && !WTF::TypeCastTraits<const T, const RenderObject>::isOfType(*object)) > object = object->nextSibling(); > return static_cast<T*>(object); > } >@@ -107,7 +107,7 @@ template <typename T, typename U> > inline T* previousSibling(U& current) > { > RenderObject* object = current.previousSibling(); >- while (object && !isRendererOfType<const T>(*object)) >+ while (object && !WTF::TypeCastTraits<const T, const RenderObject>::isOfType(*object)) > object = object->previousSibling(); > return static_cast<T*>(object); > } >@@ -115,8 +115,8 @@ inline T* previousSibling(U& current) > template <typename T> > inline T* findAncestorOfType(const RenderObject& current) > { >- for (auto ancestor = current.parent(); ancestor; ancestor = ancestor->parent()) { >- if (isRendererOfType<const T>(*ancestor)) >+ for (auto* ancestor = current.parent(); ancestor; ancestor = ancestor->parent()) { >+ if (WTF::TypeCastTraits<const T, const RenderElement>::isOfType(*ancestor)) > return static_cast<T*>(ancestor); > } > return nullptr; >diff --git a/Source/WebCore/rendering/RenderLayerModelObject.h b/Source/WebCore/rendering/RenderLayerModelObject.h >index 6c1a874bc1e0c3024d3c63a317d1f81371391388..209904202335603eb5de0cb2d9b0804fd54b3898 100644 >--- a/Source/WebCore/rendering/RenderLayerModelObject.h >+++ b/Source/WebCore/rendering/RenderLayerModelObject.h >@@ -73,4 +73,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderLayerModelObject, isRenderLayerModelObject()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderLayerModelObject, isRenderLayerModelObject()) >+ > #endif // RenderLayerModelObject_h >diff --git a/Source/WebCore/rendering/RenderLineBreak.h b/Source/WebCore/rendering/RenderLineBreak.h >index c394e86a38b8355363108526c1a7a4862771faa9..e8ec5ef7a2520f93eae18333d1f17c10d29a948f 100644 >--- a/Source/WebCore/rendering/RenderLineBreak.h >+++ b/Source/WebCore/rendering/RenderLineBreak.h >@@ -97,4 +97,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderLineBreak, isLineBreak()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderLineBreak, isLineBreak()) >+ > #endif // RenderLineBreak_h >diff --git a/Source/WebCore/rendering/RenderListBox.h b/Source/WebCore/rendering/RenderListBox.h >index 3b6db76e2fb02d4ea5ce459c721dcfe0ea3f3c21..5220b82fe6bcc7f2943f73421c38432b80dfe2ba 100644 >--- a/Source/WebCore/rendering/RenderListBox.h >+++ b/Source/WebCore/rendering/RenderListBox.h >@@ -165,4 +165,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderListBox, isListBox()) > > } // namepace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderListBox, isListBox()) >+ > #endif // RenderListBox_h >diff --git a/Source/WebCore/rendering/RenderListItem.h b/Source/WebCore/rendering/RenderListItem.h >index 795de3ae30801ed6d4218f9ad5f918463089be1a..0a81a38bf4e10d60c8a10ad458c06ea9a6484373 100644 >--- a/Source/WebCore/rendering/RenderListItem.h >+++ b/Source/WebCore/rendering/RenderListItem.h >@@ -97,4 +97,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderListItem, isListItem()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderListItem, isListItem()) >+ > #endif // RenderListItem_h >diff --git a/Source/WebCore/rendering/RenderListMarker.h b/Source/WebCore/rendering/RenderListMarker.h >index 243da0772c619fb1e9246c854f0a0f96865ed7a2..ea8d32f9de80a59d04a4fbc8e38c5ab0d9e62974 100644 >--- a/Source/WebCore/rendering/RenderListMarker.h >+++ b/Source/WebCore/rendering/RenderListMarker.h >@@ -89,4 +89,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderListMarker, isListMarker()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderListMarker, isListMarker()) >+ > #endif // RenderListMarker_h >diff --git a/Source/WebCore/rendering/RenderMedia.h b/Source/WebCore/rendering/RenderMedia.h >index e959e246604425fa675452f1bf674226c53a22f9..cf4e65da62811cd32dc1854395f0ed65e3d3a1ff 100644 >--- a/Source/WebCore/rendering/RenderMedia.h >+++ b/Source/WebCore/rendering/RenderMedia.h >@@ -60,6 +60,8 @@ RENDER_OBJECT_TYPE_CASTS(RenderMedia, isMedia()) > > } // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMedia, isMedia()) >+ >+#endif // ENABLE(VIDEO) > > #endif // RenderMedia_h >diff --git a/Source/WebCore/rendering/RenderMenuList.h b/Source/WebCore/rendering/RenderMenuList.h >index 4f0cd361af7f08c16f69689d1ea32a1ca09d8612..93e6bb2b9ada007748822f7696e0dc81af1b01bb 100644 >--- a/Source/WebCore/rendering/RenderMenuList.h >+++ b/Source/WebCore/rendering/RenderMenuList.h >@@ -154,6 +154,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderMenuList, isMenuList()) > >-} >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMenuList, isMenuList()) > > #endif >diff --git a/Source/WebCore/rendering/RenderMeter.h b/Source/WebCore/rendering/RenderMeter.h >index 80f333f80c3e67a57ae665a4a8e67c028a2851bc..a63250ea0afeb99e18cee8a25cd59f65717af646 100644 >--- a/Source/WebCore/rendering/RenderMeter.h >+++ b/Source/WebCore/rendering/RenderMeter.h >@@ -51,7 +51,9 @@ RENDER_OBJECT_TYPE_CASTS(RenderMeter, isMeter()) > > } // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMeter, isMeter()) >+ >+#endif // ENABLE(METER_ELEMENT) > > #endif // RenderMeter_h > >diff --git a/Source/WebCore/rendering/RenderMultiColumnFlowThread.h b/Source/WebCore/rendering/RenderMultiColumnFlowThread.h >index 8806582f022cbb76d50a1928d3cce2f8da3b2b12..7f74e729ec706a48869a7a5b8ccc8f13a4850300 100644 >--- a/Source/WebCore/rendering/RenderMultiColumnFlowThread.h >+++ b/Source/WebCore/rendering/RenderMultiColumnFlowThread.h >@@ -163,5 +163,7 @@ RENDER_OBJECT_TYPE_CASTS(RenderMultiColumnFlowThread, isRenderMultiColumnFlowThr > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMultiColumnFlowThread, isRenderMultiColumnFlowThread()) >+ > #endif // RenderMultiColumnFlowThread_h > >diff --git a/Source/WebCore/rendering/RenderMultiColumnSet.h b/Source/WebCore/rendering/RenderMultiColumnSet.h >index efedb91fbccf14af50605ec0cbd0895f672f1810..750d5cc9bcff16eacc20c2a86ddc9f78fd4c0481 100644 >--- a/Source/WebCore/rendering/RenderMultiColumnSet.h >+++ b/Source/WebCore/rendering/RenderMultiColumnSet.h >@@ -229,5 +229,7 @@ RENDER_OBJECT_TYPE_CASTS(RenderMultiColumnSet, isRenderMultiColumnSet()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMultiColumnSet, isRenderMultiColumnSet()) >+ > #endif // RenderMultiColumnSet_h > >diff --git a/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h b/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h >index 10a5ca45a8376d57ac49865f6875089163f2b237..caac2e7bdda747abee92ecc7a8e7421547823175 100644 >--- a/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h >+++ b/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h >@@ -59,4 +59,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderMultiColumnSpannerPlaceholder, isRenderMultiColum > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMultiColumnSpannerPlaceholder, isRenderMultiColumnSpannerPlaceholder()) >+ > #endif // RenderMultiColumnSpannerPlaceholder_h >diff --git a/Source/WebCore/rendering/RenderNamedFlowFragment.h b/Source/WebCore/rendering/RenderNamedFlowFragment.h >index 9995e3afc07dc4bd16ceccc6a8df8d6ce1f68b25..f6ce2fa1ed88e44fa35953ba7f2a444c1b3a52f8 100644 >--- a/Source/WebCore/rendering/RenderNamedFlowFragment.h >+++ b/Source/WebCore/rendering/RenderNamedFlowFragment.h >@@ -167,4 +167,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderNamedFlowFragment, isRenderNamedFlowFragment()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderNamedFlowFragment, isRenderNamedFlowFragment()) >+ > #endif // RenderNamedFlowFragment_h >diff --git a/Source/WebCore/rendering/RenderNamedFlowThread.h b/Source/WebCore/rendering/RenderNamedFlowThread.h >index ede9c07c013b8f731eddf54ef70a071b78c2c209..d82713a24e968930057cdcb663ce199b1e3420b8 100644 >--- a/Source/WebCore/rendering/RenderNamedFlowThread.h >+++ b/Source/WebCore/rendering/RenderNamedFlowThread.h >@@ -163,4 +163,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderNamedFlowThread, isRenderNamedFlowThread()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderNamedFlowThread, isRenderNamedFlowThread()) >+ > #endif // RenderNamedFlowThread_h >diff --git a/Source/WebCore/rendering/RenderObject.h b/Source/WebCore/rendering/RenderObject.h >index b1a81c94a7a0031a2343a4bca4cce55dbeed2781..44232fa364be9372bb285907171acb0752d90969 100644 >--- a/Source/WebCore/rendering/RenderObject.h >+++ b/Source/WebCore/rendering/RenderObject.h >@@ -38,6 +38,7 @@ > #include "StyleInheritedData.h" > #include "TextAffinity.h" > #include <wtf/HashSet.h> >+#include <wtf/TypeCasts.h> > > namespace WebCore { > >@@ -1030,9 +1031,6 @@ private: > void setEverHadLayout(bool b) { m_bitfields.setEverHadLayout(b); } > }; > >-template <typename Type> bool isRendererOfType(const RenderObject&); >-template <> inline bool isRendererOfType<const RenderObject>(const RenderObject&) { return true; } >- > inline Frame& RenderObject::frame() const > { > return *document().frame(); >@@ -1128,12 +1126,17 @@ inline bool RenderObject::backgroundIsKnownToBeObscured() > return m_bitfields.boxDecorationState() == HasBoxDecorationsAndBackgroundIsKnownToBeObscured; > } > >+// FIXME: Remove this macro and use SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT() instead. > #define RENDER_OBJECT_TYPE_CASTS(ToValueTypeName, predicate) \ >- template <> inline bool isRendererOfType<const ToValueTypeName>(const RenderObject& renderer) { return renderer.predicate; } \ >- TYPE_CASTS_BASE(ToValueTypeName, RenderObject, renderer, isRendererOfType<const ToValueTypeName>(*renderer), isRendererOfType<const ToValueTypeName>(renderer)) >+ TYPE_CASTS_BASE(ToValueTypeName, RenderObject, renderer, is<ToValueTypeName>(*renderer), is<ToValueTypeName>(renderer)) > > } // namespace WebCore > >+#define SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(ToValueTypeName, predicate) \ >+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ToValueTypeName) \ >+ static bool isType(const WebCore::RenderObject& renderer) { return renderer.predicate; } \ >+SPECIALIZE_TYPE_TRAITS_END() >+ > #ifndef NDEBUG > // Outside the WebCore namespace for ease of invocation from gdb. > void showNodeTree(const WebCore::RenderObject*); >diff --git a/Source/WebCore/rendering/RenderProgress.h b/Source/WebCore/rendering/RenderProgress.h >index 3cb4d25c5291daf2ecb9f78ced805e53e0db660d..86e87654a37e81dd0301e6f415216bc4c6633156 100644 >--- a/Source/WebCore/rendering/RenderProgress.h >+++ b/Source/WebCore/rendering/RenderProgress.h >@@ -62,5 +62,7 @@ RENDER_OBJECT_TYPE_CASTS(RenderProgress, isProgress()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderProgress, isProgress()) >+ > #endif // RenderProgress_h > >diff --git a/Source/WebCore/rendering/RenderQuote.h b/Source/WebCore/rendering/RenderQuote.h >index ea2a83cd40912bb73a721f01340421f3a2036381..ab9b8ca1b4fad58509d0701c9cea5e843a619291 100644 >--- a/Source/WebCore/rendering/RenderQuote.h >+++ b/Source/WebCore/rendering/RenderQuote.h >@@ -59,4 +59,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderQuote, isQuote()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderQuote, isQuote()) >+ > #endif // RenderQuote_h >diff --git a/Source/WebCore/rendering/RenderRegion.h b/Source/WebCore/rendering/RenderRegion.h >index 3acec0a4d5daaf310463f496be5da39fe96c603e..01e674c0bb21cbc2af50fdc2ceced93a957291fd 100644 >--- a/Source/WebCore/rendering/RenderRegion.h >+++ b/Source/WebCore/rendering/RenderRegion.h >@@ -179,8 +179,6 @@ private: > bool m_isValid : 1; > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderRegion, isRenderRegion()) >- > class CurrentRenderRegionMaintainer { > WTF_MAKE_NONCOPYABLE(CurrentRenderRegionMaintainer); > public: >@@ -194,4 +192,6 @@ private: > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderRegion, isRenderRegion()) >+ > #endif // RenderRegion_h >diff --git a/Source/WebCore/rendering/RenderReplaced.h b/Source/WebCore/rendering/RenderReplaced.h >index d2ab7b86e6cbd287889f0a45fd0c38207c1923d4..a85937267bf0b71a215b7b16b80f37a0544c7df4 100644 >--- a/Source/WebCore/rendering/RenderReplaced.h >+++ b/Source/WebCore/rendering/RenderReplaced.h >@@ -91,6 +91,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderReplaced, isRenderReplaced()) > >-} >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderReplaced, isRenderReplaced()) > > #endif >diff --git a/Source/WebCore/rendering/RenderRubyRun.h b/Source/WebCore/rendering/RenderRubyRun.h >index 2fe15b90fc118028fff53e55abce4c40af75b9e4..a0adafba7702b2c8c252c4d510f046a6f4ff3f13 100644 >--- a/Source/WebCore/rendering/RenderRubyRun.h >+++ b/Source/WebCore/rendering/RenderRubyRun.h >@@ -81,4 +81,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderRubyRun, isRubyRun()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderRubyRun, isRubyRun()) >+ > #endif // RenderRubyRun_h >diff --git a/Source/WebCore/rendering/RenderScrollbarPart.h b/Source/WebCore/rendering/RenderScrollbarPart.h >index 0d38d6f4b66d76cb01e3be665e3a869653f4e7ff..0cb670b320e0a8e4fb10c376b62c4d730b305d4b 100644 >--- a/Source/WebCore/rendering/RenderScrollbarPart.h >+++ b/Source/WebCore/rendering/RenderScrollbarPart.h >@@ -77,4 +77,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderScrollbarPart, isRenderScrollbarPart()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderScrollbarPart, isRenderScrollbarPart()) >+ > #endif // RenderScrollbarPart_h >diff --git a/Source/WebCore/rendering/RenderSearchField.h b/Source/WebCore/rendering/RenderSearchField.h >index 436561c17e5e26b72b966ad86f59ca44d3c46919..0a066330aadcb968b7586d4506cf9f99d83e763c 100644 >--- a/Source/WebCore/rendering/RenderSearchField.h >+++ b/Source/WebCore/rendering/RenderSearchField.h >@@ -92,6 +92,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderSearchField, isTextField()) > >-} >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSearchField, isTextField()) > > #endif >diff --git a/Source/WebCore/rendering/RenderSlider.h b/Source/WebCore/rendering/RenderSlider.h >index 96572efe87280ce826a88323efed1c67c8345289..da8ac7ab86774984804115bd7f586698f12dc291 100644 >--- a/Source/WebCore/rendering/RenderSlider.h >+++ b/Source/WebCore/rendering/RenderSlider.h >@@ -55,4 +55,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderSlider, isSlider()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSlider, isSlider()) >+ > #endif // RenderSlider_h >diff --git a/Source/WebCore/rendering/RenderSnapshottedPlugIn.h b/Source/WebCore/rendering/RenderSnapshottedPlugIn.h >index edf5751ad4112c17202e1a0e763c7616701103ec..092c50fb4504ea2fa6bb7fd0f7137a124a2cd504 100644 >--- a/Source/WebCore/rendering/RenderSnapshottedPlugIn.h >+++ b/Source/WebCore/rendering/RenderSnapshottedPlugIn.h >@@ -67,4 +67,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderSnapshottedPlugIn, isSnapshottedPlugIn()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSnapshottedPlugIn, isSnapshottedPlugIn()) >+ > #endif // RenderSnapshottedPlugIn_h >diff --git a/Source/WebCore/rendering/RenderTable.h b/Source/WebCore/rendering/RenderTable.h >index 3f4bb8ae07317951686bdcc76ac9d40dafdbb09e..d9d1ee8b04e17e78c9f5ada3f5d6bab712714b13 100644 >--- a/Source/WebCore/rendering/RenderTable.h >+++ b/Source/WebCore/rendering/RenderTable.h >@@ -385,4 +385,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderTable, isTable()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTable, isTable()) >+ > #endif // RenderTable_h >diff --git a/Source/WebCore/rendering/RenderTableCaption.h b/Source/WebCore/rendering/RenderTableCaption.h >index 14ba9d2d38c2ad3f915bb13f53e471bd04330411..963b181b1ebf3e94a06b9fefbf397f2156edc7c7 100644 >--- a/Source/WebCore/rendering/RenderTableCaption.h >+++ b/Source/WebCore/rendering/RenderTableCaption.h >@@ -48,4 +48,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderTableCaption, isTableCaption()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableCaption, isTableCaption()) >+ > #endif // RenderTableCaption_h >diff --git a/Source/WebCore/rendering/RenderTableCell.h b/Source/WebCore/rendering/RenderTableCell.h >index 8a5bf2a4737ce4520bea142dbd743129c538e068..77c92b990b8db5cacccdbde012482b83d3859c25 100644 >--- a/Source/WebCore/rendering/RenderTableCell.h >+++ b/Source/WebCore/rendering/RenderTableCell.h >@@ -318,4 +318,6 @@ inline RenderTableCell* RenderTableRow::lastCell() const > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableCell, isTableCell()) >+ > #endif // RenderTableCell_h >diff --git a/Source/WebCore/rendering/RenderTableCol.h b/Source/WebCore/rendering/RenderTableCol.h >index 9dd93564f6a80f0e681b78ba37824f41b86acf93..b79d2c3a1b9653dde00e197c39714493076dc402 100644 >--- a/Source/WebCore/rendering/RenderTableCol.h >+++ b/Source/WebCore/rendering/RenderTableCol.h >@@ -102,6 +102,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderTableCol, isRenderTableCol()) > >-} >+} // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableCol, isRenderTableCol()) >+ >+#endif // RenderTableCol_h >diff --git a/Source/WebCore/rendering/RenderTableRow.h b/Source/WebCore/rendering/RenderTableRow.h >index 6470e6f2b6d054a3228e79d9e900b7c4ff507135..75becb5248f21df9149c80fb8ff23adbbb5027c5 100644 >--- a/Source/WebCore/rendering/RenderTableRow.h >+++ b/Source/WebCore/rendering/RenderTableRow.h >@@ -143,4 +143,6 @@ inline RenderTableRow* RenderTableRow::previousRow() const > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableRow, isTableRow()) >+ > #endif // RenderTableRow_h >diff --git a/Source/WebCore/rendering/RenderTableSection.h b/Source/WebCore/rendering/RenderTableSection.h >index ee23309164203d80f722ecaad13f69e98cdaaf9d..b4b30c164eb02c7ff1f28974df98ddbe98f78615 100644 >--- a/Source/WebCore/rendering/RenderTableSection.h >+++ b/Source/WebCore/rendering/RenderTableSection.h >@@ -351,4 +351,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderTableSection, isTableSection()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableSection, isTableSection()) >+ > #endif // RenderTableSection_h >diff --git a/Source/WebCore/rendering/RenderText.h b/Source/WebCore/rendering/RenderText.h >index 84115a33e2a145586f064f72ef558d23c009e506..0eb233c3a551cc8d348a414882693856f2f927b2 100644 >--- a/Source/WebCore/rendering/RenderText.h >+++ b/Source/WebCore/rendering/RenderText.h >@@ -259,4 +259,6 @@ inline RenderText* Text::renderer() const > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderText, isText()) >+ > #endif // RenderText_h >diff --git a/Source/WebCore/rendering/RenderTextControl.h b/Source/WebCore/rendering/RenderTextControl.h >index 2150840232cea54faf49956d6a5c8a0e34500b94..b9c2a373898fdc71bd87fd5f9034c9d45b30316b 100644 >--- a/Source/WebCore/rendering/RenderTextControl.h >+++ b/Source/WebCore/rendering/RenderTextControl.h >@@ -109,7 +109,8 @@ public: > > }; > >- > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextControl, isTextControl()) >+ > #endif // RenderTextControl_h >diff --git a/Source/WebCore/rendering/RenderTextControlMultiLine.h b/Source/WebCore/rendering/RenderTextControlMultiLine.h >index 84ab228c9dca89346c49232461d25324f34b8b32..6455c10fc0b98667f87f658d7d55aecbffed0d4a 100644 >--- a/Source/WebCore/rendering/RenderTextControlMultiLine.h >+++ b/Source/WebCore/rendering/RenderTextControlMultiLine.h >@@ -53,6 +53,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderTextControlMultiLine, isTextArea()) > >-} >+} // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextControlMultiLine, isTextArea()) >+ >+#endif // RenderTextControlMultiLine_h >diff --git a/Source/WebCore/rendering/RenderTextControlSingleLine.h b/Source/WebCore/rendering/RenderTextControlSingleLine.h >index feb8051e7e814afc895db2d91fb88eb1688055b4..61c07d6b5dc5f2e72269a74d4ba02e23df4003db 100644 >--- a/Source/WebCore/rendering/RenderTextControlSingleLine.h >+++ b/Source/WebCore/rendering/RenderTextControlSingleLine.h >@@ -115,6 +115,9 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderTextControlInnerBlock, isTextControlInnerBlock()) > >-} >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextControlSingleLine, isTextField()) >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextControlInnerBlock, isTextControlInnerBlock()) > >-#endif >+#endif // RenderTextControlSingleLine_h >diff --git a/Source/WebCore/rendering/RenderTextFragment.h b/Source/WebCore/rendering/RenderTextFragment.h >index b03d462d5fdddd569efa140ea9e0809ead9e395f..6c2af2bbf3b9bfc5660f85fe2451ad6c43699c7b 100644 >--- a/Source/WebCore/rendering/RenderTextFragment.h >+++ b/Source/WebCore/rendering/RenderTextFragment.h >@@ -76,4 +76,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderTextFragment, isText() && toRenderText(renderer). > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextFragment, isText() && toRenderText(renderer).isTextFragment()) >+ > #endif // RenderTextFragment_h >diff --git a/Source/WebCore/rendering/RenderVideo.h b/Source/WebCore/rendering/RenderVideo.h >index 47b50158ee824b5491c753656f4a23bc7ec03534..54ae3f05ba10f951417fd669c964c4012da28725 100644 >--- a/Source/WebCore/rendering/RenderVideo.h >+++ b/Source/WebCore/rendering/RenderVideo.h >@@ -94,5 +94,7 @@ RENDER_OBJECT_TYPE_CASTS(RenderVideo, isVideo()) > > } // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderVideo, isVideo()) >+ >+#endif // ENABLE(VIDEO) > #endif // RenderVideo_h >diff --git a/Source/WebCore/rendering/RenderView.h b/Source/WebCore/rendering/RenderView.h >index d2ce07d96695e7704acc46b0239fbc25740a28a4..567c53fb568b68067bc912c433689f05f9c10297 100644 >--- a/Source/WebCore/rendering/RenderView.h >+++ b/Source/WebCore/rendering/RenderView.h >@@ -456,4 +456,6 @@ private: > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderView, isRenderView()) >+ > #endif // RenderView_h >diff --git a/Source/WebCore/rendering/RenderWidget.h b/Source/WebCore/rendering/RenderWidget.h >index 15781f60ad28b89d1d0cd7a9255c582ed52dfb68..b27ae9ae3cfb0c5ef302d1c51c6916bfad57670c 100644 >--- a/Source/WebCore/rendering/RenderWidget.h >+++ b/Source/WebCore/rendering/RenderWidget.h >@@ -108,4 +108,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderWidget, isWidget()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderWidget, isWidget()) >+ > #endif // RenderWidget_h >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLBlock.h b/Source/WebCore/rendering/mathml/RenderMathMLBlock.h >index f41500e76a229a72b9fc3fb8f422a5b3e4bb45fc..c94a21d7dbc274e983db8e760f2f510627a04ae1 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLBlock.h >+++ b/Source/WebCore/rendering/mathml/RenderMathMLBlock.h >@@ -69,8 +69,6 @@ private: > virtual const char* renderName() const override; > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLBlock, isRenderMathMLBlock()) >- > class RenderMathMLTable final : public RenderTable { > public: > explicit RenderMathMLTable(Element& element, PassRef<RenderStyle> style) >@@ -85,12 +83,14 @@ private: > virtual const char* renderName() const override { return "RenderMathMLTable"; } > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLTable, isRenderMathMLTable()) >- > // Parsing functions for MathML Length values > bool parseMathMLLength(const String&, LayoutUnit&, const RenderStyle*, bool allowNegative = true); > bool parseMathMLNamedSpace(const String&, LayoutUnit&, const RenderStyle*, bool allowNegative = true); >-} >+ >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLBlock, isRenderMathMLBlock()) >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLTable, isRenderMathMLTable()) > > #endif // ENABLE(MATHML) > #endif // RenderMathMLBlock_h >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp b/Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp >index 31deff182297e4bf9cd805ad82d5788fafd18d2b..a84935aeaebb10a07cbd4ead9dcbbae0d4dae98e 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp >+++ b/Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp >@@ -78,7 +78,7 @@ void RenderMathMLFenced::updateFromElement() > makeFences(); > else { > // FIXME: The mfenced element fails to update dynamically when its open, close and separators attributes are changed (https://bugs.webkit.org/show_bug.cgi?id=57696). >- toRenderMathMLOperator(firstChild())->updateTokenContent(m_open); >+ downcast<RenderMathMLOperator>(*firstChild()).updateTokenContent(m_open); > m_closeFenceRenderer->updateTokenContent(m_close); > } > } >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp b/Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp >index ccec41edfb8a71763c05aa200cd3ad6e8c98ac56..b5ef27fed36358a139b5113bee9480c1fe1d28da 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp >+++ b/Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp >@@ -120,11 +120,11 @@ RenderMathMLOperator* RenderMathMLFraction::unembellishedOperator() > { > RenderObject* numeratorWrapper = firstChild(); > if (!numeratorWrapper) >- return 0; >+ return nullptr; > RenderObject* numerator = numeratorWrapper->firstChildSlow(); >- if (!numerator || !numerator->isRenderMathMLBlock()) >- return 0; >- return toRenderMathMLBlock(numerator)->unembellishedOperator(); >+ if (!is<RenderMathMLBlock>(numerator)) >+ return nullptr; >+ return downcast<RenderMathMLBlock>(*numerator).unembellishedOperator(); > } > > void RenderMathMLFraction::layout() >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLFraction.h b/Source/WebCore/rendering/mathml/RenderMathMLFraction.h >index 6922d29fe559e692173252722da98051f21270bb..8f2c717939d122bb646918ede3c9ffcc5db86045 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLFraction.h >+++ b/Source/WebCore/rendering/mathml/RenderMathMLFraction.h >@@ -58,9 +58,9 @@ private: > LayoutUnit m_lineThickness; > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLFraction, isRenderMathMLFraction()) >+} // namespace WebCore > >-} >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLFraction, isRenderMathMLFraction()) > > #endif // ENABLE(MATHML) > >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLOperator.h b/Source/WebCore/rendering/mathml/RenderMathMLOperator.h >index c209878774f808778f7446edad3b4a2a3d4cdb71..5361bf4edb9f003580a78de0937262b31596e342 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLOperator.h >+++ b/Source/WebCore/rendering/mathml/RenderMathMLOperator.h >@@ -189,9 +189,9 @@ protected: > virtual void SetOperatorProperties(); > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLOperator, isRenderMathMLOperator()) >+} // namespace WebCore > >-} >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLOperator, isRenderMathMLOperator()) > > #endif // ENABLE(MATHML) > #endif // RenderMathMLOperator_h >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLRadicalOperator.h b/Source/WebCore/rendering/mathml/RenderMathMLRadicalOperator.h >index 40aa9f8ca32772cb72e9b4b058753f110c7a5703..bc3b4be1bee317b912a55f47dce6688a79ac9c24 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLRadicalOperator.h >+++ b/Source/WebCore/rendering/mathml/RenderMathMLRadicalOperator.h >@@ -48,9 +48,9 @@ private: > void SetOperatorProperties() override; > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLRadicalOperator, isRenderMathMLRadicalOperator()) >+} // namespace WebCore > >-} >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRadicalOperator, isRenderMathMLRadicalOperator()) > > #endif // ENABLE(MATHML) > #endif // RenderMathMLRadicalOperator_h >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp b/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp >index 275634925520d8be8f0007ce38ada18b23770767..280639068d56ad90a279242f75f9a70979e84435 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp >+++ b/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp >@@ -35,6 +35,7 @@ > #include "PaintInfo.h" > #include "RenderIterator.h" > #include "RenderMathMLRadicalOperator.h" >+#include "RenderMathMLSquareRoot.h" > > namespace WebCore { > >@@ -67,25 +68,25 @@ RenderMathMLRoot::RenderMathMLRoot(Document& document, PassRef<RenderStyle> styl > RenderMathMLRootWrapper* RenderMathMLRoot::baseWrapper() const > { > ASSERT(!isEmpty()); >- return toRenderMathMLRootWrapper(lastChild()); >+ return downcast<RenderMathMLRootWrapper>(lastChild()); > } > > RenderMathMLBlock* RenderMathMLRoot::radicalWrapper() const > { > ASSERT(!isEmpty()); >- return toRenderMathMLBlock(lastChild()->previousSibling()); >+ return downcast<RenderMathMLBlock>(lastChild()->previousSibling()); > } > > RenderMathMLRootWrapper* RenderMathMLRoot::indexWrapper() const > { > ASSERT(!isEmpty()); >- return isRenderMathMLSquareRoot() ? nullptr : toRenderMathMLRootWrapper(firstChild()); >+ return is<RenderMathMLSquareRoot>(*this) ? nullptr : downcast<RenderMathMLRootWrapper>(firstChild()); > } > > RenderMathMLRadicalOperator* RenderMathMLRoot::radicalOperator() const > { > ASSERT(!isEmpty()); >- return toRenderMathMLRadicalOperator(radicalWrapper()->firstChild()); >+ return downcast<RenderMathMLRadicalOperator>(radicalWrapper()->firstChild()); > } > > void RenderMathMLRoot::restructureWrappers() >@@ -358,7 +359,7 @@ RenderObject* RenderMathMLRootWrapper::removeChild(RenderObject& child) > RenderObject* next = RenderMathMLBlock::removeChild(child); > > if (!(beingDestroyed() || documentBeingDestroyed())) >- toRenderMathMLRoot(parent())->restructureWrappers(); >+ downcast<RenderMathMLRoot>(*parent()).restructureWrappers(); > > return next; > } >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLRoot.h b/Source/WebCore/rendering/mathml/RenderMathMLRoot.h >index fe93dee86637d9163895094317b261618531df8b..af000a72c39370aec2f38225de59653c5cccbe8c 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLRoot.h >+++ b/Source/WebCore/rendering/mathml/RenderMathMLRoot.h >@@ -71,8 +71,6 @@ private: > LayoutUnit m_extraAscender; > float m_degreeBottomRaisePercent; > }; >- >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLRoot, isRenderMathMLRoot()) > > // These are specific wrappers for the index and base, that ask the parent to restructure the renderers after child removal. > class RenderMathMLRootWrapper : public RenderMathMLRow { >@@ -91,9 +89,10 @@ private: > virtual const char* renderName() const override { return "RenderMathMLRootWrapper"; } > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLRootWrapper, isRenderMathMLRootWrapper()) >+} // namespace WebCore > >-} >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRoot, isRenderMathMLRoot()) >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRootWrapper, isRenderMathMLRootWrapper()) > > #endif // ENABLE(MATHML) > >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp b/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp >index 3e83378e5222b431d83a42fcf6c950622e9fef47..cf049ad5cf522efb5daa98574c646a0da9348401 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp >+++ b/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp >@@ -58,8 +58,8 @@ RenderPtr<RenderMathMLRow> RenderMathMLRow::createAnonymousWithParentRenderer(Re > void RenderMathMLRow::updateOperatorProperties() > { > for (RenderObject* child = firstChild(); child; child = child->nextSibling()) { >- if (child->isRenderMathMLBlock()) { >- if (auto renderOperator = toRenderMathMLBlock(child)->unembellishedOperator()) >+ if (is<RenderMathMLBlock>(*child)) { >+ if (auto* renderOperator = downcast<RenderMathMLBlock>(*child).unembellishedOperator()) > renderOperator->updateOperatorProperties(); > } > } >@@ -71,26 +71,26 @@ void RenderMathMLRow::layout() > int stretchHeightAboveBaseline = 0, stretchDepthBelowBaseline = 0; > for (RenderObject* child = firstChild(); child; child = child->nextSibling()) { > if (child->needsLayout()) >- toRenderElement(child)->layout(); >- if (child->isRenderMathMLBlock()) { >+ downcast<RenderElement>(*child).layout(); >+ if (is<RenderMathMLBlock>(*child)) { > // We skip the stretchy operators as they must not be included in the computation of the stretch size. >- auto renderOperator = toRenderMathMLBlock(child)->unembellishedOperator(); >+ auto* renderOperator = downcast<RenderMathMLBlock>(*child).unembellishedOperator(); > if (renderOperator && renderOperator->hasOperatorFlag(MathMLOperatorDictionary::Stretchy)) > continue; > } > LayoutUnit childHeightAboveBaseline = 0, childDepthBelowBaseline = 0; >- if (child->isRenderMathMLBlock()) { >- RenderMathMLBlock* mathmlChild = toRenderMathMLBlock(child); >- childHeightAboveBaseline = mathmlChild->firstLineBaseline(); >+ if (is<RenderMathMLBlock>(*child)) { >+ RenderMathMLBlock& mathmlChild = downcast<RenderMathMLBlock>(*child); >+ childHeightAboveBaseline = mathmlChild.firstLineBaseline(); > if (childHeightAboveBaseline == -1) >- childHeightAboveBaseline = mathmlChild->logicalHeight(); >- childDepthBelowBaseline = mathmlChild->logicalHeight() - childHeightAboveBaseline; >- } else if (child->isRenderMathMLTable()) { >- RenderMathMLTable* tableChild = toRenderMathMLTable(child); >- childHeightAboveBaseline = tableChild->firstLineBaseline(); >- childDepthBelowBaseline = tableChild->logicalHeight() - childHeightAboveBaseline; >- } else if (child->isBox()) { >- childHeightAboveBaseline = toRenderBox(child)->logicalHeight(); >+ childHeightAboveBaseline = mathmlChild.logicalHeight(); >+ childDepthBelowBaseline = mathmlChild.logicalHeight() - childHeightAboveBaseline; >+ } else if (is<RenderMathMLTable>(*child)) { >+ RenderMathMLTable& tableChild = downcast<RenderMathMLTable>(*child); >+ childHeightAboveBaseline = tableChild.firstLineBaseline(); >+ childDepthBelowBaseline = tableChild.logicalHeight() - childHeightAboveBaseline; >+ } else if (is<RenderBox>(*child)) { >+ childHeightAboveBaseline = downcast<RenderBox>(*child).logicalHeight(); > childDepthBelowBaseline = 0; > } > stretchHeightAboveBaseline = std::max<LayoutUnit>(stretchHeightAboveBaseline, childHeightAboveBaseline); >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLRow.h b/Source/WebCore/rendering/mathml/RenderMathMLRow.h >index 5732ec17de657bdbd56a75ee316e09e3faa07f02..ba5df88257d68dbd1402146c1ce0ef5a07787027 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLRow.h >+++ b/Source/WebCore/rendering/mathml/RenderMathMLRow.h >@@ -50,9 +50,9 @@ private: > virtual const char* renderName() const override { return isAnonymous() ? "RenderMathMLRow (anonymous)" : "RenderMathMLRow"; } > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLRow, isRenderMathMLRow()) >+} // namespace WebCore > >-} >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRow, isRenderMathMLRow()) > > #endif // ENABLE(MATHML) > #endif // RenderMathMLRow_h >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp b/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp >index 0c4cb1bdb61228d0c5f8cfd22433e35c10260023..dfa44fe8b3df985d0fa383a2bb62c92f0f517004 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp >+++ b/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp >@@ -153,10 +153,10 @@ void RenderMathMLScripts::addChildInternal(bool doNotRestructure, RenderObject* > // beforeChild may be a grandchild, so we call the addChild function of the corresponding wrapper instead. > RenderObject* parent = beforeChild->parent(); > if (parent != this) { >- RenderMathMLBlock* parentBlock = toRenderMathMLBlock(parent); >- if (parentBlock->isRenderMathMLScriptsWrapper()) { >- RenderMathMLScriptsWrapper* wrapper = toRenderMathMLScriptsWrapper(parentBlock); >- wrapper->addChildInternal(false, child, beforeChild); >+ RenderMathMLBlock& parentBlock = downcast<RenderMathMLBlock>(*parent); >+ if (parentBlock.isRenderMathMLScriptsWrapper()) { >+ RenderMathMLScriptsWrapper& wrapper = downcast<RenderMathMLScriptsWrapper>(parentBlock); >+ wrapper.addChildInternal(false, child, beforeChild); > return; > } > } >@@ -176,12 +176,12 @@ void RenderMathMLScripts::addChildInternal(bool doNotRestructure, RenderObject* > > if (!beforeChild || isPrescript(beforeChild)) { > // We are at the end of a sequence of subSup pairs. >- RenderMathMLBlock* previousSibling = toRenderMathMLBlock(beforeChild ? beforeChild->previousSibling() : lastChild()); >- if (previousSibling && previousSibling->isRenderMathMLScriptsWrapper()) { >- RenderMathMLScriptsWrapper* wrapper = toRenderMathMLScriptsWrapper(previousSibling); >- if ((wrapper->m_kind == RenderMathMLScriptsWrapper::Base && wrapper->isEmpty()) || (wrapper->m_kind == RenderMathMLScriptsWrapper::SubSupPair && !wrapper->firstChild()->nextSibling())) { >+ RenderMathMLBlock* previousSibling = downcast<RenderMathMLBlock>(beforeChild ? beforeChild->previousSibling() : lastChild()); >+ if (is<RenderMathMLScriptsWrapper>(previousSibling)) { >+ RenderMathMLScriptsWrapper& wrapper = downcast<RenderMathMLScriptsWrapper>(*previousSibling); >+ if ((wrapper.m_kind == RenderMathMLScriptsWrapper::Base && wrapper.isEmpty()) || (wrapper.m_kind == RenderMathMLScriptsWrapper::SubSupPair && !wrapper.firstChild()->nextSibling())) { > // The previous sibling is either an empty base or a SubSup pair with a single child so we can insert the new child into that wrapper. >- wrapper->addChildInternal(true, child); >+ wrapper.addChildInternal(true, child); > return; > } > } >@@ -193,10 +193,10 @@ void RenderMathMLScripts::addChildInternal(bool doNotRestructure, RenderObject* > } > > // beforeChild is a subSup pair. This is like inserting the new child at the beginning of the subSup wrapper. >- RenderMathMLScriptsWrapper* wrapper = toRenderMathMLScriptsWrapper(beforeChild); >- ASSERT(wrapper->m_kind == RenderMathMLScriptsWrapper::SubSupPair); >+ RenderMathMLScriptsWrapper& wrapper = downcast<RenderMathMLScriptsWrapper>(*beforeChild); >+ ASSERT(wrapper.m_kind == RenderMathMLScriptsWrapper::SubSupPair); > ASSERT(!(m_baseWrapper->isEmpty() && m_baseWrapper->nextSibling() == beforeChild)); >- wrapper->addChildInternal(false, child, wrapper->firstChild()); >+ wrapper.addChildInternal(false, child, wrapper.firstChild()); > } > > RenderObject* RenderMathMLScripts::removeChildInternal(bool doNotRestructure, RenderObject& child) >@@ -211,13 +211,13 @@ RenderObject* RenderMathMLScripts::removeChildInternal(bool doNotRestructure, Re > ASSERT(previousSibling); > > if (nextSibling && !isPrescript(previousSibling) && !isPrescript(nextSibling)) { >- RenderMathMLScriptsWrapper* previousWrapper = toRenderMathMLScriptsWrapper(previousSibling); >- RenderMathMLScriptsWrapper* nextWrapper = toRenderMathMLScriptsWrapper(nextSibling); >- ASSERT(nextWrapper->m_kind == RenderMathMLScriptsWrapper::SubSupPair && !nextWrapper->isEmpty()); >- if ((previousWrapper->m_kind == RenderMathMLScriptsWrapper::Base && previousWrapper->isEmpty()) || (previousWrapper->m_kind == RenderMathMLScriptsWrapper::SubSupPair && !previousWrapper->firstChild()->nextSibling())) { >- RenderObject* script = nextWrapper->firstChild(); >- nextWrapper->removeChildInternal(false, *script); >- previousWrapper->addChildInternal(true, script); >+ RenderMathMLScriptsWrapper& previousWrapper = downcast<RenderMathMLScriptsWrapper>(*previousSibling); >+ RenderMathMLScriptsWrapper& nextWrapper = downcast<RenderMathMLScriptsWrapper>(*nextSibling); >+ ASSERT(nextWrapper.m_kind == RenderMathMLScriptsWrapper::SubSupPair && !nextWrapper.isEmpty()); >+ if ((previousWrapper.m_kind == RenderMathMLScriptsWrapper::Base && previousWrapper.isEmpty()) || (previousWrapper.m_kind == RenderMathMLScriptsWrapper::SubSupPair && !previousWrapper.firstChild()->nextSibling())) { >+ RenderObject* script = nextWrapper.firstChild(); >+ nextWrapper.removeChildInternal(false, *script); >+ previousWrapper.addChildInternal(true, script); > } > } > >@@ -261,9 +261,9 @@ void RenderMathMLScripts::styleDidChange(StyleDifference diff, const RenderStyle > RenderMathMLOperator* RenderMathMLScripts::unembellishedOperator() > { > RenderBoxModelObject* base = this->base(); >- if (!base || !base->isRenderMathMLBlock()) >- return 0; >- return toRenderMathMLBlock(base)->unembellishedOperator(); >+ if (!is<RenderMathMLBlock>(base)) >+ return nullptr; >+ return downcast<RenderMathMLBlock>(*base).unembellishedOperator(); > } > > void RenderMathMLScripts::layout() >@@ -302,8 +302,8 @@ void RenderMathMLScripts::layout() > parseMathMLLength(scriptElement->fastGetAttribute(MathMLNames::superscriptshiftAttr), superscriptShiftValue, &style(), false); > > bool isPostScript = true; >- RenderMathMLBlock* subSupPair = toRenderMathMLBlock(m_baseWrapper->nextSibling()); >- for (; subSupPair; subSupPair = toRenderMathMLBlock(subSupPair->nextSibling())) { >+ RenderMathMLBlock* subSupPair = downcast<RenderMathMLBlock>(m_baseWrapper->nextSibling()); >+ for (; subSupPair; subSupPair = downcast<RenderMathMLBlock>(subSupPair->nextSibling())) { > > // We skip the base and <mprescripts/> elements. > if (isPrescript(subSupPair)) { >@@ -381,7 +381,7 @@ void RenderMathMLScriptsWrapper::addChildInternal(bool doNotRestructure, RenderO > return; > } > >- RenderMathMLScripts* parentNode = toRenderMathMLScripts(parent()); >+ RenderMathMLScripts* parentNode = downcast<RenderMathMLScripts>(parent()); > > if (m_kind == Base) { > RenderObject* sibling = nextSibling(); >@@ -432,7 +432,7 @@ void RenderMathMLScriptsWrapper::addChildInternal(bool doNotRestructure, RenderO > // We first move to the last subSup pair in the curent sequence of scripts. > RenderMathMLScriptsWrapper* subSupPair = this; > while (subSupPair->nextSibling() && !isPrescript(subSupPair->nextSibling())) >- subSupPair = toRenderMathMLScriptsWrapper(subSupPair->nextSibling()); >+ subSupPair = downcast<RenderMathMLScriptsWrapper>(subSupPair->nextSibling()); > if (subSupPair->firstChild()->nextSibling()) { > // The last pair has two children so we need to create a new pair to leave room for the new child. > RenderMathMLScriptsWrapper* newPair = createAnonymousWrapper(parentNode, RenderMathMLScriptsWrapper::SubSupPair); >@@ -442,20 +442,20 @@ void RenderMathMLScriptsWrapper::addChildInternal(bool doNotRestructure, RenderO > > // We shift the successors in the current sequence of scripts. > for (RenderObject* previousSibling = subSupPair->previousSibling(); subSupPair != this; previousSibling = previousSibling->previousSibling()) { >- RenderMathMLScriptsWrapper* previousSubSupPair = toRenderMathMLScriptsWrapper(previousSibling); >- RenderObject* script = previousSubSupPair->lastChild(); >- previousSubSupPair->removeChildInternal(true, *script); >+ RenderMathMLScriptsWrapper& previousSubSupPair = downcast<RenderMathMLScriptsWrapper>(*previousSibling); >+ RenderObject* script = previousSubSupPair.lastChild(); >+ previousSubSupPair.removeChildInternal(true, *script); > subSupPair->addChildInternal(true, script, subSupPair->firstChild()); >- subSupPair = toRenderMathMLScriptsWrapper(previousSibling); >+ subSupPair = downcast<RenderMathMLScriptsWrapper>(previousSibling); > } > > // This subSup pair now contain one element which is either beforeChild or the script that was before. Hence we can insert the new child before of after that element. >- RenderMathMLBlock::addChild(child, firstChild() == beforeChild ? beforeChild : 0); >+ RenderMathMLBlock::addChild(child, firstChild() == beforeChild ? beforeChild : nullptr); > } > > void RenderMathMLScriptsWrapper::addChild(RenderObject* child, RenderObject* beforeChild) > { >- RenderMathMLScripts* parentNode = toRenderMathMLScripts(parent()); >+ RenderMathMLScripts* parentNode = downcast<RenderMathMLScripts>(parent()); > > addChildInternal(false, child, beforeChild); > >@@ -467,7 +467,7 @@ RenderObject* RenderMathMLScriptsWrapper::removeChildInternal(bool doNotRestruct > if (doNotRestructure) > return RenderMathMLBlock::removeChild(child); > >- RenderMathMLScripts* parentNode = toRenderMathMLScripts(parent()); >+ RenderMathMLScripts* parentNode = downcast<RenderMathMLScripts>(parent()); > > if (m_kind == Base) { > // We remove the child from the base wrapper. >@@ -475,9 +475,9 @@ RenderObject* RenderMathMLScriptsWrapper::removeChildInternal(bool doNotRestruct > RenderMathMLBlock::removeChild(child); > if (sibling && !isPrescript(sibling)) { > // If there are postscripts, the first one becomes the base. >- RenderMathMLScriptsWrapper* wrapper = toRenderMathMLScriptsWrapper(sibling); >- RenderObject* script = wrapper->firstChild(); >- wrapper->removeChildInternal(false, *script); >+ RenderMathMLScriptsWrapper& wrapper = downcast<RenderMathMLScriptsWrapper>(*sibling); >+ RenderObject* script = wrapper.firstChild(); >+ wrapper.removeChildInternal(false, *script); > RenderMathMLBlock::addChild(script); > } > return sibling; >@@ -487,11 +487,11 @@ RenderObject* RenderMathMLScriptsWrapper::removeChildInternal(bool doNotRestruct > RenderObject* next = RenderMathMLBlock::removeChild(child); > RenderMathMLScriptsWrapper* subSupPair = this; > for (RenderObject* nextSibling = subSupPair->nextSibling(); nextSibling && !isPrescript(nextSibling); nextSibling = nextSibling->nextSibling()) { >- RenderMathMLScriptsWrapper* nextSubSupPair = toRenderMathMLScriptsWrapper(nextSibling); >- RenderObject* script = nextSubSupPair->firstChild(); >- nextSubSupPair->removeChildInternal(true, *script); >+ RenderMathMLScriptsWrapper& nextSubSupPair = downcast<RenderMathMLScriptsWrapper>(*nextSibling); >+ RenderObject* script = nextSubSupPair.firstChild(); >+ nextSubSupPair.removeChildInternal(true, *script); > subSupPair->addChildInternal(true, script); >- subSupPair = toRenderMathMLScriptsWrapper(nextSibling); >+ subSupPair = downcast<RenderMathMLScriptsWrapper>(nextSibling); > } > > // We remove the last subSup pair if it became empty. >@@ -510,7 +510,7 @@ RenderObject* RenderMathMLScriptsWrapper::removeChild(RenderObject& child) > return RenderMathMLBlock::removeChild(child); > } > >- RenderMathMLScripts* parentNode = toRenderMathMLScripts(parent()); >+ RenderMathMLScripts* parentNode = downcast<RenderMathMLScripts>(parent()); > RenderObject* next = removeChildInternal(false, child); > parentNode->fixAnonymousStyles(); > return next; >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLScripts.h b/Source/WebCore/rendering/mathml/RenderMathMLScripts.h >index dc1d6a62403ea88a2fd3d86ddaadc5daac99ce2c..75426782e0d4e523f760927178d0fb232289e5fa 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLScripts.h >+++ b/Source/WebCore/rendering/mathml/RenderMathMLScripts.h >@@ -65,8 +65,6 @@ private: > WrapperType m_kind; > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLScriptsWrapper, isRenderMathMLScriptsWrapper()) >- > // Render a base with scripts. > class RenderMathMLScripts : public RenderMathMLBlock { > >@@ -105,9 +103,10 @@ private: > RenderMathMLScriptsWrapper* m_baseWrapper; > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLScripts, isRenderMathMLScripts()) >+} // namespace WebCore > >-} >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLScriptsWrapper, isRenderMathMLScriptsWrapper()) >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLScripts, isRenderMathMLScripts()) > > #endif // ENABLE(MATHML) > >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLSpace.h b/Source/WebCore/rendering/mathml/RenderMathMLSpace.h >index 138204afaaca84801fc36aa0437a09a9f366f045..cdfc571bd5c0605a950083c15db31f6cdbfa6969 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLSpace.h >+++ b/Source/WebCore/rendering/mathml/RenderMathMLSpace.h >@@ -54,9 +54,9 @@ private: > LayoutUnit m_depth; > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLSpace, isRenderMathMLSpace()) >+} // namespace WebCore > >-} >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLSpace, isRenderMathMLSpace()) > > #endif // ENABLE(MATHML) > #endif // RenderMathMLSpace_h >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h b/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h >index a9e3cffbd53308172288bbf39cb65c79e32a50d0..61400586449b8b842d8ac9cb31da504dcc9240a4 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h >+++ b/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h >@@ -47,7 +47,9 @@ private: > virtual const char* renderName() const override { return "RenderMathMLSquareRoot"; } > }; > >-} >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLSquareRoot, isRenderMathMLSquareRoot()) > > #endif // ENABLE(MATHML) > >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLToken.h b/Source/WebCore/rendering/mathml/RenderMathMLToken.h >index 9a71f4f7b49e52a5dd962fdf06e7946e1201b8c3..f5ad5bba04f0b51b00691b1be284288dfbe31628 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLToken.h >+++ b/Source/WebCore/rendering/mathml/RenderMathMLToken.h >@@ -59,9 +59,9 @@ private: > bool m_containsElement; > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderMathMLToken, isRenderMathMLToken()) >+} // namespace WebCore > >-} >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLToken, isRenderMathMLToken()) > > #endif // ENABLE(MATHML) > #endif // RenderMathMLToken_h >diff --git a/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp b/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp >index 1032ee1aa32c2eb001c77313e77672279df5bf58..a26cf138d398647d50e28de210a78873544e2bfc 100644 >--- a/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp >+++ b/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp >@@ -55,9 +55,9 @@ RenderMathMLUnderOver::RenderMathMLUnderOver(Element& element, PassRef<RenderSty > RenderMathMLOperator* RenderMathMLUnderOver::unembellishedOperator() > { > RenderObject* base = firstChild(); >- if (!base || !base->isRenderMathMLBlock()) >- return 0; >- return toRenderMathMLBlock(base)->unembellishedOperator(); >+ if (!is<RenderMathMLBlock>(base)) >+ return nullptr; >+ return downcast<RenderMathMLBlock>(*base).unembellishedOperator(); > } > > int RenderMathMLUnderOver::firstLineBaseline() const >diff --git a/Source/WebCore/rendering/svg/RenderSVGContainer.h b/Source/WebCore/rendering/svg/RenderSVGContainer.h >index ed27b3f2f6234317126bf1542b7c0b1db875212d..95b0d7003adaf8ed14d4f1e35ffee5aa81b5fbc0 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGContainer.h >+++ b/Source/WebCore/rendering/svg/RenderSVGContainer.h >@@ -84,4 +84,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderSVGContainer, isSVGContainer()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGContainer, isSVGContainer()) >+ > #endif // RenderSVGContainer_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGGradientStop.h b/Source/WebCore/rendering/svg/RenderSVGGradientStop.h >index b8de28501ddbcb35a9cde9a66e399b8b90eed26b..802364571734ffbe78cec640f4729d4823d63799 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGGradientStop.h >+++ b/Source/WebCore/rendering/svg/RenderSVGGradientStop.h >@@ -62,6 +62,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderSVGGradientStop, isSVGGradientStop()) > >-} >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGGradientStop, isSVGGradientStop()) > > #endif // RenderSVGGradientStop_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGImage.h b/Source/WebCore/rendering/svg/RenderSVGImage.h >index 5832960674fb370b0456e27ea3653622f66ba5c8..18916cb935ae092eac76d4a5185d907979d7cd58 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGImage.h >+++ b/Source/WebCore/rendering/svg/RenderSVGImage.h >@@ -94,4 +94,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderSVGImage, isSVGImage()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGImage, isSVGImage()) >+ > #endif // RenderSVGImage_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGInlineText.h b/Source/WebCore/rendering/svg/RenderSVGInlineText.h >index ba0d4929a7cd888d287019d8dc78f0ed850d9dfd..9153aaac50ddacbfad92fdf1773c6d8439cfd995 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGInlineText.h >+++ b/Source/WebCore/rendering/svg/RenderSVGInlineText.h >@@ -71,6 +71,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderSVGInlineText, isSVGInlineText()) > >-} >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGInlineText, isSVGInlineText()) > > #endif // RenderSVGInlineText_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGModelObject.h b/Source/WebCore/rendering/svg/RenderSVGModelObject.h >index 87f837879d5c8ea9b1c44e8f61c9631e837b401d..1da669527f620018f145452f15dc91ebab1dbe7e 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGModelObject.h >+++ b/Source/WebCore/rendering/svg/RenderSVGModelObject.h >@@ -80,8 +80,10 @@ private: > bool m_hasSVGShadow; > }; > >-RENDER_OBJECT_TYPE_CASTS(RenderSVGModelObject, isRenderSVGModelObject()); >+RENDER_OBJECT_TYPE_CASTS(RenderSVGModelObject, isRenderSVGModelObject()) > >-} >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGModelObject, isRenderSVGModelObject()) > > #endif >diff --git a/Source/WebCore/rendering/svg/RenderSVGPath.h b/Source/WebCore/rendering/svg/RenderSVGPath.h >index 89e9500bf8c8609ca2eba46c9d3519f915860f0c..887daab763a061eb5484ff001cd8600fd3114ce3 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGPath.h >+++ b/Source/WebCore/rendering/svg/RenderSVGPath.h >@@ -57,6 +57,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderSVGPath, isSVGPath()) > >-} >+} // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGPath, isSVGPath()) >+ >+#endif // RenderSVGPath_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h b/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h >index a3806e62835c61dca504e22bec2196044b626555..9f3649a240416f239fbc73749d749430851d160e 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h >+++ b/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h >@@ -97,6 +97,8 @@ Renderer* getRenderSVGResourceById(Document& document, const AtomicString& id) > return nullptr; > } > >-} >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGResourceContainer, isSVGResourceContainer()) > >-#endif >+#endif // RenderSVGResourceContainer_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h b/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h >index eeb14984b267751998814ec95b459176ecc765fa..ceb467840bba776abd2255d9dee8b2f63794b04d 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h >+++ b/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h >@@ -99,6 +99,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderSVGResourceFilter, isSVGResourceFilter()) > >-} >+} // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGResourceFilter, isSVGResourceFilter()) >+ >+#endif // RenderSVGResourceFilter_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGRoot.h b/Source/WebCore/rendering/svg/RenderSVGRoot.h >index 3d09b1439830e0bc75daa8633a1897814a3343b0..5503643a800ddf3d59d3afc09c86942d528f56c5 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGRoot.h >+++ b/Source/WebCore/rendering/svg/RenderSVGRoot.h >@@ -126,4 +126,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderSVGRoot, isSVGRoot()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGRoot, isSVGRoot()) >+ > #endif // RenderSVGRoot_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGShape.h b/Source/WebCore/rendering/svg/RenderSVGShape.h >index 5ef48b032fcde74e9856f4d098623d877e04924f..9b3fd7a3603fb1153d0cec5ee0c013148dc09877 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGShape.h >+++ b/Source/WebCore/rendering/svg/RenderSVGShape.h >@@ -135,6 +135,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderSVGShape, isSVGShape()) > >-} >+} // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGShape, isSVGShape()) >+ >+#endif // RenderSVGShape_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGText.h b/Source/WebCore/rendering/svg/RenderSVGText.h >index 37d13d65bf29855a79c7d7153741f6f84366d0af..bc639feec217981dd6c0647488062f03afef88a3 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGText.h >+++ b/Source/WebCore/rendering/svg/RenderSVGText.h >@@ -107,6 +107,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderSVGText, isSVGText()) > >-} >+} // namespace WebCore > >-#endif >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGText, isSVGText()) >+ >+#endif // RenderSVGText_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGTextPath.h b/Source/WebCore/rendering/svg/RenderSVGTextPath.h >index b214442e38e55d0405a2192671e151a9ef1a95bc..803280af3bde1f47cce13a84cd9c292ee103b4da 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGTextPath.h >+++ b/Source/WebCore/rendering/svg/RenderSVGTextPath.h >@@ -47,6 +47,8 @@ private: > > RENDER_OBJECT_TYPE_CASTS(RenderSVGTextPath, isSVGTextPath()) > >-} >+} // namespace WebCore >+ >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGTextPath, isSVGTextPath()) > > #endif // RenderSVGTextPath_h >diff --git a/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h b/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h >index b44040854c2bfbadee05e392374ff7e727e8fa3f..521244bed1db268a8103ec1dad17920d975e1c6a 100644 >--- a/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h >+++ b/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h >@@ -71,4 +71,6 @@ RENDER_OBJECT_TYPE_CASTS(RenderSVGViewportContainer, isSVGViewportContainer()) > > } // namespace WebCore > >+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGViewportContainer, isSVGViewportContainer()) >+ > #endif // RenderSVGViewportContainer_h
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 137424
:
239287
|
239289
|
239366