<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[174375] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/174375">174375</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-10-06 17:26:25 -0700 (Mon, 06 Oct 2014)</dd>
</dl>

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

Reviewed by Benjamin Poulain.

Source/WebCore:

Add is&lt;&gt;() / downcast&lt;&gt;() 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&lt;&gt;() / downcast&lt;&gt;(). 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):
* dom/make_names.pl:
(printTypeHelpers):
* 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::isRendererOfType):
(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&gt;): 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:

Source/WTF:

Handle correctly calling TypeCastTraits&lt;ExpectedType, ArgType&gt;::isOfType(ArgType&amp;)
with ExpectedType being a base class of ArgType (or the same as ArgType). The
previous template specialization was only meant to support the case where
ExpectedType is the same as ArgType but even that wasn't working as the compiler
would complain about ambiguous partial specializations. Since this is needed by
RenderTraversal functions, this patch adds an extra isBaseType template parameter
to TypeCastTraits to resolve the ambiguity and relies on std::is_base_of for the
detection.

* wtf/TypeCasts.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFwtfTypeCastsh">trunk/Source/WTF/wtf/TypeCasts.h</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCoredommake_namespl">trunk/Source/WebCore/dom/make_names.pl</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLInlineContainerElementcpp">trunk/Source/WebCore/mathml/MathMLInlineContainerElement.cpp</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLTextElementcpp">trunk/Source/WebCore/mathml/MathMLTextElement.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderAncestorIteratorh">trunk/Source/WebCore/rendering/RenderAncestorIterator.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockh">trunk/Source/WebCore/rendering/RenderBlock.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowh">trunk/Source/WebCore/rendering/RenderBlockFlow.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxh">trunk/Source/WebCore/rendering/RenderBox.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxModelObjecth">trunk/Source/WebCore/rendering/RenderBoxModelObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderButtonh">trunk/Source/WebCore/rendering/RenderButton.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderCombineTexth">trunk/Source/WebCore/rendering/RenderCombineText.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderCounterh">trunk/Source/WebCore/rendering/RenderCounter.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderDetailsMarkerh">trunk/Source/WebCore/rendering/RenderDetailsMarker.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderElementh">trunk/Source/WebCore/rendering/RenderElement.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderEmbeddedObjecth">trunk/Source/WebCore/rendering/RenderEmbeddedObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFieldseth">trunk/Source/WebCore/rendering/RenderFieldset.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFileUploadControlh">trunk/Source/WebCore/rendering/RenderFileUploadControl.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFlexibleBoxh">trunk/Source/WebCore/rendering/RenderFlexibleBox.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFlowThreadh">trunk/Source/WebCore/rendering/RenderFlowThread.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFrameh">trunk/Source/WebCore/rendering/RenderFrame.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFrameSeth">trunk/Source/WebCore/rendering/RenderFrameSet.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFullScreenh">trunk/Source/WebCore/rendering/RenderFullScreen.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderGridh">trunk/Source/WebCore/rendering/RenderGrid.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderHTMLCanvash">trunk/Source/WebCore/rendering/RenderHTMLCanvas.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderIFrameh">trunk/Source/WebCore/rendering/RenderIFrame.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderImageh">trunk/Source/WebCore/rendering/RenderImage.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderInlineh">trunk/Source/WebCore/rendering/RenderInline.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderIteratorh">trunk/Source/WebCore/rendering/RenderIterator.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerModelObjecth">trunk/Source/WebCore/rendering/RenderLayerModelObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLineBreakh">trunk/Source/WebCore/rendering/RenderLineBreak.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderListBoxh">trunk/Source/WebCore/rendering/RenderListBox.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderListItemh">trunk/Source/WebCore/rendering/RenderListItem.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderListMarkerh">trunk/Source/WebCore/rendering/RenderListMarker.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMediah">trunk/Source/WebCore/rendering/RenderMedia.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMenuListh">trunk/Source/WebCore/rendering/RenderMenuList.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMeterh">trunk/Source/WebCore/rendering/RenderMeter.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnFlowThreadh">trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSeth">trunk/Source/WebCore/rendering/RenderMultiColumnSet.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSpannerPlaceholderh">trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderNamedFlowFragmenth">trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderNamedFlowThreadh">trunk/Source/WebCore/rendering/RenderNamedFlowThread.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjecth">trunk/Source/WebCore/rendering/RenderObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderProgressh">trunk/Source/WebCore/rendering/RenderProgress.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderQuoteh">trunk/Source/WebCore/rendering/RenderQuote.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderRegionh">trunk/Source/WebCore/rendering/RenderRegion.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderReplacedh">trunk/Source/WebCore/rendering/RenderReplaced.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderRubyRunh">trunk/Source/WebCore/rendering/RenderRubyRun.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderScrollbarParth">trunk/Source/WebCore/rendering/RenderScrollbarPart.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderSearchFieldh">trunk/Source/WebCore/rendering/RenderSearchField.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderSliderh">trunk/Source/WebCore/rendering/RenderSlider.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderSnapshottedPlugInh">trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableh">trunk/Source/WebCore/rendering/RenderTable.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableCaptionh">trunk/Source/WebCore/rendering/RenderTableCaption.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableCellh">trunk/Source/WebCore/rendering/RenderTableCell.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableColh">trunk/Source/WebCore/rendering/RenderTableCol.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableRowh">trunk/Source/WebCore/rendering/RenderTableRow.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableSectionh">trunk/Source/WebCore/rendering/RenderTableSection.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTexth">trunk/Source/WebCore/rendering/RenderText.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTextControlh">trunk/Source/WebCore/rendering/RenderTextControl.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTextControlMultiLineh">trunk/Source/WebCore/rendering/RenderTextControlMultiLine.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTextControlSingleLineh">trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTextFragmenth">trunk/Source/WebCore/rendering/RenderTextFragment.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderVideoh">trunk/Source/WebCore/rendering/RenderVideo.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderViewh">trunk/Source/WebCore/rendering/RenderView.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderWidgeth">trunk/Source/WebCore/rendering/RenderWidget.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLBlockh">trunk/Source/WebCore/rendering/mathml/RenderMathMLBlock.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLFencedcpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLFractioncpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLFractionh">trunk/Source/WebCore/rendering/mathml/RenderMathMLFraction.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLOperatorh">trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLRadicalOperatorh">trunk/Source/WebCore/rendering/mathml/RenderMathMLRadicalOperator.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLRootcpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLRooth">trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLRowcpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLRowh">trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLScriptscpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLScriptsh">trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLSpaceh">trunk/Source/WebCore/rendering/mathml/RenderMathMLSpace.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLSquareRooth">trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLTokenh">trunk/Source/WebCore/rendering/mathml/RenderMathMLToken.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLUnderOvercpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGContainerh">trunk/Source/WebCore/rendering/svg/RenderSVGContainer.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGGradientStoph">trunk/Source/WebCore/rendering/svg/RenderSVGGradientStop.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGImageh">trunk/Source/WebCore/rendering/svg/RenderSVGImage.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGInlineTexth">trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGModelObjecth">trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGPathh">trunk/Source/WebCore/rendering/svg/RenderSVGPath.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGResourceContainerh">trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGResourceFilterh">trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGRooth">trunk/Source/WebCore/rendering/svg/RenderSVGRoot.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGShapeh">trunk/Source/WebCore/rendering/svg/RenderSVGShape.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGTexth">trunk/Source/WebCore/rendering/svg/RenderSVGText.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGTextPathh">trunk/Source/WebCore/rendering/svg/RenderSVGTextPath.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGViewportContainerh">trunk/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WTF/ChangeLog        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2014-10-06  Christophe Dumez  &lt;cdumez@apple.com&gt;
+
+        Add is&lt;&gt;() / downcast&lt;&gt;() support for RenderObject subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=137424
+
+        Reviewed by Benjamin Poulain.
+
+        Handle correctly calling TypeCastTraits&lt;ExpectedType, ArgType&gt;::isOfType(ArgType&amp;)
+        with ExpectedType being a base class of ArgType (or the same as ArgType). The
+        previous template specialization was only meant to support the case where
+        ExpectedType is the same as ArgType but even that wasn't working as the compiler
+        would complain about ambiguous partial specializations. Since this is needed by
+        RenderTraversal functions, this patch adds an extra isBaseType template parameter
+        to TypeCastTraits to resolve the ambiguity and relies on std::is_base_of for the
+        detection.
+
+        * wtf/TypeCasts.h:
+
</ins><span class="cx"> 2014-10-06  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win] Project file gardening.
</span></span></pre></div>
<a id="trunkSourceWTFwtfTypeCastsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/TypeCasts.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/TypeCasts.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WTF/wtf/TypeCasts.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WTF {
</span><span class="cx"> 
</span><del>-template &lt;typename ExpectedType, typename ArgType&gt;
</del><ins>+template &lt;typename ExpectedType, typename ArgType, bool isBaseType = std::is_base_of&lt;ExpectedType, ArgType&gt;::value&gt;
</ins><span class="cx"> struct TypeCastTraits {
</span><span class="cx">     static bool isOfType(ArgType&amp;)
</span><span class="cx">     {
</span><span class="lines">@@ -44,9 +44,11 @@
</span><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-template &lt;typename ExpectedType&gt;
-struct TypeCastTraits&lt;ExpectedType, ExpectedType&gt; {
-    static bool isOfType(ExpectedType&amp;) { return true; }
</del><ins>+// Template specialization for the case where ExpectedType is a base of ArgType,
+// so we can return return true unconditionally.
+template &lt;typename ExpectedType, typename ArgType&gt;
+struct TypeCastTraits&lt;ExpectedType, ArgType, true /* isBaseType */&gt; {
+    static bool isOfType(ArgType&amp;) { return true; }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> // Type checking function, to use before casting with downcast&lt;&gt;().
</span><span class="lines">@@ -83,7 +85,7 @@
</span><span class="cx"> #define SPECIALIZE_TYPE_TRAITS_BEGIN(ClassName) \
</span><span class="cx"> namespace WTF { \
</span><span class="cx"> template &lt;typename ArgType&gt; \
</span><del>-class TypeCastTraits&lt;const ClassName, ArgType&gt; { \
</del><ins>+class TypeCastTraits&lt;const ClassName, ArgType, false /* isBaseType */&gt; { \
</ins><span class="cx"> public: \
</span><span class="cx">     static bool isOfType(ArgType&amp; source) { return isType(source); } \
</span><span class="cx"> private:
</span><span class="lines">@@ -94,6 +96,7 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WTF
</span><span class="cx"> 
</span><ins>+using WTF::TypeCastTraits;
</ins><span class="cx"> using WTF::is;
</span><span class="cx"> using WTF::downcast;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/ChangeLog        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -1,5 +1,153 @@
</span><span class="cx"> 2014-10-06  Christophe Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Add is&lt;&gt;() / downcast&lt;&gt;() support for RenderObject subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=137424
+
+        Reviewed by Benjamin Poulain.
+
+        Add is&lt;&gt;() / downcast&lt;&gt;() 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&lt;&gt;() / downcast&lt;&gt;(). 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):
+        * dom/make_names.pl:
+        (printTypeHelpers):
+        * 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::isRendererOfType):
+        (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&gt;): 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-06  Christophe Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Use is&lt;&gt;() / downcast&lt;&gt;() for ScrollingTreeNode subclasses
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=137451
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -3536,18 +3536,18 @@
</span><span class="cx"> 
</span><span class="cx"> bool AccessibilityRenderObject::isMathFenceOperator() const
</span><span class="cx"> {
</span><del>-    if (!m_renderer || !m_renderer-&gt;isRenderMathMLOperator())
</del><ins>+    if (!is&lt;RenderMathMLOperator&gt;(m_renderer))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return toRenderMathMLOperator(*m_renderer).hasOperatorFlag(MathMLOperatorDictionary::Fence);
</del><ins>+    return downcast&lt;RenderMathMLOperator&gt;(*m_renderer).hasOperatorFlag(MathMLOperatorDictionary::Fence);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool AccessibilityRenderObject::isMathSeparatorOperator() const
</span><span class="cx"> {
</span><del>-    if (!m_renderer || !m_renderer-&gt;isRenderMathMLOperator())
</del><ins>+    if (!is&lt;RenderMathMLOperator&gt;(m_renderer))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    return toRenderMathMLOperator(*m_renderer).hasOperatorFlag(MathMLOperatorDictionary::Separator);
</del><ins>+    return downcast&lt;RenderMathMLOperator&gt;(*m_renderer).hasOperatorFlag(MathMLOperatorDictionary::Separator);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> bool AccessibilityRenderObject::isMathText() const
</span><span class="lines">@@ -3823,10 +3823,10 @@
</span><span class="cx"> 
</span><span class="cx"> int AccessibilityRenderObject::mathLineThickness() const
</span><span class="cx"> {
</span><del>-    if (!isMathFraction())
</del><ins>+    if (!is&lt;RenderMathMLFraction&gt;(m_renderer))
</ins><span class="cx">         return -1;
</span><span class="cx">     
</span><del>-    return toRenderMathMLFraction(m_renderer)-&gt;lineThickness();
</del><ins>+    return downcast&lt;RenderMathMLFraction&gt;(*m_renderer).lineThickness();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoredommake_namespl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/make_names.pl (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/make_names.pl        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/dom/make_names.pl        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -644,7 +644,7 @@
</span><span class="cx"> }
</span><span class="cx"> namespace WTF {
</span><span class="cx"> template &lt;typename ArgType&gt;
</span><del>-class TypeCastTraits&lt;const WebCore::$class, ArgType&gt; {
</del><ins>+class TypeCastTraits&lt;const WebCore::$class, ArgType, false /* isBaseType */&gt; {
</ins><span class="cx"> public:
</span><span class="cx">     static bool isOfType(ArgType&amp; node) { return checkTagName(node); }
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLInlineContainerElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLInlineContainerElement.cpp (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLInlineContainerElement.cpp        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/mathml/MathMLInlineContainerElement.cpp        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -58,12 +58,12 @@
</span><span class="cx"> void MathMLInlineContainerElement::childrenChanged(const ChildChange&amp; change)
</span><span class="cx"> {
</span><span class="cx">     if (renderer()) {
</span><del>-        if (renderer()-&gt;isRenderMathMLRow())
-            toRenderMathMLRow(renderer())-&gt;updateOperatorProperties();
</del><ins>+        if (is&lt;RenderMathMLRow&gt;(*renderer()))
+            downcast&lt;RenderMathMLRow&gt;(*renderer()).updateOperatorProperties();
</ins><span class="cx">         else if (hasTagName(mathTag) || hasTagName(msqrtTag)) {
</span><del>-            auto childRenderer = renderer()-&gt;firstChild();
-            if (childRenderer &amp;&amp; childRenderer-&gt;isRenderMathMLRow())
-                toRenderMathMLRow(childRenderer)-&gt;updateOperatorProperties();
</del><ins>+            auto* childRenderer = renderer()-&gt;firstChild();
+            if (is&lt;RenderMathMLRow&gt;(childRenderer))
+                downcast&lt;RenderMathMLRow&gt;(*childRenderer).updateOperatorProperties();
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     MathMLElement::childrenChanged(change);
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLTextElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLTextElement.cpp (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLTextElement.cpp        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/mathml/MathMLTextElement.cpp        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -53,15 +53,15 @@
</span><span class="cx"> void MathMLTextElement::didAttachRenderers()
</span><span class="cx"> {
</span><span class="cx">     MathMLElement::didAttachRenderers();
</span><del>-    if (renderer() &amp;&amp; renderer()-&gt;isRenderMathMLToken())
-        toRenderMathMLToken(renderer())-&gt;updateTokenContent();
</del><ins>+    if (is&lt;RenderMathMLToken&gt;(renderer()))
+        downcast&lt;RenderMathMLToken&gt;(*renderer()).updateTokenContent();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MathMLTextElement::childrenChanged(const ChildChange&amp; change)
</span><span class="cx"> {
</span><span class="cx">     MathMLElement::childrenChanged(change);
</span><del>-    if (renderer() &amp;&amp; renderer()-&gt;isRenderMathMLToken())
-        toRenderMathMLToken(renderer())-&gt;updateTokenContent();
</del><ins>+    if (is&lt;RenderMathMLToken&gt;(renderer()))
+        downcast&lt;RenderMathMLToken&gt;(*renderer()).updateTokenContent();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderPtr&lt;RenderElement&gt; MathMLTextElement::createElementRenderer(PassRef&lt;RenderStyle&gt; style)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderAncestorIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderAncestorIterator.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderAncestorIterator.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderAncestorIterator.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -186,7 +186,7 @@
</span><span class="cx"> template &lt;typename T&gt;
</span><span class="cx"> inline RenderAncestorIteratorAdapter&lt;T&gt; lineageOfType(RenderObject&amp; first)
</span><span class="cx"> {
</span><del>-    if (isRendererOfType&lt;const T&gt;(first))
</del><ins>+    if (isRendererOfType&lt;T&gt;(first))
</ins><span class="cx">         return RenderAncestorIteratorAdapter&lt;T&gt;(static_cast&lt;T*&gt;(&amp;first));
</span><span class="cx">     return ancestorsOfType&lt;T&gt;(first);
</span><span class="cx"> }
</span><span class="lines">@@ -194,7 +194,7 @@
</span><span class="cx"> template &lt;typename T&gt;
</span><span class="cx"> inline RenderAncestorConstIteratorAdapter&lt;T&gt; lineageOfType(const RenderObject&amp; first)
</span><span class="cx"> {
</span><del>-    if (isRendererOfType&lt;const T&gt;(first))
</del><ins>+    if (isRendererOfType&lt;T&gt;(first))
</ins><span class="cx">         return RenderAncestorConstIteratorAdapter&lt;T&gt;(static_cast&lt;const T*&gt;(&amp;first));
</span><span class="cx">     return ancestorsOfType&lt;T&gt;(first);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlock.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlock.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderBlock.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -538,4 +538,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderBlock, isRenderBlock())
+
</ins><span class="cx"> #endif // RenderBlock_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -636,4 +636,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderBlockFlow, isRenderBlockFlow())
+
</ins><span class="cx"> #endif // RenderBlockFlow_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderBox.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -767,4 +767,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderBox, isBox())
+
</ins><span class="cx"> #endif // RenderBox_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxModelObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBoxModelObject.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -343,4 +343,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderBoxModelObject, isBoxModelObject())
+
</ins><span class="cx"> #endif // RenderBoxModelObject_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderButtonh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderButton.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderButton.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderButton.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -87,4 +87,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderButton, isRenderButton())
+
</ins><span class="cx"> #endif // RenderButton_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderCombineTexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderCombineText.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderCombineText.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderCombineText.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -61,4 +61,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderCombineText, isCombineText())
+
</ins><span class="cx"> #endif // RenderCombineText_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderCounterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderCounter.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderCounter.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderCounter.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -66,6 +66,8 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderCounter, isCounter())
+
</ins><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> // Outside the WebCore namespace for ease of invocation from gdb.
</span><span class="cx"> void showCounterRendererTree(const WebCore::RenderObject*, const char* counterName = 0);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderDetailsMarkerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderDetailsMarker.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderDetailsMarker.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderDetailsMarker.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -47,9 +47,11 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderDetailsMarker, isDetailsMarker())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderDetailsMarker, isDetailsMarker())
</ins><span class="cx"> 
</span><ins>+#endif // ENABLE(DETAILS_ELEMENT)
+
</ins><span class="cx"> #endif // RenderDetailsMarker_h
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderElement.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderElement.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderElement.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -380,4 +380,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderElement, isRenderElement())
+
</ins><span class="cx"> #endif // RenderElement_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderEmbeddedObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderEmbeddedObject.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderEmbeddedObject.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderEmbeddedObject.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -105,4 +105,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderEmbeddedObject, isEmbeddedObject())
+
</ins><span class="cx"> #endif // RenderEmbeddedObject_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFieldseth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFieldset.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFieldset.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderFieldset.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -59,4 +59,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFieldset, isFieldset())
+
</ins><span class="cx"> #endif // RenderFieldset_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFileUploadControlh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFileUploadControl.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFileUploadControl.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderFileUploadControl.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -68,4 +68,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFileUploadControl, isFileUploadControl())
+
</ins><span class="cx"> #endif // RenderFileUploadControl_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlexibleBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlexibleBox.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlexibleBox.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderFlexibleBox.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -165,4 +165,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFlexibleBox, isFlexibleBox())
+
</ins><span class="cx"> #endif // RenderFlexibleBox_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -410,4 +410,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFlowThread, isRenderFlowThread())
+
</ins><span class="cx"> #endif // RenderFlowThread_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFrameh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFrame.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFrame.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderFrame.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -50,4 +50,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFrame, isFrame())
+
</ins><span class="cx"> #endif // RenderFrame_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFrameSeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFrameSet.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFrameSet.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderFrameSet.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -130,4 +130,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFrameSet, isFrameSet())
+
</ins><span class="cx"> #endif // RenderFrameSet_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFullScreenh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFullScreen.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFullScreen.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderFullScreen.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -55,8 +55,10 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderFullScreen, isRenderFullScreen())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderFullScreen, isRenderFullScreen())
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+#endif // ENABLE(FULLSCREEN_API)
+
+#endif // RenderFullScreen_h
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderGridh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderGrid.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderGrid.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderGrid.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -135,6 +135,8 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderGrid, isRenderGrid())
+
</ins><span class="cx"> #endif /* ENABLE(CSS_GRID_LAYOUT) */
</span><span class="cx"> 
</span><span class="cx"> #endif // RenderGrid_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderHTMLCanvash"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderHTMLCanvas.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderHTMLCanvas.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderHTMLCanvas.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -53,4 +53,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderHTMLCanvas, isCanvas())
+
</ins><span class="cx"> #endif // RenderHTMLCanvas_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderIFrameh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderIFrame.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderIFrame.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderIFrame.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -66,4 +66,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderIFrame, isRenderIFrame())
+
</ins><span class="cx"> #endif // RenderIFrame_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderImage.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderImage.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderImage.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -132,4 +132,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderImage, isRenderImage())
+
</ins><span class="cx"> #endif // RenderImage_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderInlineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderInline.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderInline.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderInline.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -184,4 +184,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderInline, isRenderInline())
+
</ins><span class="cx"> #endif // RenderInline_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderIterator.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderIterator.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderIterator.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -72,6 +72,10 @@
</span><span class="cx">     const T* m_current;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+// Similar to WTF::is&lt;&gt;() but without the static_assert() making sure the check is necessary.
+template &lt;typename T, typename U&gt;
+inline bool isRendererOfType(const U&amp; renderer) { return TypeCastTraits&lt;const T, const U&gt;::isOfType(renderer); }
+
</ins><span class="cx"> // Traversal helpers
</span><span class="cx"> 
</span><span class="cx"> namespace RenderTraversal {
</span><span class="lines">@@ -80,7 +84,7 @@
</span><span class="cx"> inline T* firstChild(U&amp; current)
</span><span class="cx"> {
</span><span class="cx">     RenderObject* object = current.firstChild();
</span><del>-    while (object &amp;&amp; !isRendererOfType&lt;const T&gt;(*object))
</del><ins>+    while (object &amp;&amp; !isRendererOfType&lt;T&gt;(*object))
</ins><span class="cx">         object = object-&gt;nextSibling();
</span><span class="cx">     return static_cast&lt;T*&gt;(object);
</span><span class="cx"> }
</span><span class="lines">@@ -89,7 +93,7 @@
</span><span class="cx"> inline T* lastChild(U&amp; current)
</span><span class="cx"> {
</span><span class="cx">     RenderObject* object = current.lastChild();
</span><del>-    while (object &amp;&amp; !isRendererOfType&lt;const T&gt;(*object))
</del><ins>+    while (object &amp;&amp; !isRendererOfType&lt;T&gt;(*object))
</ins><span class="cx">         object = object-&gt;previousSibling();
</span><span class="cx">     return static_cast&lt;T*&gt;(object);
</span><span class="cx"> }
</span><span class="lines">@@ -98,7 +102,7 @@
</span><span class="cx"> inline T* nextSibling(U&amp; current)
</span><span class="cx"> {
</span><span class="cx">     RenderObject* object = current.nextSibling();
</span><del>-    while (object &amp;&amp; !isRendererOfType&lt;const T&gt;(*object))
</del><ins>+    while (object &amp;&amp; !isRendererOfType&lt;T&gt;(*object))
</ins><span class="cx">         object = object-&gt;nextSibling();
</span><span class="cx">     return static_cast&lt;T*&gt;(object);
</span><span class="cx"> }
</span><span class="lines">@@ -107,7 +111,7 @@
</span><span class="cx"> inline T* previousSibling(U&amp; current)
</span><span class="cx"> {
</span><span class="cx">     RenderObject* object = current.previousSibling();
</span><del>-    while (object &amp;&amp; !isRendererOfType&lt;const T&gt;(*object))
</del><ins>+    while (object &amp;&amp; !isRendererOfType&lt;T&gt;(*object))
</ins><span class="cx">         object = object-&gt;previousSibling();
</span><span class="cx">     return static_cast&lt;T*&gt;(object);
</span><span class="cx"> }
</span><span class="lines">@@ -115,8 +119,8 @@
</span><span class="cx"> template &lt;typename T&gt;
</span><span class="cx"> inline T* findAncestorOfType(const RenderObject&amp; current)
</span><span class="cx"> {
</span><del>-    for (auto ancestor = current.parent(); ancestor; ancestor = ancestor-&gt;parent()) {
-        if (isRendererOfType&lt;const T&gt;(*ancestor))
</del><ins>+    for (auto* ancestor = current.parent(); ancestor; ancestor = ancestor-&gt;parent()) {
+        if (isRendererOfType&lt;T&gt;(*ancestor))
</ins><span class="cx">             return static_cast&lt;T*&gt;(ancestor);
</span><span class="cx">     }
</span><span class="cx">     return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerModelObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerModelObject.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerModelObject.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderLayerModelObject.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -73,4 +73,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderLayerModelObject, isRenderLayerModelObject())
+
</ins><span class="cx"> #endif // RenderLayerModelObject_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLineBreakh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLineBreak.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLineBreak.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderLineBreak.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -97,4 +97,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderLineBreak, isLineBreak())
+
</ins><span class="cx"> #endif // RenderLineBreak_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderListBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderListBox.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderListBox.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderListBox.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -165,4 +165,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namepace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderListBox, isListBox())
+
</ins><span class="cx"> #endif // RenderListBox_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderListItemh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderListItem.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderListItem.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderListItem.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -97,4 +97,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderListItem, isListItem())
+
</ins><span class="cx"> #endif // RenderListItem_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderListMarkerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderListMarker.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderListMarker.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderListMarker.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -89,4 +89,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderListMarker, isListMarker())
+
</ins><span class="cx"> #endif // RenderListMarker_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMediah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMedia.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMedia.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderMedia.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -60,6 +60,8 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMedia, isMedia())
</ins><span class="cx"> 
</span><ins>+#endif // ENABLE(VIDEO)
+
</ins><span class="cx"> #endif // RenderMedia_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMenuListh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMenuList.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMenuList.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderMenuList.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -154,6 +154,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderMenuList, isMenuList())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMenuList, isMenuList())
+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMeterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMeter.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMeter.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderMeter.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -51,7 +51,9 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMeter, isMeter())
</ins><span class="cx"> 
</span><ins>+#endif // ENABLE(METER_ELEMENT)
+
</ins><span class="cx"> #endif // RenderMeter_h
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -163,5 +163,7 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMultiColumnFlowThread, isRenderMultiColumnFlowThread())
+
</ins><span class="cx"> #endif // RenderMultiColumnFlowThread_h
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -229,5 +229,7 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMultiColumnSet, isRenderMultiColumnSet())
+
</ins><span class="cx"> #endif // RenderMultiColumnSet_h
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSpannerPlaceholderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -59,4 +59,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMultiColumnSpannerPlaceholder, isRenderMultiColumnSpannerPlaceholder())
+
</ins><span class="cx"> #endif // RenderMultiColumnSpannerPlaceholder_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderNamedFlowFragmenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -167,4 +167,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderNamedFlowFragment, isRenderNamedFlowFragment())
+
</ins><span class="cx"> #endif // RenderNamedFlowFragment_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderNamedFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderNamedFlowThread.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderNamedFlowThread.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowThread.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -163,4 +163,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderNamedFlowThread, isRenderNamedFlowThread())
+
</ins><span class="cx"> #endif // RenderNamedFlowThread_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderObject.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> #include &quot;StyleInheritedData.h&quot;
</span><span class="cx"> #include &quot;TextAffinity.h&quot;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><ins>+#include &lt;wtf/TypeCasts.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -1030,9 +1031,6 @@
</span><span class="cx">     void setEverHadLayout(bool b) { m_bitfields.setEverHadLayout(b); }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-template &lt;typename Type&gt; bool isRendererOfType(const RenderObject&amp;);
-template &lt;&gt; inline bool isRendererOfType&lt;const RenderObject&gt;(const RenderObject&amp;) { return true; }
-
</del><span class="cx"> inline Frame&amp; RenderObject::frame() const
</span><span class="cx"> {
</span><span class="cx">     return *document().frame();
</span><span class="lines">@@ -1128,12 +1126,17 @@
</span><span class="cx">     return m_bitfields.boxDecorationState() == HasBoxDecorationsAndBackgroundIsKnownToBeObscured;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// FIXME: Remove this macro and use SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT() instead.
</ins><span class="cx"> #define RENDER_OBJECT_TYPE_CASTS(ToValueTypeName, predicate) \
</span><del>-    template &lt;&gt; inline bool isRendererOfType&lt;const ToValueTypeName&gt;(const RenderObject&amp; renderer) { return renderer.predicate; } \
-    TYPE_CASTS_BASE(ToValueTypeName, RenderObject, renderer, isRendererOfType&lt;const ToValueTypeName&gt;(*renderer), isRendererOfType&lt;const ToValueTypeName&gt;(renderer))
</del><ins>+    TYPE_CASTS_BASE(ToValueTypeName, RenderObject, renderer, is&lt;ToValueTypeName&gt;(*renderer), is&lt;ToValueTypeName&gt;(renderer))
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+#define SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(ToValueTypeName, predicate) \
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ToValueTypeName) \
+    static bool isType(const WebCore::RenderObject&amp; renderer) { return renderer.predicate; } \
+SPECIALIZE_TYPE_TRAITS_END()
+
</ins><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> // Outside the WebCore namespace for ease of invocation from gdb.
</span><span class="cx"> void showNodeTree(const WebCore::RenderObject*);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderProgressh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderProgress.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderProgress.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderProgress.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -62,5 +62,7 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderProgress, isProgress())
+
</ins><span class="cx"> #endif // RenderProgress_h
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderQuoteh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderQuote.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderQuote.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderQuote.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -59,4 +59,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderQuote, isQuote())
+
</ins><span class="cx"> #endif // RenderQuote_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderRegionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderRegion.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderRegion.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderRegion.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -179,8 +179,6 @@
</span><span class="cx">     bool m_isValid : 1;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderRegion, isRenderRegion())
-
</del><span class="cx"> class CurrentRenderRegionMaintainer {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(CurrentRenderRegionMaintainer);
</span><span class="cx"> public:
</span><span class="lines">@@ -194,4 +192,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderRegion, isRenderRegion())
+
</ins><span class="cx"> #endif // RenderRegion_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderReplacedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderReplaced.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderReplaced.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderReplaced.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -91,6 +91,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderReplaced, isRenderReplaced())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderReplaced, isRenderReplaced())
+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderRubyRunh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderRubyRun.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderRubyRun.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderRubyRun.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -81,4 +81,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderRubyRun, isRubyRun())
+
</ins><span class="cx"> #endif // RenderRubyRun_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderScrollbarParth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderScrollbarPart.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderScrollbarPart.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderScrollbarPart.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -77,4 +77,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderScrollbarPart, isRenderScrollbarPart())
+
</ins><span class="cx"> #endif // RenderScrollbarPart_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderSearchFieldh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderSearchField.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderSearchField.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderSearchField.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -92,6 +92,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderSearchField, isTextField())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSearchField, isTextField())
+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderSliderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderSlider.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderSlider.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderSlider.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -55,4 +55,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSlider, isSlider())
+
</ins><span class="cx"> #endif // RenderSlider_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderSnapshottedPlugInh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -67,4 +67,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSnapshottedPlugIn, isSnapshottedPlugIn())
+
</ins><span class="cx"> #endif // RenderSnapshottedPlugIn_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTable.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTable.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderTable.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -385,4 +385,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTable, isTable())
+
</ins><span class="cx"> #endif // RenderTable_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableCaptionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableCaption.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableCaption.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderTableCaption.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -48,4 +48,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableCaption, isTableCaption())
+
</ins><span class="cx"> #endif // RenderTableCaption_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableCellh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableCell.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableCell.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderTableCell.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -318,4 +318,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableCell, isTableCell())
+
</ins><span class="cx"> #endif // RenderTableCell_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableColh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableCol.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableCol.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderTableCol.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -102,6 +102,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderTableCol, isRenderTableCol())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableCol, isRenderTableCol())
+
+#endif // RenderTableCol_h
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableRowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableRow.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableRow.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderTableRow.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -143,4 +143,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableRow, isTableRow())
+
</ins><span class="cx"> #endif // RenderTableRow_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableSectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableSection.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableSection.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderTableSection.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -351,4 +351,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTableSection, isTableSection())
+
</ins><span class="cx"> #endif // RenderTableSection_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderText.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderText.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderText.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -259,4 +259,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderText, isText())
+
</ins><span class="cx"> #endif // RenderText_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTextControlh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTextControl.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTextControl.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderTextControl.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -109,7 +109,8 @@
</span><span class="cx"> 
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextControl, isTextControl())
+
</ins><span class="cx"> #endif // RenderTextControl_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTextControlMultiLineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTextControlMultiLine.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTextControlMultiLine.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderTextControlMultiLine.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -53,6 +53,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderTextControlMultiLine, isTextArea())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextControlMultiLine, isTextArea())
+
+#endif // RenderTextControlMultiLine_h
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTextControlSingleLineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderTextControlSingleLine.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -115,6 +115,9 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderTextControlInnerBlock, isTextControlInnerBlock())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextControlSingleLine, isTextField())
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextControlInnerBlock, isTextControlInnerBlock())
+
+#endif // RenderTextControlSingleLine_h
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTextFragmenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTextFragment.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTextFragment.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderTextFragment.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -76,4 +76,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderTextFragment, isText() &amp;&amp; toRenderText(renderer).isTextFragment())
+
</ins><span class="cx"> #endif // RenderTextFragment_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderVideoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderVideo.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderVideo.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderVideo.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -94,5 +94,7 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderVideo, isVideo())
+
+#endif // ENABLE(VIDEO)
</ins><span class="cx"> #endif // RenderVideo_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderView.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderView.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderView.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -456,4 +456,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderView, isRenderView())
+
</ins><span class="cx"> #endif // RenderView_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderWidgeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderWidget.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderWidget.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/RenderWidget.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -108,4 +108,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderWidget, isWidget())
+
</ins><span class="cx"> #endif // RenderWidget_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLBlock.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLBlock.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLBlock.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -69,8 +69,6 @@
</span><span class="cx">     virtual const char* renderName() const override;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLBlock, isRenderMathMLBlock())
-
</del><span class="cx"> class RenderMathMLTable final : public RenderTable {
</span><span class="cx"> public:
</span><span class="cx">     explicit RenderMathMLTable(Element&amp; element, PassRef&lt;RenderStyle&gt; style)
</span><span class="lines">@@ -85,12 +83,14 @@
</span><span class="cx">     virtual const char* renderName() const override { return &quot;RenderMathMLTable&quot;; }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLTable, isRenderMathMLTable())
-
</del><span class="cx"> // Parsing functions for MathML Length values
</span><span class="cx"> bool parseMathMLLength(const String&amp;, LayoutUnit&amp;, const RenderStyle*, bool allowNegative = true);
</span><span class="cx"> bool parseMathMLNamedSpace(const String&amp;, LayoutUnit&amp;, const RenderStyle*, bool allowNegative = true);
</span><del>-}
</del><span class="cx"> 
</span><ins>+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLBlock, isRenderMathMLBlock())
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLTable, isRenderMathMLTable())
+
</ins><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> #endif // RenderMathMLBlock_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLFencedcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">         makeFences();
</span><span class="cx">     else {
</span><span class="cx">         // 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).
</span><del>-        toRenderMathMLOperator(firstChild())-&gt;updateTokenContent(m_open);
</del><ins>+        downcast&lt;RenderMathMLOperator&gt;(*firstChild()).updateTokenContent(m_open);
</ins><span class="cx">         m_closeFenceRenderer-&gt;updateTokenContent(m_close);
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLFractioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -120,11 +120,11 @@
</span><span class="cx"> {
</span><span class="cx">     RenderObject* numeratorWrapper = firstChild();
</span><span class="cx">     if (!numeratorWrapper)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx">     RenderObject* numerator = numeratorWrapper-&gt;firstChildSlow();
</span><del>-    if (!numerator || !numerator-&gt;isRenderMathMLBlock())
-        return 0;
-    return toRenderMathMLBlock(numerator)-&gt;unembellishedOperator();
</del><ins>+    if (!is&lt;RenderMathMLBlock&gt;(numerator))
+        return nullptr;
+    return downcast&lt;RenderMathMLBlock&gt;(*numerator).unembellishedOperator();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMathMLFraction::layout()
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLFractionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLFraction.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLFraction.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLFraction.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -58,9 +58,9 @@
</span><span class="cx">     LayoutUnit m_lineThickness;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLFraction, isRenderMathMLFraction())
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLFraction, isRenderMathMLFraction())
</ins><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLOperatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -189,9 +189,9 @@
</span><span class="cx">     virtual void SetOperatorProperties();
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLOperator, isRenderMathMLOperator())
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLOperator, isRenderMathMLOperator())
</ins><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> #endif // RenderMathMLOperator_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLRadicalOperatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLRadicalOperator.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLRadicalOperator.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLRadicalOperator.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -48,9 +48,9 @@
</span><span class="cx">     void SetOperatorProperties() override;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLRadicalOperator, isRenderMathMLRadicalOperator())
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRadicalOperator, isRenderMathMLRadicalOperator())
</ins><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> #endif // RenderMathMLRadicalOperator_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLRootcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> #include &quot;PaintInfo.h&quot;
</span><span class="cx"> #include &quot;RenderIterator.h&quot;
</span><span class="cx"> #include &quot;RenderMathMLRadicalOperator.h&quot;
</span><ins>+#include &quot;RenderMathMLSquareRoot.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx">     
</span><span class="lines">@@ -67,25 +68,25 @@
</span><span class="cx"> RenderMathMLRootWrapper* RenderMathMLRoot::baseWrapper() const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!isEmpty());
</span><del>-    return toRenderMathMLRootWrapper(lastChild());
</del><ins>+    return downcast&lt;RenderMathMLRootWrapper&gt;(lastChild());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderMathMLBlock* RenderMathMLRoot::radicalWrapper() const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!isEmpty());
</span><del>-    return toRenderMathMLBlock(lastChild()-&gt;previousSibling());
</del><ins>+    return downcast&lt;RenderMathMLBlock&gt;(lastChild()-&gt;previousSibling());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderMathMLRootWrapper* RenderMathMLRoot::indexWrapper() const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!isEmpty());
</span><del>-    return isRenderMathMLSquareRoot() ? nullptr : toRenderMathMLRootWrapper(firstChild());
</del><ins>+    return is&lt;RenderMathMLSquareRoot&gt;(*this) ? nullptr : downcast&lt;RenderMathMLRootWrapper&gt;(firstChild());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderMathMLRadicalOperator* RenderMathMLRoot::radicalOperator() const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!isEmpty());
</span><del>-    return toRenderMathMLRadicalOperator(radicalWrapper()-&gt;firstChild());
</del><ins>+    return downcast&lt;RenderMathMLRadicalOperator&gt;(radicalWrapper()-&gt;firstChild());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMathMLRoot::restructureWrappers()
</span><span class="lines">@@ -358,7 +359,7 @@
</span><span class="cx">     RenderObject* next = RenderMathMLBlock::removeChild(child);
</span><span class="cx"> 
</span><span class="cx">     if (!(beingDestroyed() || documentBeingDestroyed()))
</span><del>-        toRenderMathMLRoot(parent())-&gt;restructureWrappers();
</del><ins>+        downcast&lt;RenderMathMLRoot&gt;(*parent()).restructureWrappers();
</ins><span class="cx"> 
</span><span class="cx">     return next;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLRooth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -71,8 +71,6 @@
</span><span class="cx">     LayoutUnit m_extraAscender;
</span><span class="cx">     float m_degreeBottomRaisePercent;
</span><span class="cx"> };
</span><del>-    
-RENDER_OBJECT_TYPE_CASTS(RenderMathMLRoot, isRenderMathMLRoot())
</del><span class="cx"> 
</span><span class="cx"> // These are specific wrappers for the index and base, that ask the parent to restructure the renderers after child removal.
</span><span class="cx"> class RenderMathMLRootWrapper : public RenderMathMLRow {
</span><span class="lines">@@ -91,9 +89,10 @@
</span><span class="cx">     virtual const char* renderName() const override { return &quot;RenderMathMLRootWrapper&quot;; }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLRootWrapper, isRenderMathMLRootWrapper())
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRoot, isRenderMathMLRoot())
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRootWrapper, isRenderMathMLRootWrapper())
</ins><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLRowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -58,8 +58,8 @@
</span><span class="cx"> void RenderMathMLRow::updateOperatorProperties()
</span><span class="cx"> {
</span><span class="cx">     for (RenderObject* child = firstChild(); child; child = child-&gt;nextSibling()) {
</span><del>-        if (child-&gt;isRenderMathMLBlock()) {
-            if (auto renderOperator = toRenderMathMLBlock(child)-&gt;unembellishedOperator())
</del><ins>+        if (is&lt;RenderMathMLBlock&gt;(*child)) {
+            if (auto* renderOperator = downcast&lt;RenderMathMLBlock&gt;(*child).unembellishedOperator())
</ins><span class="cx">                 renderOperator-&gt;updateOperatorProperties();
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -71,26 +71,26 @@
</span><span class="cx">     int stretchHeightAboveBaseline = 0, stretchDepthBelowBaseline = 0;
</span><span class="cx">     for (RenderObject* child = firstChild(); child; child = child-&gt;nextSibling()) {
</span><span class="cx">         if (child-&gt;needsLayout())
</span><del>-            toRenderElement(child)-&gt;layout();
-        if (child-&gt;isRenderMathMLBlock()) {
</del><ins>+            downcast&lt;RenderElement&gt;(*child).layout();
+        if (is&lt;RenderMathMLBlock&gt;(*child)) {
</ins><span class="cx">             // We skip the stretchy operators as they must not be included in the computation of the stretch size.
</span><del>-            auto renderOperator = toRenderMathMLBlock(child)-&gt;unembellishedOperator();
</del><ins>+            auto* renderOperator = downcast&lt;RenderMathMLBlock&gt;(*child).unembellishedOperator();
</ins><span class="cx">             if (renderOperator &amp;&amp; renderOperator-&gt;hasOperatorFlag(MathMLOperatorDictionary::Stretchy))
</span><span class="cx">                 continue;
</span><span class="cx">         }
</span><span class="cx">         LayoutUnit childHeightAboveBaseline = 0, childDepthBelowBaseline = 0;
</span><del>-        if (child-&gt;isRenderMathMLBlock()) {
-            RenderMathMLBlock* mathmlChild = toRenderMathMLBlock(child);
-            childHeightAboveBaseline = mathmlChild-&gt;firstLineBaseline();
</del><ins>+        if (is&lt;RenderMathMLBlock&gt;(*child)) {
+            RenderMathMLBlock&amp; mathmlChild = downcast&lt;RenderMathMLBlock&gt;(*child);
+            childHeightAboveBaseline = mathmlChild.firstLineBaseline();
</ins><span class="cx">             if (childHeightAboveBaseline == -1)
</span><del>-                childHeightAboveBaseline = mathmlChild-&gt;logicalHeight();
-            childDepthBelowBaseline = mathmlChild-&gt;logicalHeight() - childHeightAboveBaseline;
-        } else if (child-&gt;isRenderMathMLTable()) {
-            RenderMathMLTable* tableChild = toRenderMathMLTable(child);
-            childHeightAboveBaseline = tableChild-&gt;firstLineBaseline();
-            childDepthBelowBaseline = tableChild-&gt;logicalHeight() - childHeightAboveBaseline;
-        } else if (child-&gt;isBox()) {
-            childHeightAboveBaseline = toRenderBox(child)-&gt;logicalHeight();
</del><ins>+                childHeightAboveBaseline = mathmlChild.logicalHeight();
+            childDepthBelowBaseline = mathmlChild.logicalHeight() - childHeightAboveBaseline;
+        } else if (is&lt;RenderMathMLTable&gt;(*child)) {
+            RenderMathMLTable&amp; tableChild = downcast&lt;RenderMathMLTable&gt;(*child);
+            childHeightAboveBaseline = tableChild.firstLineBaseline();
+            childDepthBelowBaseline = tableChild.logicalHeight() - childHeightAboveBaseline;
+        } else if (is&lt;RenderBox&gt;(*child)) {
+            childHeightAboveBaseline = downcast&lt;RenderBox&gt;(*child).logicalHeight();
</ins><span class="cx">             childDepthBelowBaseline = 0;
</span><span class="cx">         }
</span><span class="cx">         stretchHeightAboveBaseline = std::max&lt;LayoutUnit&gt;(stretchHeightAboveBaseline, childHeightAboveBaseline);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLRowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -50,9 +50,9 @@
</span><span class="cx">     virtual const char* renderName() const override { return isAnonymous() ? &quot;RenderMathMLRow (anonymous)&quot; : &quot;RenderMathMLRow&quot;; }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLRow, isRenderMathMLRow())
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLRow, isRenderMathMLRow())
</ins><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> #endif // RenderMathMLRow_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLScriptscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -153,10 +153,10 @@
</span><span class="cx">         // beforeChild may be a grandchild, so we call the addChild function of the corresponding wrapper instead.
</span><span class="cx">         RenderObject* parent = beforeChild-&gt;parent();
</span><span class="cx">         if (parent != this) {
</span><del>-            RenderMathMLBlock* parentBlock = toRenderMathMLBlock(parent);
-            if (parentBlock-&gt;isRenderMathMLScriptsWrapper()) {
-                RenderMathMLScriptsWrapper* wrapper = toRenderMathMLScriptsWrapper(parentBlock);
-                wrapper-&gt;addChildInternal(false, child, beforeChild);
</del><ins>+            RenderMathMLBlock&amp; parentBlock = downcast&lt;RenderMathMLBlock&gt;(*parent);
+            if (is&lt;RenderMathMLScriptsWrapper&gt;(parentBlock)) {
+                RenderMathMLScriptsWrapper&amp; wrapper = downcast&lt;RenderMathMLScriptsWrapper&gt;(parentBlock);
+                wrapper.addChildInternal(false, child, beforeChild);
</ins><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="lines">@@ -176,12 +176,12 @@
</span><span class="cx"> 
</span><span class="cx">     if (!beforeChild || isPrescript(beforeChild)) {
</span><span class="cx">         // We are at the end of a sequence of subSup pairs.
</span><del>-        RenderMathMLBlock* previousSibling = toRenderMathMLBlock(beforeChild ? beforeChild-&gt;previousSibling() : lastChild());
-        if (previousSibling &amp;&amp; previousSibling-&gt;isRenderMathMLScriptsWrapper()) {
-            RenderMathMLScriptsWrapper* wrapper = toRenderMathMLScriptsWrapper(previousSibling);
-            if ((wrapper-&gt;m_kind == RenderMathMLScriptsWrapper::Base &amp;&amp; wrapper-&gt;isEmpty()) || (wrapper-&gt;m_kind == RenderMathMLScriptsWrapper::SubSupPair &amp;&amp; !wrapper-&gt;firstChild()-&gt;nextSibling())) {
</del><ins>+        RenderMathMLBlock* previousSibling = downcast&lt;RenderMathMLBlock&gt;(beforeChild ? beforeChild-&gt;previousSibling() : lastChild());
+        if (is&lt;RenderMathMLScriptsWrapper&gt;(previousSibling)) {
+            RenderMathMLScriptsWrapper&amp; wrapper = downcast&lt;RenderMathMLScriptsWrapper&gt;(*previousSibling);
+            if ((wrapper.m_kind == RenderMathMLScriptsWrapper::Base &amp;&amp; wrapper.isEmpty()) || (wrapper.m_kind == RenderMathMLScriptsWrapper::SubSupPair &amp;&amp; !wrapper.firstChild()-&gt;nextSibling())) {
</ins><span class="cx">                 // 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.
</span><del>-                wrapper-&gt;addChildInternal(true, child);
</del><ins>+                wrapper.addChildInternal(true, child);
</ins><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="lines">@@ -193,10 +193,10 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // beforeChild is a subSup pair. This is like inserting the new child at the beginning of the subSup wrapper.
</span><del>-    RenderMathMLScriptsWrapper* wrapper = toRenderMathMLScriptsWrapper(beforeChild);
-    ASSERT(wrapper-&gt;m_kind == RenderMathMLScriptsWrapper::SubSupPair);
</del><ins>+    RenderMathMLScriptsWrapper&amp; wrapper = downcast&lt;RenderMathMLScriptsWrapper&gt;(*beforeChild);
+    ASSERT(wrapper.m_kind == RenderMathMLScriptsWrapper::SubSupPair);
</ins><span class="cx">     ASSERT(!(m_baseWrapper-&gt;isEmpty() &amp;&amp; m_baseWrapper-&gt;nextSibling() == beforeChild));
</span><del>-    wrapper-&gt;addChildInternal(false, child, wrapper-&gt;firstChild());
</del><ins>+    wrapper.addChildInternal(false, child, wrapper.firstChild());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderObject* RenderMathMLScripts::removeChildInternal(bool doNotRestructure, RenderObject&amp; child)
</span><span class="lines">@@ -211,13 +211,13 @@
</span><span class="cx">     ASSERT(previousSibling);
</span><span class="cx"> 
</span><span class="cx">     if (nextSibling &amp;&amp; !isPrescript(previousSibling) &amp;&amp; !isPrescript(nextSibling)) {
</span><del>-        RenderMathMLScriptsWrapper* previousWrapper = toRenderMathMLScriptsWrapper(previousSibling);
-        RenderMathMLScriptsWrapper* nextWrapper = toRenderMathMLScriptsWrapper(nextSibling);
-        ASSERT(nextWrapper-&gt;m_kind == RenderMathMLScriptsWrapper::SubSupPair &amp;&amp; !nextWrapper-&gt;isEmpty());
-        if ((previousWrapper-&gt;m_kind == RenderMathMLScriptsWrapper::Base &amp;&amp; previousWrapper-&gt;isEmpty()) || (previousWrapper-&gt;m_kind == RenderMathMLScriptsWrapper::SubSupPair &amp;&amp; !previousWrapper-&gt;firstChild()-&gt;nextSibling())) {
-            RenderObject* script = nextWrapper-&gt;firstChild();
-            nextWrapper-&gt;removeChildInternal(false, *script);
-            previousWrapper-&gt;addChildInternal(true, script);
</del><ins>+        RenderMathMLScriptsWrapper&amp; previousWrapper = downcast&lt;RenderMathMLScriptsWrapper&gt;(*previousSibling);
+        RenderMathMLScriptsWrapper&amp; nextWrapper = downcast&lt;RenderMathMLScriptsWrapper&gt;(*nextSibling);
+        ASSERT(nextWrapper.m_kind == RenderMathMLScriptsWrapper::SubSupPair &amp;&amp; !nextWrapper.isEmpty());
+        if ((previousWrapper.m_kind == RenderMathMLScriptsWrapper::Base &amp;&amp; previousWrapper.isEmpty()) || (previousWrapper.m_kind == RenderMathMLScriptsWrapper::SubSupPair &amp;&amp; !previousWrapper.firstChild()-&gt;nextSibling())) {
+            RenderObject* script = nextWrapper.firstChild();
+            nextWrapper.removeChildInternal(false, *script);
+            previousWrapper.addChildInternal(true, script);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -261,9 +261,9 @@
</span><span class="cx"> RenderMathMLOperator* RenderMathMLScripts::unembellishedOperator()
</span><span class="cx"> {
</span><span class="cx">     RenderBoxModelObject* base = this-&gt;base();
</span><del>-    if (!base || !base-&gt;isRenderMathMLBlock())
-        return 0;
-    return toRenderMathMLBlock(base)-&gt;unembellishedOperator();
</del><ins>+    if (!is&lt;RenderMathMLBlock&gt;(base))
+        return nullptr;
+    return downcast&lt;RenderMathMLBlock&gt;(*base).unembellishedOperator();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMathMLScripts::layout()
</span><span class="lines">@@ -302,8 +302,8 @@
</span><span class="cx">         parseMathMLLength(scriptElement-&gt;fastGetAttribute(MathMLNames::superscriptshiftAttr), superscriptShiftValue, &amp;style(), false);
</span><span class="cx"> 
</span><span class="cx">     bool isPostScript = true;
</span><del>-    RenderMathMLBlock* subSupPair = toRenderMathMLBlock(m_baseWrapper-&gt;nextSibling());
-    for (; subSupPair; subSupPair = toRenderMathMLBlock(subSupPair-&gt;nextSibling())) {
</del><ins>+    RenderMathMLBlock* subSupPair = downcast&lt;RenderMathMLBlock&gt;(m_baseWrapper-&gt;nextSibling());
+    for (; subSupPair; subSupPair = downcast&lt;RenderMathMLBlock&gt;(subSupPair-&gt;nextSibling())) {
</ins><span class="cx"> 
</span><span class="cx">         // We skip the base and &lt;mprescripts/&gt; elements.
</span><span class="cx">         if (isPrescript(subSupPair)) {
</span><span class="lines">@@ -381,7 +381,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RenderMathMLScripts* parentNode = toRenderMathMLScripts(parent());
</del><ins>+    RenderMathMLScripts* parentNode = downcast&lt;RenderMathMLScripts&gt;(parent());
</ins><span class="cx"> 
</span><span class="cx">     if (m_kind == Base) {
</span><span class="cx">         RenderObject* sibling = nextSibling();
</span><span class="lines">@@ -432,7 +432,7 @@
</span><span class="cx">     // We first move to the last subSup pair in the curent sequence of scripts.
</span><span class="cx">     RenderMathMLScriptsWrapper* subSupPair = this;
</span><span class="cx">     while (subSupPair-&gt;nextSibling() &amp;&amp; !isPrescript(subSupPair-&gt;nextSibling()))
</span><del>-        subSupPair = toRenderMathMLScriptsWrapper(subSupPair-&gt;nextSibling());
</del><ins>+        subSupPair = downcast&lt;RenderMathMLScriptsWrapper&gt;(subSupPair-&gt;nextSibling());
</ins><span class="cx">     if (subSupPair-&gt;firstChild()-&gt;nextSibling()) {
</span><span class="cx">         // The last pair has two children so we need to create a new pair to leave room for the new child.
</span><span class="cx">         RenderMathMLScriptsWrapper* newPair = createAnonymousWrapper(parentNode, RenderMathMLScriptsWrapper::SubSupPair);
</span><span class="lines">@@ -442,20 +442,20 @@
</span><span class="cx"> 
</span><span class="cx">     // We shift the successors in the current sequence of scripts.
</span><span class="cx">     for (RenderObject* previousSibling = subSupPair-&gt;previousSibling(); subSupPair != this; previousSibling = previousSibling-&gt;previousSibling()) {
</span><del>-        RenderMathMLScriptsWrapper* previousSubSupPair = toRenderMathMLScriptsWrapper(previousSibling);
-        RenderObject* script = previousSubSupPair-&gt;lastChild();
-        previousSubSupPair-&gt;removeChildInternal(true, *script);
</del><ins>+        RenderMathMLScriptsWrapper&amp; previousSubSupPair = downcast&lt;RenderMathMLScriptsWrapper&gt;(*previousSibling);
+        RenderObject* script = previousSubSupPair.lastChild();
+        previousSubSupPair.removeChildInternal(true, *script);
</ins><span class="cx">         subSupPair-&gt;addChildInternal(true, script, subSupPair-&gt;firstChild());
</span><del>-        subSupPair = toRenderMathMLScriptsWrapper(previousSibling);
</del><ins>+        subSupPair = downcast&lt;RenderMathMLScriptsWrapper&gt;(previousSibling);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 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.
</span><del>-    RenderMathMLBlock::addChild(child, firstChild() == beforeChild ? beforeChild : 0);
</del><ins>+    RenderMathMLBlock::addChild(child, firstChild() == beforeChild ? beforeChild : nullptr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMathMLScriptsWrapper::addChild(RenderObject* child, RenderObject* beforeChild)
</span><span class="cx"> {
</span><del>-    RenderMathMLScripts* parentNode = toRenderMathMLScripts(parent());
</del><ins>+    RenderMathMLScripts* parentNode = downcast&lt;RenderMathMLScripts&gt;(parent());
</ins><span class="cx"> 
</span><span class="cx">     addChildInternal(false, child, beforeChild);
</span><span class="cx"> 
</span><span class="lines">@@ -467,7 +467,7 @@
</span><span class="cx">     if (doNotRestructure)
</span><span class="cx">         return RenderMathMLBlock::removeChild(child);
</span><span class="cx"> 
</span><del>-    RenderMathMLScripts* parentNode = toRenderMathMLScripts(parent());
</del><ins>+    RenderMathMLScripts* parentNode = downcast&lt;RenderMathMLScripts&gt;(parent());
</ins><span class="cx"> 
</span><span class="cx">     if (m_kind == Base) {
</span><span class="cx">         // We remove the child from the base wrapper.
</span><span class="lines">@@ -475,9 +475,9 @@
</span><span class="cx">         RenderMathMLBlock::removeChild(child);
</span><span class="cx">         if (sibling &amp;&amp; !isPrescript(sibling)) {
</span><span class="cx">             // If there are postscripts, the first one becomes the base.
</span><del>-            RenderMathMLScriptsWrapper* wrapper = toRenderMathMLScriptsWrapper(sibling);
-            RenderObject* script = wrapper-&gt;firstChild();
-            wrapper-&gt;removeChildInternal(false, *script);
</del><ins>+            RenderMathMLScriptsWrapper&amp; wrapper = downcast&lt;RenderMathMLScriptsWrapper&gt;(*sibling);
+            RenderObject* script = wrapper.firstChild();
+            wrapper.removeChildInternal(false, *script);
</ins><span class="cx">             RenderMathMLBlock::addChild(script);
</span><span class="cx">         }
</span><span class="cx">         return sibling;
</span><span class="lines">@@ -487,11 +487,11 @@
</span><span class="cx">     RenderObject* next = RenderMathMLBlock::removeChild(child);
</span><span class="cx">     RenderMathMLScriptsWrapper* subSupPair = this;
</span><span class="cx">     for (RenderObject* nextSibling = subSupPair-&gt;nextSibling(); nextSibling &amp;&amp; !isPrescript(nextSibling); nextSibling = nextSibling-&gt;nextSibling()) {
</span><del>-        RenderMathMLScriptsWrapper* nextSubSupPair = toRenderMathMLScriptsWrapper(nextSibling);
-        RenderObject* script = nextSubSupPair-&gt;firstChild();
-        nextSubSupPair-&gt;removeChildInternal(true, *script);
</del><ins>+        RenderMathMLScriptsWrapper&amp; nextSubSupPair = downcast&lt;RenderMathMLScriptsWrapper&gt;(*nextSibling);
+        RenderObject* script = nextSubSupPair.firstChild();
+        nextSubSupPair.removeChildInternal(true, *script);
</ins><span class="cx">         subSupPair-&gt;addChildInternal(true, script);
</span><del>-        subSupPair = toRenderMathMLScriptsWrapper(nextSibling);
</del><ins>+        subSupPair = downcast&lt;RenderMathMLScriptsWrapper&gt;(nextSibling);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // We remove the last subSup pair if it became empty.
</span><span class="lines">@@ -510,7 +510,7 @@
</span><span class="cx">         return RenderMathMLBlock::removeChild(child);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    RenderMathMLScripts* parentNode = toRenderMathMLScripts(parent());
</del><ins>+    RenderMathMLScripts* parentNode = downcast&lt;RenderMathMLScripts&gt;(parent());
</ins><span class="cx">     RenderObject* next = removeChildInternal(false, child);
</span><span class="cx">     parentNode-&gt;fixAnonymousStyles();
</span><span class="cx">     return next;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLScriptsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLScripts.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -65,8 +65,6 @@
</span><span class="cx">     WrapperType m_kind;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLScriptsWrapper, isRenderMathMLScriptsWrapper())
-
</del><span class="cx"> // Render a base with scripts.
</span><span class="cx"> class RenderMathMLScripts : public RenderMathMLBlock {
</span><span class="cx"> 
</span><span class="lines">@@ -105,9 +103,10 @@
</span><span class="cx">     RenderMathMLScriptsWrapper* m_baseWrapper;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLScripts, isRenderMathMLScripts())
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLScriptsWrapper, isRenderMathMLScriptsWrapper())
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLScripts, isRenderMathMLScripts())
</ins><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLSpaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLSpace.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLSpace.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLSpace.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -54,9 +54,9 @@
</span><span class="cx">     LayoutUnit m_depth;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLSpace, isRenderMathMLSpace())
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLSpace, isRenderMathMLSpace())
</ins><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> #endif // RenderMathMLSpace_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLSquareRooth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -47,8 +47,10 @@
</span><span class="cx">     virtual const char* renderName() const override { return &quot;RenderMathMLSquareRoot&quot;; }
</span><span class="cx"> };
</span><span class="cx">     
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLSquareRoot, isRenderMathMLSquareRoot())
+
</ins><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> 
</span><span class="cx"> #endif // RenderMathMLSquareRoot_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLTokenh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLToken.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLToken.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLToken.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -59,9 +59,9 @@
</span><span class="cx">     bool m_containsElement;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderMathMLToken, isRenderMathMLToken())
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-}
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderMathMLToken, isRenderMathMLToken())
</ins><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(MATHML)
</span><span class="cx"> #endif // RenderMathMLToken_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLUnderOvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -55,9 +55,9 @@
</span><span class="cx"> RenderMathMLOperator* RenderMathMLUnderOver::unembellishedOperator()
</span><span class="cx"> {
</span><span class="cx">     RenderObject* base = firstChild();
</span><del>-    if (!base || !base-&gt;isRenderMathMLBlock())
-        return 0;
-    return toRenderMathMLBlock(base)-&gt;unembellishedOperator();
</del><ins>+    if (!is&lt;RenderMathMLBlock&gt;(base))
+        return nullptr;
+    return downcast&lt;RenderMathMLBlock&gt;(*base).unembellishedOperator();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int RenderMathMLUnderOver::firstLineBaseline() const
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGContainerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGContainer.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGContainer.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGContainer.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -84,4 +84,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGContainer, isSVGContainer())
+
</ins><span class="cx"> #endif // RenderSVGContainer_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGGradientStoph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGGradientStop.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGGradientStop.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGGradientStop.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -62,6 +62,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderSVGGradientStop, isSVGGradientStop())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGGradientStop, isSVGGradientStop())
+
</ins><span class="cx"> #endif // RenderSVGGradientStop_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGImageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGImage.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGImage.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGImage.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -94,4 +94,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGImage, isSVGImage())
+
</ins><span class="cx"> #endif // RenderSVGImage_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGInlineTexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -71,6 +71,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderSVGInlineText, isSVGInlineText())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGInlineText, isSVGInlineText())
+
</ins><span class="cx"> #endif // RenderSVGInlineText_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGModelObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGModelObject.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -80,8 +80,10 @@
</span><span class="cx">     bool m_hasSVGShadow;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-RENDER_OBJECT_TYPE_CASTS(RenderSVGModelObject, isRenderSVGModelObject());
</del><ins>+RENDER_OBJECT_TYPE_CASTS(RenderSVGModelObject, isRenderSVGModelObject())
</ins><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGModelObject, isRenderSVGModelObject())
+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGPathh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGPath.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGPath.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGPath.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -57,6 +57,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderSVGPath, isSVGPath())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGPath, isSVGPath())
+
+#endif // RenderSVGPath_h
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGResourceContainerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceContainer.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -97,6 +97,8 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGResourceContainer, isSVGResourceContainer())
+
+#endif // RenderSVGResourceContainer_h
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGResourceFilterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -99,6 +99,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderSVGResourceFilter, isSVGResourceFilter())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGResourceFilter, isSVGResourceFilter())
+
+#endif // RenderSVGResourceFilter_h
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGRooth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGRoot.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGRoot.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGRoot.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -126,4 +126,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGRoot, isSVGRoot())
+
</ins><span class="cx"> #endif // RenderSVGRoot_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGShapeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGShape.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGShape.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGShape.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -135,6 +135,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderSVGShape, isSVGShape())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGShape, isSVGShape())
+
+#endif // RenderSVGShape_h
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGTexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGText.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGText.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGText.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -107,6 +107,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderSVGText, isSVGText())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGText, isSVGText())
+
+#endif // RenderSVGText_h
</ins></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGTextPathh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGTextPath.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGTextPath.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGTextPath.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -47,6 +47,8 @@
</span><span class="cx"> 
</span><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderSVGTextPath, isSVGTextPath())
</span><span class="cx"> 
</span><del>-}
</del><ins>+} // namespace WebCore
</ins><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGTextPath, isSVGTextPath())
+
</ins><span class="cx"> #endif // RenderSVGTextPath_h
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGViewportContainerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h (174374 => 174375)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h        2014-10-07 00:15:07 UTC (rev 174374)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGViewportContainer.h        2014-10-07 00:26:25 UTC (rev 174375)
</span><span class="lines">@@ -71,4 +71,6 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGViewportContainer, isSVGViewportContainer())
+
</ins><span class="cx"> #endif // RenderSVGViewportContainer_h
</span></span></pre>
</div>
</div>

</body>
</html>