<!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>[163285] trunk/Source/WebCore</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/163285">163285</a></dd>
<dt>Author</dt> <dd>akling@apple.com</dd>
<dt>Date</dt> <dd>2014-02-02 21:04:57 -0800 (Sun, 02 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Modernize RenderSVGText::locateRenderSVGTextAncestor().
&lt;https://webkit.org/b/128093&gt;

Make locateRenderSVGTextAncestor() take a reference, and simplify it
internally with lineageOfType.

Switched callers to use 'auto' for the return type so we get some
devirtualization freebies.

Reviewed by Anders Carlsson.

* rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::objectBoundingBox):
(WebCore::RenderSVGInline::strokeBoundingBox):
(WebCore::RenderSVGInline::repaintRectInLocalCoordinates):
(WebCore::RenderSVGInline::absoluteQuads):
(WebCore::RenderSVGInline::addChild):
(WebCore::RenderSVGInline::removeChild):
* rendering/svg/RenderSVGInlineText.cpp:
(WebCore::RenderSVGInlineText::setTextInternal):
(WebCore::RenderSVGInlineText::styleDidChange):
* rendering/svg/RenderSVGResourceGradient.cpp:
(WebCore::createMaskAndSwapContextForTextGradient):
(WebCore::clipToTextMask):
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::locateRenderSVGTextAncestor):
* rendering/svg/RenderSVGText.h:
(WebCore::RenderSVGText&gt;):
* rendering/svg/SVGTextLayoutAttributesBuilder.cpp:
(WebCore::SVGTextLayoutAttributesBuilder::buildLayoutAttributesForTextRenderer):
* rendering/svg/SVGTextMetricsBuilder.cpp:
(WebCore::SVGTextMetricsBuilder::measureTextRenderer):
* svg/SVGTextPositioningElement.cpp:
(WebCore::SVGTextPositioningElement::svgAttributeChanged):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGInlinecpp">trunk/Source/WebCore/rendering/svg/RenderSVGInline.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGInlineTextcpp">trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGResourceGradientcpp">trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGTextcpp">trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGTexth">trunk/Source/WebCore/rendering/svg/RenderSVGText.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgSVGTextLayoutAttributesBuildercpp">trunk/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgSVGTextMetricsBuildercpp">trunk/Source/WebCore/rendering/svg/SVGTextMetricsBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextPositioningElementcpp">trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (163284 => 163285)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-02-03 04:54:26 UTC (rev 163284)
+++ trunk/Source/WebCore/ChangeLog        2014-02-03 05:04:57 UTC (rev 163285)
</span><span class="lines">@@ -1,5 +1,42 @@
</span><span class="cx"> 2014-02-02  Andreas Kling  &lt;akling@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Modernize RenderSVGText::locateRenderSVGTextAncestor().
+        &lt;https://webkit.org/b/128093&gt;
+
+        Make locateRenderSVGTextAncestor() take a reference, and simplify it
+        internally with lineageOfType.
+
+        Switched callers to use 'auto' for the return type so we get some
+        devirtualization freebies.
+
+        Reviewed by Anders Carlsson.
+
+        * rendering/svg/RenderSVGInline.cpp:
+        (WebCore::RenderSVGInline::objectBoundingBox):
+        (WebCore::RenderSVGInline::strokeBoundingBox):
+        (WebCore::RenderSVGInline::repaintRectInLocalCoordinates):
+        (WebCore::RenderSVGInline::absoluteQuads):
+        (WebCore::RenderSVGInline::addChild):
+        (WebCore::RenderSVGInline::removeChild):
+        * rendering/svg/RenderSVGInlineText.cpp:
+        (WebCore::RenderSVGInlineText::setTextInternal):
+        (WebCore::RenderSVGInlineText::styleDidChange):
+        * rendering/svg/RenderSVGResourceGradient.cpp:
+        (WebCore::createMaskAndSwapContextForTextGradient):
+        (WebCore::clipToTextMask):
+        * rendering/svg/RenderSVGText.cpp:
+        (WebCore::RenderSVGText::locateRenderSVGTextAncestor):
+        * rendering/svg/RenderSVGText.h:
+        (WebCore::RenderSVGText&gt;):
+        * rendering/svg/SVGTextLayoutAttributesBuilder.cpp:
+        (WebCore::SVGTextLayoutAttributesBuilder::buildLayoutAttributesForTextRenderer):
+        * rendering/svg/SVGTextMetricsBuilder.cpp:
+        (WebCore::SVGTextMetricsBuilder::measureTextRenderer):
+        * svg/SVGTextPositioningElement.cpp:
+        (WebCore::SVGTextPositioningElement::svgAttributeChanged):
+
+2014-02-02  Andreas Kling  &lt;akling@apple.com&gt;
+
</ins><span class="cx">         Modernize the toRenderSVGResourceContainer() helper.
</span><span class="cx">         &lt;https://webkit.org/b/128091&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGInlinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGInline.cpp (163284 => 163285)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGInline.cpp        2014-02-03 04:54:26 UTC (rev 163284)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGInline.cpp        2014-02-03 05:04:57 UTC (rev 163285)
</span><span class="lines">@@ -47,24 +47,24 @@
</span><span class="cx"> 
</span><span class="cx"> FloatRect RenderSVGInline::objectBoundingBox() const
</span><span class="cx"> {
</span><del>-    if (const RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this))
-        return object-&gt;objectBoundingBox();
</del><ins>+    if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this))
+        return textAncestor-&gt;objectBoundingBox();
</ins><span class="cx"> 
</span><span class="cx">     return FloatRect();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> FloatRect RenderSVGInline::strokeBoundingBox() const
</span><span class="cx"> {
</span><del>-    if (const RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this))
-        return object-&gt;strokeBoundingBox();
</del><ins>+    if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this))
+        return textAncestor-&gt;strokeBoundingBox();
</ins><span class="cx"> 
</span><span class="cx">     return FloatRect();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> FloatRect RenderSVGInline::repaintRectInLocalCoordinates() const
</span><span class="cx"> {
</span><del>-    if (const RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this))
-        return object-&gt;repaintRectInLocalCoordinates();
</del><ins>+    if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this))
+        return textAncestor-&gt;repaintRectInLocalCoordinates();
</ins><span class="cx"> 
</span><span class="cx">     return FloatRect();
</span><span class="cx"> }
</span><span class="lines">@@ -91,11 +91,11 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderSVGInline::absoluteQuads(Vector&lt;FloatQuad&gt;&amp; quads, bool* wasFixed) const
</span><span class="cx"> {
</span><del>-    const RenderObject* object = RenderSVGText::locateRenderSVGTextAncestor(this);
-    if (!object)
</del><ins>+    auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this);
+    if (!textAncestor)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    FloatRect textBoundingBox = object-&gt;strokeBoundingBox();
</del><ins>+    FloatRect textBoundingBox = textAncestor-&gt;strokeBoundingBox();
</ins><span class="cx">     for (InlineFlowBox* box = firstLineBox(); box; box = box-&gt;nextLineBox())
</span><span class="cx">         quads.append(localToAbsoluteQuad(FloatRect(textBoundingBox.x() + box-&gt;x(), textBoundingBox.y() + box-&gt;y(), box-&gt;logicalWidth(), box-&gt;logicalHeight()), false, wasFixed));
</span><span class="cx"> }
</span><span class="lines">@@ -119,23 +119,23 @@
</span><span class="cx">     RenderInline::addChild(child, beforeChild);
</span><span class="cx">     SVGResourcesCache::clientWasAddedToTree(*child);
</span><span class="cx"> 
</span><del>-    if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(this))
-        textRenderer-&gt;subtreeChildWasAdded(child);
</del><ins>+    if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this))
+        textAncestor-&gt;subtreeChildWasAdded(child);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderSVGInline::removeChild(RenderObject&amp; child)
</span><span class="cx"> {
</span><span class="cx">     SVGResourcesCache::clientWillBeRemovedFromTree(child);
</span><span class="cx"> 
</span><del>-    RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(this);
-    if (!textRenderer) {
</del><ins>+    auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this);
+    if (!textAncestor) {
</ins><span class="cx">         RenderInline::removeChild(child);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     Vector&lt;SVGTextLayoutAttributes*, 2&gt; affectedAttributes;
</span><del>-    textRenderer-&gt;subtreeChildWillBeRemoved(&amp;child, affectedAttributes);
</del><ins>+    textAncestor-&gt;subtreeChildWillBeRemoved(&amp;child, affectedAttributes);
</ins><span class="cx">     RenderInline::removeChild(child);
</span><del>-    textRenderer-&gt;subtreeChildWasRemoved(affectedAttributes);
</del><ins>+    textAncestor-&gt;subtreeChildWasRemoved(affectedAttributes);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGInlineTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp (163284 => 163285)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp        2014-02-03 04:54:26 UTC (rev 163284)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGInlineText.cpp        2014-02-03 05:04:57 UTC (rev 163285)
</span><span class="lines">@@ -82,8 +82,8 @@
</span><span class="cx"> void RenderSVGInlineText::setTextInternal(const String&amp; text)
</span><span class="cx"> {
</span><span class="cx">     RenderText::setTextInternal(text);
</span><del>-    if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(this))
-        textRenderer-&gt;subtreeTextDidChange(this);
</del><ins>+    if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this))
+        textAncestor-&gt;subtreeTextDidChange(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderSVGInlineText::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
</span><span class="lines">@@ -107,8 +107,8 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // The text metrics may be influenced by style changes.
</span><del>-    if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(this))
-        textRenderer-&gt;subtreeStyleDidChange(this);
</del><ins>+    if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*this))
+        textAncestor-&gt;subtreeStyleDidChange(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> std::unique_ptr&lt;InlineTextBox&gt; RenderSVGInlineText::createTextBox()
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGResourceGradientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp (163284 => 163285)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp        2014-02-03 04:54:26 UTC (rev 163284)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp        2014-02-03 05:04:57 UTC (rev 163285)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> #if USE(CG)
</span><span class="cx"> static inline bool createMaskAndSwapContextForTextGradient(GraphicsContext*&amp; context, GraphicsContext*&amp; savedContext, std::unique_ptr&lt;ImageBuffer&gt;&amp; imageBuffer, RenderObject* object)
</span><span class="cx"> {
</span><del>-    RenderObject* textRootBlock = RenderSVGText::locateRenderSVGTextAncestor(object);
</del><ins>+    auto* textRootBlock = RenderSVGText::locateRenderSVGTextAncestor(*object);
</ins><span class="cx">     ASSERT(textRootBlock);
</span><span class="cx"> 
</span><span class="cx">     AffineTransform absoluteTransform;
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> 
</span><span class="cx"> static inline AffineTransform clipToTextMask(GraphicsContext* context, std::unique_ptr&lt;ImageBuffer&gt;&amp; imageBuffer, FloatRect&amp; targetRect, RenderObject* object, bool boundingBoxMode, const AffineTransform&amp; gradientTransform)
</span><span class="cx"> {
</span><del>-    RenderObject* textRootBlock = RenderSVGText::locateRenderSVGTextAncestor(object);
</del><ins>+    auto* textRootBlock = RenderSVGText::locateRenderSVGTextAncestor(*object);
</ins><span class="cx">     ASSERT(textRootBlock);
</span><span class="cx"> 
</span><span class="cx">     AffineTransform absoluteTransform;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp (163284 => 163285)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp        2014-02-03 04:54:26 UTC (rev 163284)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp        2014-02-03 05:04:57 UTC (rev 163285)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include &quot;HitTestResult.h&quot;
</span><span class="cx"> #include &quot;LayoutRepainter.h&quot;
</span><span class="cx"> #include &quot;PointerEventsHitRules.h&quot;
</span><ins>+#include &quot;RenderIterator.h&quot;
</ins><span class="cx"> #include &quot;RenderSVGInlineText.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;RenderSVGRoot.h&quot;
</span><span class="lines">@@ -77,24 +78,14 @@
</span><span class="cx">     return child.isInline();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RenderSVGText* RenderSVGText::locateRenderSVGTextAncestor(RenderObject* start)
</del><ins>+RenderSVGText* RenderSVGText::locateRenderSVGTextAncestor(RenderObject&amp; start)
</ins><span class="cx"> {
</span><del>-    ASSERT(start);
-    while (start &amp;&amp; !start-&gt;isSVGText())
-        start = start-&gt;parent();
-    if (!start || !start-&gt;isSVGText())
-        return 0;
-    return toRenderSVGText(start);
</del><ins>+    return lineageOfType&lt;RenderSVGText&gt;(start).first();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-const RenderSVGText* RenderSVGText::locateRenderSVGTextAncestor(const RenderObject* start)
</del><ins>+const RenderSVGText* RenderSVGText::locateRenderSVGTextAncestor(const RenderObject&amp; start)
</ins><span class="cx"> {
</span><del>-    ASSERT(start);
-    while (start &amp;&amp; !start-&gt;isSVGText())
-        start = start-&gt;parent();
-    if (!start || !start-&gt;isSVGText())
-        return 0;
-    return toRenderSVGText(start);
</del><ins>+    return lineageOfType&lt;RenderSVGText&gt;(start).first();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> LayoutRect RenderSVGText::clippedOverflowRectForRepaint(const RenderLayerModelObject* repaintContainer) const
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGTexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGText.h (163284 => 163285)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGText.h        2014-02-03 04:54:26 UTC (rev 163284)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGText.h        2014-02-03 05:04:57 UTC (rev 163285)
</span><span class="lines">@@ -47,8 +47,8 @@
</span><span class="cx">     void setNeedsTextMetricsUpdate() { m_needsTextMetricsUpdate = true; }
</span><span class="cx">     virtual FloatRect repaintRectInLocalCoordinates() const;
</span><span class="cx"> 
</span><del>-    static RenderSVGText* locateRenderSVGTextAncestor(RenderObject*);
-    static const RenderSVGText* locateRenderSVGTextAncestor(const RenderObject*);
</del><ins>+    static RenderSVGText* locateRenderSVGTextAncestor(RenderObject&amp;);
+    static const RenderSVGText* locateRenderSVGTextAncestor(const RenderObject&amp;);
</ins><span class="cx"> 
</span><span class="cx">     bool needsReordering() const { return m_needsReordering; }
</span><span class="cx">     Vector&lt;SVGTextLayoutAttributes*&gt;&amp; layoutAttributes() { return m_layoutAttributes; }
</span><span class="lines">@@ -59,6 +59,9 @@
</span><span class="cx">     void subtreeStyleDidChange(RenderSVGInlineText*);
</span><span class="cx">     void subtreeTextDidChange(RenderSVGInlineText*);
</span><span class="cx"> 
</span><ins>+    virtual FloatRect objectBoundingBox() const override { return frameRect(); }
+    virtual FloatRect strokeBoundingBox() const override;
+
</ins><span class="cx"> private:
</span><span class="cx">     void graphicsElement() const = delete;
</span><span class="cx"> 
</span><span class="lines">@@ -85,9 +88,6 @@
</span><span class="cx">     virtual void removeChild(RenderObject&amp;) override;
</span><span class="cx">     virtual void willBeDestroyed() override;
</span><span class="cx"> 
</span><del>-    virtual FloatRect objectBoundingBox() const { return frameRect(); }
-    virtual FloatRect strokeBoundingBox() const;
-
</del><span class="cx">     virtual const AffineTransform&amp; localToParentTransform() const { return m_localTransform; }
</span><span class="cx">     virtual AffineTransform localTransform() const { return m_localTransform; }
</span><span class="cx">     virtual std::unique_ptr&lt;RootInlineBox&gt; createRootInlineBox() override;
</span><span class="lines">@@ -106,6 +106,7 @@
</span><span class="cx">     Vector&lt;SVGTextLayoutAttributes*&gt; m_layoutAttributes;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+template&lt;&gt; inline bool isRendererOfType&lt;const RenderSVGText&gt;(const RenderObject&amp; renderer) { return renderer.isSVGText(); }
</ins><span class="cx"> RENDER_OBJECT_TYPE_CASTS(RenderSVGText, isSVGText())
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgSVGTextLayoutAttributesBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp (163284 => 163285)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp        2014-02-03 04:54:26 UTC (rev 163284)
+++ trunk/Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp        2014-02-03 05:04:57 UTC (rev 163285)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGTextLayoutAttributesBuilder::buildLayoutAttributesForTextRenderer(RenderSVGInlineText&amp; text)
</span><span class="cx"> {
</span><del>-    RenderSVGText* textRoot = RenderSVGText::locateRenderSVGTextAncestor(&amp;text);
</del><ins>+    auto* textRoot = RenderSVGText::locateRenderSVGTextAncestor(text);
</ins><span class="cx">     if (!textRoot)
</span><span class="cx">         return;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgSVGTextMetricsBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/SVGTextMetricsBuilder.cpp (163284 => 163285)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/SVGTextMetricsBuilder.cpp        2014-02-03 04:54:26 UTC (rev 163284)
+++ trunk/Source/WebCore/rendering/svg/SVGTextMetricsBuilder.cpp        2014-02-03 05:04:57 UTC (rev 163285)
</span><span class="lines">@@ -207,7 +207,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(text);
</span><span class="cx"> 
</span><del>-    RenderSVGText* textRoot = RenderSVGText::locateRenderSVGTextAncestor(text);
</del><ins>+    auto* textRoot = RenderSVGText::locateRenderSVGTextAncestor(*text);
</ins><span class="cx">     if (!textRoot)
</span><span class="cx">         return;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextPositioningElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp (163284 => 163285)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp        2014-02-03 04:54:26 UTC (rev 163284)
+++ trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp        2014-02-03 05:04:57 UTC (rev 163285)
</span><span class="lines">@@ -140,8 +140,8 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (updateRelativeLengths || attrName == SVGNames::rotateAttr) {
</span><del>-        if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(renderer))
-            textRenderer-&gt;setNeedsPositioningValuesUpdate();
</del><ins>+        if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*renderer))
+            textAncestor-&gt;setNeedsPositioningValuesUpdate();
</ins><span class="cx">         RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre>
</div>
</div>

</body>
</html>