<!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>[174722] 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/174722">174722</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-10-14 22:01:31 -0700 (Tue, 14 Oct 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Have offsetFromContainer() / offsetFromAncestorContainer() take a RenderElement&amp;
https://bugs.webkit.org/show_bug.cgi?id=137728

Reviewed by Benjamin Poulain.

Have offsetFromContainer() / offsetFromAncestorContainer() take a RenderElement&amp;
instead of a RenderObject*. The argument passed is never null and the type
should be a RenderElement as the argument is a container.

No new tests, no behavior change.

* editing/htmlediting.cpp:
(WebCore::localCaretRectInRendererForCaretPainting):
* page/GestureTapHighlighter.cpp:
* rendering/RenderBox.cpp:
(WebCore::RenderBox::mapLocalToContainer):
(WebCore::RenderBox::pushMappingToContainer):
(WebCore::RenderBox::offsetFromContainer):
(WebCore::RenderBox::computeRectForRepaint):
* rendering/RenderBox.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::mapAbsoluteToLocalPoint):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::computeRectForRepaint):
(WebCore::RenderInline::offsetFromContainer):
(WebCore::RenderInline::mapLocalToContainer):
(WebCore::RenderInline::pushMappingToContainer):
* rendering/RenderInline.h:
* rendering/RenderMultiColumnFlowThread.cpp:
(WebCore::RenderMultiColumnFlowThread::offsetFromContainer):
* rendering/RenderMultiColumnFlowThread.h:
* rendering/RenderNamedFlowFragment.cpp:
(WebCore::RenderNamedFlowFragment::offsetFromContainer):
* rendering/RenderNamedFlowFragment.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::offsetFromContainer):
(WebCore::RenderObject::offsetFromAncestorContainer):
* rendering/RenderObject.h:
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::offsetFromContainer):
* rendering/RenderTableCell.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::convertToPaintingRect):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreeditinghtmleditingcpp">trunk/Source/WebCore/editing/htmlediting.cpp</a></li>
<li><a href="#trunkSourceWebCorepageGestureTapHighlightercpp">trunk/Source/WebCore/page/GestureTapHighlighter.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxcpp">trunk/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxh">trunk/Source/WebCore/rendering/RenderBox.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxModelObjectcpp">trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderInlinecpp">trunk/Source/WebCore/rendering/RenderInline.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderInlineh">trunk/Source/WebCore/rendering/RenderInline.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnFlowThreadcpp">trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnFlowThreadh">trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderNamedFlowFragmentcpp">trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderNamedFlowFragmenth">trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjectcpp">trunk/Source/WebCore/rendering/RenderObject.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjecth">trunk/Source/WebCore/rendering/RenderObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableCellcpp">trunk/Source/WebCore/rendering/RenderTableCell.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableCellh">trunk/Source/WebCore/rendering/RenderTableCell.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderThemeMacmm">trunk/Source/WebCore/rendering/RenderThemeMac.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/ChangeLog        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -1,3 +1,49 @@
</span><ins>+2014-10-14  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Have offsetFromContainer() / offsetFromAncestorContainer() take a RenderElement&amp;
+        https://bugs.webkit.org/show_bug.cgi?id=137728
+
+        Reviewed by Benjamin Poulain.
+
+        Have offsetFromContainer() / offsetFromAncestorContainer() take a RenderElement&amp;
+        instead of a RenderObject*. The argument passed is never null and the type
+        should be a RenderElement as the argument is a container.
+
+        No new tests, no behavior change.
+
+        * editing/htmlediting.cpp:
+        (WebCore::localCaretRectInRendererForCaretPainting):
+        * page/GestureTapHighlighter.cpp:
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::mapLocalToContainer):
+        (WebCore::RenderBox::pushMappingToContainer):
+        (WebCore::RenderBox::offsetFromContainer):
+        (WebCore::RenderBox::computeRectForRepaint):
+        * rendering/RenderBox.h:
+        * rendering/RenderBoxModelObject.cpp:
+        (WebCore::RenderBoxModelObject::mapAbsoluteToLocalPoint):
+        * rendering/RenderInline.cpp:
+        (WebCore::RenderInline::computeRectForRepaint):
+        (WebCore::RenderInline::offsetFromContainer):
+        (WebCore::RenderInline::mapLocalToContainer):
+        (WebCore::RenderInline::pushMappingToContainer):
+        * rendering/RenderInline.h:
+        * rendering/RenderMultiColumnFlowThread.cpp:
+        (WebCore::RenderMultiColumnFlowThread::offsetFromContainer):
+        * rendering/RenderMultiColumnFlowThread.h:
+        * rendering/RenderNamedFlowFragment.cpp:
+        (WebCore::RenderNamedFlowFragment::offsetFromContainer):
+        * rendering/RenderNamedFlowFragment.h:
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::offsetFromContainer):
+        (WebCore::RenderObject::offsetFromAncestorContainer):
+        * rendering/RenderObject.h:
+        * rendering/RenderTableCell.cpp:
+        (WebCore::RenderTableCell::offsetFromContainer):
+        * rendering/RenderTableCell.h:
+        * rendering/RenderThemeMac.mm:
+        (WebCore::RenderThemeMac::convertToPaintingRect):
+
</ins><span class="cx"> 2014-10-14  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION (r159208): Crash when clicking scrubber after navigating away/back to video
</span></span></pre></div>
<a id="trunkSourceWebCoreeditinghtmleditingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/htmlediting.cpp (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/htmlediting.cpp        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/editing/htmlediting.cpp        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -1294,10 +1294,10 @@
</span><span class="cx"> 
</span><span class="cx">     // Compute an offset between the renderer and the caretPainter.
</span><span class="cx">     while (renderer != caretPainter) {
</span><del>-        RenderObject* containerObject = renderer-&gt;container();
</del><ins>+        RenderElement* containerObject = renderer-&gt;container();
</ins><span class="cx">         if (!containerObject)
</span><span class="cx">             return LayoutRect();
</span><del>-        localRect.move(renderer-&gt;offsetFromContainer(containerObject, localRect.location()));
</del><ins>+        localRect.move(renderer-&gt;offsetFromContainer(*containerObject, localRect.location()));
</ins><span class="cx">         renderer = containerObject;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageGestureTapHighlightercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/GestureTapHighlighter.cpp (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/GestureTapHighlighter.cpp        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/page/GestureTapHighlighter.cpp        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -64,11 +64,11 @@
</span><span class="cx">     LayoutPoint referencePoint;
</span><span class="cx"> 
</span><span class="cx">     while (o) {
</span><del>-        RenderObject* nextContainer = o-&gt;container();
</del><ins>+        RenderElement* nextContainer = o-&gt;container();
</ins><span class="cx">         if (!nextContainer)
</span><span class="cx">             break;
</span><span class="cx"> 
</span><del>-        LayoutSize containerOffset = o-&gt;offsetFromContainer(nextContainer, referencePoint);
</del><ins>+        LayoutSize containerOffset = o-&gt;offsetFromContainer(*nextContainer, referencePoint);
</ins><span class="cx">         TransformationMatrix t;
</span><span class="cx">         o-&gt;getTransformFromContainer(nextContainer, containerOffset, t);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -1912,8 +1912,8 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool containerSkipped;
</span><del>-    auto o = container(repaintContainer, &amp;containerSkipped);
-    if (!o)
</del><ins>+    RenderElement* container = this-&gt;container(repaintContainer, &amp;containerSkipped);
+    if (!container)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     bool isFixedPos = style().position() == FixedPosition;
</span><span class="lines">@@ -1928,12 +1928,12 @@
</span><span class="cx">     if (wasFixed)
</span><span class="cx">         *wasFixed = mode &amp; IsFixed;
</span><span class="cx">     
</span><del>-    LayoutSize containerOffset = offsetFromContainer(o, LayoutPoint(transformState.mappedPoint()));
</del><ins>+    LayoutSize containerOffset = offsetFromContainer(*container, LayoutPoint(transformState.mappedPoint()));
</ins><span class="cx">     
</span><del>-    bool preserve3D = mode &amp; UseTransforms &amp;&amp; (o-&gt;style().preserves3D() || style().preserves3D());
-    if (mode &amp; UseTransforms &amp;&amp; shouldUseTransformFromContainer(o)) {
</del><ins>+    bool preserve3D = mode &amp; UseTransforms &amp;&amp; (container-&gt;style().preserves3D() || style().preserves3D());
+    if (mode &amp; UseTransforms &amp;&amp; shouldUseTransformFromContainer(container)) {
</ins><span class="cx">         TransformationMatrix t;
</span><del>-        getTransformFromContainer(o, containerOffset, t);
</del><ins>+        getTransformFromContainer(container, containerOffset, t);
</ins><span class="cx">         transformState.applyTransform(t, preserve3D ? TransformState::AccumulateTransform : TransformState::FlattenTransform);
</span><span class="cx">     } else
</span><span class="cx">         transformState.move(containerOffset.width(), containerOffset.height(), preserve3D ? TransformState::AccumulateTransform : TransformState::FlattenTransform);
</span><span class="lines">@@ -1941,7 +1941,7 @@
</span><span class="cx">     if (containerSkipped) {
</span><span class="cx">         // There can't be a transform between repaintContainer and o, because transforms create containers, so it should be safe
</span><span class="cx">         // to just subtract the delta between the repaintContainer and o.
</span><del>-        LayoutSize containerOffset = repaintContainer-&gt;offsetFromAncestorContainer(o);
</del><ins>+        LayoutSize containerOffset = repaintContainer-&gt;offsetFromAncestorContainer(*container);
</ins><span class="cx">         transformState.move(-containerOffset.width(), -containerOffset.height(), preserve3D ? TransformState::AccumulateTransform : TransformState::FlattenTransform);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -1950,10 +1950,10 @@
</span><span class="cx"> 
</span><span class="cx">     // For fixed positioned elements inside out-of-flow named flows, we do not want to
</span><span class="cx">     // map their position further to regions based on their coordinates inside the named flows.
</span><del>-    if (!o-&gt;isOutOfFlowRenderFlowThread() || !fixedPositionedWithNamedFlowContainingBlock())
-        o-&gt;mapLocalToContainer(repaintContainer, transformState, mode, wasFixed);
</del><ins>+    if (!container-&gt;isOutOfFlowRenderFlowThread() || !fixedPositionedWithNamedFlowContainingBlock())
+        container-&gt;mapLocalToContainer(repaintContainer, transformState, mode, wasFixed);
</ins><span class="cx">     else
</span><del>-        o-&gt;mapLocalToContainer(toRenderLayerModelObject(o), transformState, mode, wasFixed);
</del><ins>+        container-&gt;mapLocalToContainer(toRenderLayerModelObject(container), transformState, mode, wasFixed);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const RenderObject* RenderBox::pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&amp; geometryMap) const
</span><span class="lines">@@ -1961,9 +1961,9 @@
</span><span class="cx">     ASSERT(ancestorToStopAt != this);
</span><span class="cx"> 
</span><span class="cx">     bool ancestorSkipped;
</span><del>-    auto container = this-&gt;container(ancestorToStopAt, &amp;ancestorSkipped);
</del><ins>+    RenderElement* container = this-&gt;container(ancestorToStopAt, &amp;ancestorSkipped);
</ins><span class="cx">     if (!container)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     bool isFixedPos = style().position() == FixedPosition;
</span><span class="cx">     bool hasTransform = hasLayer() &amp;&amp; layer()-&gt;transform();
</span><span class="lines">@@ -1972,11 +1972,11 @@
</span><span class="cx">     if (ancestorSkipped) {
</span><span class="cx">         // There can't be a transform between repaintContainer and o, because transforms create containers, so it should be safe
</span><span class="cx">         // to just subtract the delta between the ancestor and o.
</span><del>-        adjustmentForSkippedAncestor = -ancestorToStopAt-&gt;offsetFromAncestorContainer(container);
</del><ins>+        adjustmentForSkippedAncestor = -ancestorToStopAt-&gt;offsetFromAncestorContainer(*container);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool offsetDependsOnPoint = false;
</span><del>-    LayoutSize containerOffset = offsetFromContainer(container, LayoutPoint(), &amp;offsetDependsOnPoint);
</del><ins>+    LayoutSize containerOffset = offsetFromContainer(*container, LayoutPoint(), &amp;offsetDependsOnPoint);
</ins><span class="cx"> 
</span><span class="cx">     bool preserve3D = container-&gt;style().preserves3D() || style().preserves3D();
</span><span class="cx">     if (shouldUseTransformFromContainer(container)) {
</span><span class="lines">@@ -2007,10 +2007,10 @@
</span><span class="cx">     RenderBoxModelObject::mapAbsoluteToLocalPoint(mode, transformState);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LayoutSize RenderBox::offsetFromContainer(RenderObject* renderer, const LayoutPoint&amp;, bool* offsetDependsOnPoint) const
</del><ins>+LayoutSize RenderBox::offsetFromContainer(RenderElement&amp; renderer, const LayoutPoint&amp;, bool* offsetDependsOnPoint) const
</ins><span class="cx"> {
</span><span class="cx">     // A region &quot;has&quot; boxes inside it without being their container. 
</span><del>-    ASSERT(renderer == container() || is&lt;RenderRegion&gt;(*renderer));
</del><ins>+    ASSERT(&amp;renderer == container() || is&lt;RenderRegion&gt;(renderer));
</ins><span class="cx"> 
</span><span class="cx">     LayoutSize offset;    
</span><span class="cx">     if (isInFlowPositioned())
</span><span class="lines">@@ -2019,14 +2019,14 @@
</span><span class="cx">     if (!isInline() || isReplaced())
</span><span class="cx">         offset += topLeftLocationOffset();
</span><span class="cx"> 
</span><del>-    if (is&lt;RenderBox&gt;(*renderer))
-        offset -= downcast&lt;RenderBox&gt;(*renderer).scrolledContentOffset();
</del><ins>+    if (is&lt;RenderBox&gt;(renderer))
+        offset -= downcast&lt;RenderBox&gt;(renderer).scrolledContentOffset();
</ins><span class="cx"> 
</span><del>-    if (style().position() == AbsolutePosition &amp;&amp; renderer-&gt;isInFlowPositioned() &amp;&amp; is&lt;RenderInline&gt;(*renderer))
-        offset += downcast&lt;RenderInline&gt;(*renderer).offsetForInFlowPositionedInline(this);
</del><ins>+    if (style().position() == AbsolutePosition &amp;&amp; renderer.isInFlowPositioned() &amp;&amp; is&lt;RenderInline&gt;(renderer))
+        offset += downcast&lt;RenderInline&gt;(renderer).offsetForInFlowPositionedInline(this);
</ins><span class="cx"> 
</span><span class="cx">     if (offsetDependsOnPoint)
</span><del>-        *offsetDependsOnPoint |= is&lt;RenderFlowThread&gt;(*renderer);
</del><ins>+        *offsetDependsOnPoint |= is&lt;RenderFlowThread&gt;(renderer);
</ins><span class="cx"> 
</span><span class="cx">     return offset;
</span><span class="cx"> }
</span><span class="lines">@@ -2225,7 +2225,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (containerSkipped) {
</span><span class="cx">         // If the repaintContainer is below o, then we need to map the rect into repaintContainer's coordinates.
</span><del>-        LayoutSize containerOffset = repaintContainer-&gt;offsetFromAncestorContainer(renderer);
</del><ins>+        LayoutSize containerOffset = repaintContainer-&gt;offsetFromAncestorContainer(*renderer);
</ins><span class="cx">         rect.move(-containerOffset);
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.h (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.h        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderBox.h        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -335,7 +335,7 @@
</span><span class="cx">     void clearOverrideContainingBlockContentLogicalHeight();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&amp;, bool* offsetDependsOnPoint = 0) const override;
</del><ins>+    virtual LayoutSize offsetFromContainer(RenderElement&amp;, const LayoutPoint&amp;, bool* offsetDependsOnPoint = 0) const override;
</ins><span class="cx">     
</span><span class="cx">     LayoutUnit adjustBorderBoxLogicalWidthForBoxSizing(LayoutUnit width) const;
</span><span class="cx">     LayoutUnit adjustBorderBoxLogicalHeightForBoxSizing(LayoutUnit height) const;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxModelObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -2637,8 +2637,8 @@
</span><span class="cx"> 
</span><span class="cx"> void RenderBoxModelObject::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, TransformState&amp; transformState) const
</span><span class="cx"> {
</span><del>-    auto o = container();
-    if (!o)
</del><ins>+    RenderElement* container = this-&gt;container();
+    if (!container)
</ins><span class="cx">         return;
</span><span class="cx">     
</span><span class="cx">     // FIXME: This code is wrong for named flow threads since it only works for content in the first region.
</span><span class="lines">@@ -2646,21 +2646,21 @@
</span><span class="cx">     // geometry to actually get a better result.
</span><span class="cx">     // The point inside a box that's inside a region has its coordinates relative to the region,
</span><span class="cx">     // not the FlowThread that is its container in the RenderObject tree.
</span><del>-    if (isBox() &amp;&amp; o-&gt;isOutOfFlowRenderFlowThread()) {
</del><ins>+    if (is&lt;RenderBox&gt;(*this) &amp;&amp; container-&gt;isOutOfFlowRenderFlowThread()) {
</ins><span class="cx">         RenderRegion* startRegion = nullptr;
</span><span class="cx">         RenderRegion* endRegion = nullptr;
</span><del>-        if (toRenderFlowThread(o)-&gt;getRegionRangeForBox(toRenderBox(this), startRegion, endRegion))
-            o = startRegion;
</del><ins>+        if (downcast&lt;RenderFlowThread&gt;(*container).getRegionRangeForBox(downcast&lt;RenderBox&gt;(this), startRegion, endRegion))
+            container = startRegion;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    o-&gt;mapAbsoluteToLocalPoint(mode, transformState);
</del><ins>+    container-&gt;mapAbsoluteToLocalPoint(mode, transformState);
</ins><span class="cx"> 
</span><del>-    LayoutSize containerOffset = offsetFromContainer(o, LayoutPoint());
</del><ins>+    LayoutSize containerOffset = offsetFromContainer(*container, LayoutPoint());
</ins><span class="cx"> 
</span><del>-    bool preserve3D = mode &amp; UseTransforms &amp;&amp; (o-&gt;style().preserves3D() || style().preserves3D());
-    if (mode &amp; UseTransforms &amp;&amp; shouldUseTransformFromContainer(o)) {
</del><ins>+    bool preserve3D = mode &amp; UseTransforms &amp;&amp; (container-&gt;style().preserves3D() || style().preserves3D());
+    if (mode &amp; UseTransforms &amp;&amp; shouldUseTransformFromContainer(container)) {
</ins><span class="cx">         TransformationMatrix t;
</span><del>-        getTransformFromContainer(o, containerOffset, t);
</del><ins>+        getTransformFromContainer(container, containerOffset, t);
</ins><span class="cx">         transformState.applyTransform(t, preserve3D ? TransformState::AccumulateTransform : TransformState::FlattenTransform);
</span><span class="cx">     } else
</span><span class="cx">         transformState.move(containerOffset.width(), containerOffset.height(), preserve3D ? TransformState::AccumulateTransform : TransformState::FlattenTransform);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderInlinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderInline.cpp (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderInline.cpp        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderInline.cpp        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -1167,8 +1167,8 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     bool containerSkipped;
</span><del>-    RenderElement* o = container(repaintContainer, &amp;containerSkipped);
-    if (!o)
</del><ins>+    RenderElement* container = this-&gt;container(repaintContainer, &amp;containerSkipped);
+    if (!container)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     LayoutPoint topLeft = rect.location();
</span><span class="lines">@@ -1184,36 +1184,35 @@
</span><span class="cx">     // FIXME: We ignore the lightweight clipping rect that controls use, since if |o| is in mid-layout,
</span><span class="cx">     // its controlClipRect will be wrong. For overflow clip we use the values cached by the layer.
</span><span class="cx">     rect.setLocation(topLeft);
</span><del>-    if (o-&gt;hasOverflowClip()) {
-        RenderBox* containerBox = toRenderBox(o);
-        containerBox-&gt;applyCachedClipAndScrollOffsetForRepaint(rect);
</del><ins>+    if (container-&gt;hasOverflowClip()) {
+        downcast&lt;RenderBox&gt;(*container).applyCachedClipAndScrollOffsetForRepaint(rect);
</ins><span class="cx">         if (rect.isEmpty())
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (containerSkipped) {
</span><span class="cx">         // If the repaintContainer is below o, then we need to map the rect into repaintContainer's coordinates.
</span><del>-        LayoutSize containerOffset = repaintContainer-&gt;offsetFromAncestorContainer(o);
</del><ins>+        LayoutSize containerOffset = repaintContainer-&gt;offsetFromAncestorContainer(*container);
</ins><span class="cx">         rect.move(-containerOffset);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    o-&gt;computeRectForRepaint(repaintContainer, rect, fixed);
</del><ins>+    container-&gt;computeRectForRepaint(repaintContainer, rect, fixed);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-LayoutSize RenderInline::offsetFromContainer(RenderObject* container, const LayoutPoint&amp;, bool* offsetDependsOnPoint) const
</del><ins>+LayoutSize RenderInline::offsetFromContainer(RenderElement&amp; container, const LayoutPoint&amp;, bool* offsetDependsOnPoint) const
</ins><span class="cx"> {
</span><del>-    ASSERT(container == this-&gt;container());
</del><ins>+    ASSERT(&amp;container == this-&gt;container());
</ins><span class="cx">     
</span><span class="cx">     LayoutSize offset;    
</span><span class="cx">     if (isInFlowPositioned())
</span><span class="cx">         offset += offsetForInFlowPosition();
</span><span class="cx"> 
</span><del>-    if (container-&gt;isBox())
-        offset -= toRenderBox(container)-&gt;scrolledContentOffset();
</del><ins>+    if (is&lt;RenderBox&gt;(container))
+        offset -= downcast&lt;RenderBox&gt;(container).scrolledContentOffset();
</ins><span class="cx"> 
</span><span class="cx">     if (offsetDependsOnPoint)
</span><del>-        *offsetDependsOnPoint = (container-&gt;isBox() &amp;&amp; container-&gt;style().isFlippedBlocksWritingMode()) || container-&gt;isRenderFlowThread();
</del><ins>+        *offsetDependsOnPoint = (is&lt;RenderBox&gt;(container) &amp;&amp; container.style().isFlippedBlocksWritingMode()) || is&lt;RenderFlowThread&gt;(container);
</ins><span class="cx"> 
</span><span class="cx">     return offset;
</span><span class="cx"> }
</span><span class="lines">@@ -1233,24 +1232,24 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool containerSkipped;
</span><del>-    RenderElement* o = container(repaintContainer, &amp;containerSkipped);
-    if (!o)
</del><ins>+    RenderElement* container = this-&gt;container(repaintContainer, &amp;containerSkipped);
+    if (!container)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (mode &amp; ApplyContainerFlip &amp;&amp; o-&gt;isBox()) {
-        if (o-&gt;style().isFlippedBlocksWritingMode()) {
</del><ins>+    if (mode &amp; ApplyContainerFlip &amp;&amp; is&lt;RenderBox&gt;(*container)) {
+        if (container-&gt;style().isFlippedBlocksWritingMode()) {
</ins><span class="cx">             LayoutPoint centerPoint(transformState.mappedPoint());
</span><del>-            transformState.move(toRenderBox(o)-&gt;flipForWritingMode(centerPoint) - centerPoint);
</del><ins>+            transformState.move(downcast&lt;RenderBox&gt;(*container).flipForWritingMode(centerPoint) - centerPoint);
</ins><span class="cx">         }
</span><span class="cx">         mode &amp;= ~ApplyContainerFlip;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    LayoutSize containerOffset = offsetFromContainer(o, LayoutPoint(transformState.mappedPoint()));
</del><ins>+    LayoutSize containerOffset = offsetFromContainer(*container, LayoutPoint(transformState.mappedPoint()));
</ins><span class="cx"> 
</span><del>-    bool preserve3D = mode &amp; UseTransforms &amp;&amp; (o-&gt;style().preserves3D() || style().preserves3D());
-    if (mode &amp; UseTransforms &amp;&amp; shouldUseTransformFromContainer(o)) {
</del><ins>+    bool preserve3D = mode &amp; UseTransforms &amp;&amp; (container-&gt;style().preserves3D() || style().preserves3D());
+    if (mode &amp; UseTransforms &amp;&amp; shouldUseTransformFromContainer(container)) {
</ins><span class="cx">         TransformationMatrix t;
</span><del>-        getTransformFromContainer(o, containerOffset, t);
</del><ins>+        getTransformFromContainer(container, containerOffset, t);
</ins><span class="cx">         transformState.applyTransform(t, preserve3D ? TransformState::AccumulateTransform : TransformState::FlattenTransform);
</span><span class="cx">     } else
</span><span class="cx">         transformState.move(containerOffset.width(), containerOffset.height(), preserve3D ? TransformState::AccumulateTransform : TransformState::FlattenTransform);
</span><span class="lines">@@ -1258,12 +1257,12 @@
</span><span class="cx">     if (containerSkipped) {
</span><span class="cx">         // There can't be a transform between repaintContainer and o, because transforms create containers, so it should be safe
</span><span class="cx">         // to just subtract the delta between the repaintContainer and o.
</span><del>-        LayoutSize containerOffset = repaintContainer-&gt;offsetFromAncestorContainer(o);
</del><ins>+        LayoutSize containerOffset = repaintContainer-&gt;offsetFromAncestorContainer(*container);
</ins><span class="cx">         transformState.move(-containerOffset.width(), -containerOffset.height(), preserve3D ? TransformState::AccumulateTransform : TransformState::FlattenTransform);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    o-&gt;mapLocalToContainer(repaintContainer, transformState, mode, wasFixed);
</del><ins>+    container-&gt;mapLocalToContainer(repaintContainer, transformState, mode, wasFixed);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const RenderObject* RenderInline::pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&amp; geometryMap) const
</span><span class="lines">@@ -1273,17 +1272,17 @@
</span><span class="cx">     bool ancestorSkipped;
</span><span class="cx">     RenderElement* container = this-&gt;container(ancestorToStopAt, &amp;ancestorSkipped);
</span><span class="cx">     if (!container)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     LayoutSize adjustmentForSkippedAncestor;
</span><span class="cx">     if (ancestorSkipped) {
</span><span class="cx">         // There can't be a transform between repaintContainer and o, because transforms create containers, so it should be safe
</span><span class="cx">         // to just subtract the delta between the ancestor and o.
</span><del>-        adjustmentForSkippedAncestor = -ancestorToStopAt-&gt;offsetFromAncestorContainer(container);
</del><ins>+        adjustmentForSkippedAncestor = -ancestorToStopAt-&gt;offsetFromAncestorContainer(*container);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool offsetDependsOnPoint = false;
</span><del>-    LayoutSize containerOffset = offsetFromContainer(container, LayoutPoint(), &amp;offsetDependsOnPoint);
</del><ins>+    LayoutSize containerOffset = offsetFromContainer(*container, LayoutPoint(), &amp;offsetDependsOnPoint);
</ins><span class="cx"> 
</span><span class="cx">     bool preserve3D = container-&gt;style().preserves3D() || style().preserves3D();
</span><span class="cx">     if (shouldUseTransformFromContainer(container)) {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderInlineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderInline.h (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderInline.h        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderInline.h        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx">     virtual void absoluteRects(Vector&lt;IntRect&gt;&amp;, const LayoutPoint&amp; accumulatedOffset) const override final;
</span><span class="cx">     virtual void absoluteQuads(Vector&lt;FloatQuad&gt;&amp;, bool* wasFixed) const override;
</span><span class="cx"> 
</span><del>-    virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&amp;, bool* offsetDependsOnPoint = 0) const override final;
</del><ins>+    virtual LayoutSize offsetFromContainer(RenderElement&amp;, const LayoutPoint&amp;, bool* offsetDependsOnPoint = nullptr) const override final;
</ins><span class="cx"> 
</span><span class="cx">     virtual IntRect borderBoundingBox() const override final
</span><span class="cx">     {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -608,21 +608,20 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LayoutSize RenderMultiColumnFlowThread::offsetFromContainer(RenderObject* enclosingContainer, const LayoutPoint&amp; physicalPoint, bool* offsetDependsOnPoint) const
</del><ins>+LayoutSize RenderMultiColumnFlowThread::offsetFromContainer(RenderElement&amp; enclosingContainer, const LayoutPoint&amp; physicalPoint, bool* offsetDependsOnPoint) const
</ins><span class="cx"> {
</span><del>-    ASSERT(enclosingContainer == container());
</del><ins>+    ASSERT(&amp;enclosingContainer == container());
</ins><span class="cx"> 
</span><span class="cx">     if (offsetDependsOnPoint)
</span><span class="cx">         *offsetDependsOnPoint = true;
</span><span class="cx">     
</span><span class="cx">     LayoutPoint translatedPhysicalPoint(physicalPoint);
</span><del>-    RenderRegion* region = physicalTranslationFromFlowToRegion(translatedPhysicalPoint);
-    if (region)
</del><ins>+    if (RenderRegion* region = physicalTranslationFromFlowToRegion(translatedPhysicalPoint))
</ins><span class="cx">         translatedPhysicalPoint.moveBy(region-&gt;topLeftLocation());
</span><span class="cx">     
</span><span class="cx">     LayoutSize offset(translatedPhysicalPoint.x(), translatedPhysicalPoint.y());
</span><del>-    if (enclosingContainer-&gt;isBox())
-        offset -= toRenderBox(enclosingContainer)-&gt;scrolledContentOffset();
</del><ins>+    if (is&lt;RenderBox&gt;(enclosingContainer))
+        offset -= downcast&lt;RenderBox&gt;(enclosingContainer).scrolledContentOffset();
</ins><span class="cx">     return offset;
</span><span class="cx"> }
</span><span class="cx">     
</span><span class="lines">@@ -638,7 +637,7 @@
</span><span class="cx">     LayoutSize candidateContainerOffset;
</span><span class="cx">     
</span><span class="cx">     for (const auto&amp; columnSet : childrenOfType&lt;RenderMultiColumnSet&gt;(*parent())) {
</span><del>-        candidateContainerOffset = columnSet.offsetFromContainer(parent(), LayoutPoint());
</del><ins>+        candidateContainerOffset = columnSet.offsetFromContainer(*parent(), LayoutPoint());
</ins><span class="cx">         
</span><span class="cx">         candidatePoint = transformPoint - candidateContainerOffset;
</span><span class="cx">         candidateColumnSet = &amp;columnSet;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">     virtual bool nodeAtPoint(const HitTestRequest&amp;, HitTestResult&amp;, const HitTestLocation&amp; locationInContainer, const LayoutPoint&amp; accumulatedOffset, HitTestAction) override;
</span><span class="cx">     
</span><span class="cx">     virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&amp;) const override;
</span><del>-    virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&amp;, bool* offsetDependsOnPoint = nullptr) const override;
</del><ins>+    virtual LayoutSize offsetFromContainer(RenderElement&amp;, const LayoutPoint&amp;, bool* offsetDependsOnPoint = nullptr) const override;
</ins><span class="cx">     
</span><span class="cx">     // FIXME: Eventually as column and region flow threads start nesting, this will end up changing.
</span><span class="cx">     virtual bool shouldCheckColumnBreaks() const override;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderNamedFlowFragmentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -249,11 +249,10 @@
</span><span class="cx">     return isLastRegion() &amp;&amp; (style().regionFragment() == BreakRegionFragment);
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-LayoutSize RenderNamedFlowFragment::offsetFromContainer(RenderObject* o, const LayoutPoint&amp;, bool*) const
</del><ins>+LayoutSize RenderNamedFlowFragment::offsetFromContainer(RenderElement&amp; container, const LayoutPoint&amp;, bool*) const
</ins><span class="cx"> {
</span><del>-    ASSERT(&amp;fragmentContainer() == o);
-    ASSERT(container() == o);
-    UNUSED_PARAM(o);
</del><ins>+    ASSERT_UNUSED(container, &amp;fragmentContainer() == &amp;container);
+    ASSERT_UNUSED(container, this-&gt;container() == &amp;container);
</ins><span class="cx">     return topLeftLocationOffset();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderNamedFlowFragmenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     
</span><span class="cx">     virtual bool shouldClipFlowThreadContent() const override;
</span><span class="cx">     
</span><del>-    virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&amp;, bool* offsetDependsOnPoint = 0) const override;
</del><ins>+    virtual LayoutSize offsetFromContainer(RenderElement&amp;, const LayoutPoint&amp;, bool* offsetDependsOnPoint = nullptr) const override;
</ins><span class="cx"> 
</span><span class="cx">     bool isPseudoElementRegion() const { return parent() &amp;&amp; parent()-&gt;isPseudoElement(); }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.cpp        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -1851,36 +1851,36 @@
</span><span class="cx">     return transformState.lastPlanarPoint();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LayoutSize RenderObject::offsetFromContainer(RenderObject* o, const LayoutPoint&amp;, bool* offsetDependsOnPoint) const
</del><ins>+LayoutSize RenderObject::offsetFromContainer(RenderElement&amp; container, const LayoutPoint&amp;, bool* offsetDependsOnPoint) const
</ins><span class="cx"> {
</span><del>-    ASSERT(o == container());
</del><ins>+    ASSERT(&amp;container == this-&gt;container());
</ins><span class="cx"> 
</span><span class="cx">     LayoutSize offset;
</span><del>-    if (o-&gt;isBox())
-        offset -= toRenderBox(o)-&gt;scrolledContentOffset();
</del><ins>+    if (is&lt;RenderBox&gt;(container))
+        offset -= downcast&lt;RenderBox&gt;(container).scrolledContentOffset();
</ins><span class="cx"> 
</span><span class="cx">     if (offsetDependsOnPoint)
</span><del>-        *offsetDependsOnPoint = o-&gt;isRenderFlowThread();
</del><ins>+        *offsetDependsOnPoint = is&lt;RenderFlowThread&gt;(container);
</ins><span class="cx"> 
</span><span class="cx">     return offset;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LayoutSize RenderObject::offsetFromAncestorContainer(RenderObject* container) const
</del><ins>+LayoutSize RenderObject::offsetFromAncestorContainer(RenderElement&amp; container) const
</ins><span class="cx"> {
</span><span class="cx">     LayoutSize offset;
</span><span class="cx">     LayoutPoint referencePoint;
</span><span class="cx">     const RenderObject* currContainer = this;
</span><span class="cx">     do {
</span><del>-        auto nextContainer = currContainer-&gt;container();
</del><ins>+        RenderElement* nextContainer = currContainer-&gt;container();
</ins><span class="cx">         ASSERT(nextContainer);  // This means we reached the top without finding container.
</span><span class="cx">         if (!nextContainer)
</span><span class="cx">             break;
</span><span class="cx">         ASSERT(!currContainer-&gt;hasTransform());
</span><del>-        LayoutSize currentOffset = currContainer-&gt;offsetFromContainer(nextContainer, referencePoint);
</del><ins>+        LayoutSize currentOffset = currContainer-&gt;offsetFromContainer(*nextContainer, referencePoint);
</ins><span class="cx">         offset += currentOffset;
</span><span class="cx">         referencePoint.move(currentOffset);
</span><span class="cx">         currContainer = nextContainer;
</span><del>-    } while (currContainer != container);
</del><ins>+    } while (currContainer != &amp;container);
</ins><span class="cx"> 
</span><span class="cx">     return offset;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.h (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.h        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderObject.h        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -684,9 +684,9 @@
</span><span class="cx"> 
</span><span class="cx">     // Return the offset from the container() renderer (excluding transforms). In multi-column layout,
</span><span class="cx">     // different offsets apply at different points, so return the offset that applies to the given point.
</span><del>-    virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&amp;, bool* offsetDependsOnPoint = 0) const;
</del><ins>+    virtual LayoutSize offsetFromContainer(RenderElement&amp;, const LayoutPoint&amp;, bool* offsetDependsOnPoint = 0) const;
</ins><span class="cx">     // Return the offset from an object up the container() chain. Asserts that none of the intermediate objects have transforms.
</span><del>-    LayoutSize offsetFromAncestorContainer(RenderObject*) const;
</del><ins>+    LayoutSize offsetFromAncestorContainer(RenderElement&amp;) const;
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     virtual void collectSelectionRects(Vector&lt;SelectionRect&gt;&amp;, unsigned startOffset = 0, unsigned endOffset = std::numeric_limits&lt;unsigned&gt;::max());
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableCellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableCell.cpp (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableCell.cpp        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderTableCell.cpp        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -319,11 +319,11 @@
</span><span class="cx">     setOverrideLogicalContentHeight(std::max&lt;LayoutUnit&gt;(0, rowHeight - borderAndPaddingLogicalHeight()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LayoutSize RenderTableCell::offsetFromContainer(RenderObject* o, const LayoutPoint&amp; point, bool* offsetDependsOnPoint) const
</del><ins>+LayoutSize RenderTableCell::offsetFromContainer(RenderElement&amp; container, const LayoutPoint&amp; point, bool* offsetDependsOnPoint) const
</ins><span class="cx"> {
</span><del>-    ASSERT(o == container());
</del><ins>+    ASSERT(&amp;container == this-&gt;container());
</ins><span class="cx"> 
</span><del>-    LayoutSize offset = RenderBlockFlow::offsetFromContainer(o, point, offsetDependsOnPoint);
</del><ins>+    LayoutSize offset = RenderBlockFlow::offsetFromContainer(container, point, offsetDependsOnPoint);
</ins><span class="cx">     if (parent())
</span><span class="cx">         offset -= parentBox()-&gt;locationOffset();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableCellh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableCell.h (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableCell.h        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderTableCell.h        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -234,7 +234,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool boxShadowShouldBeAppliedToBackground(BackgroundBleedAvoidance, InlineFlowBox*) const override;
</span><span class="cx"> 
</span><del>-    virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&amp;, bool* offsetDependsOnPoint = 0) const override;
</del><ins>+    virtual LayoutSize offsetFromContainer(RenderElement&amp;, const LayoutPoint&amp;, bool* offsetDependsOnPoint = 0) const override;
</ins><span class="cx">     virtual LayoutRect clippedOverflowRectForRepaint(const RenderLayerModelObject* repaintContainer) const override;
</span><span class="cx">     virtual void computeRectForRepaint(const RenderLayerModelObject* repaintContainer, LayoutRect&amp;, bool fixed = false) const override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderThemeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderThemeMac.mm (174721 => 174722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderThemeMac.mm        2014-10-15 03:28:55 UTC (rev 174721)
+++ trunk/Source/WebCore/rendering/RenderThemeMac.mm        2014-10-15 05:01:31 UTC (rev 174722)
</span><span class="lines">@@ -681,7 +681,8 @@
</span><span class="cx">     const RenderObject* renderer = &amp;partRenderer;
</span><span class="cx">     while (renderer &amp;&amp; renderer != &amp;inputRenderer) {
</span><span class="cx">         RenderElement* containingRenderer = renderer-&gt;container();
</span><del>-        offsetFromInputRenderer -= roundedIntSize(renderer-&gt;offsetFromContainer(containingRenderer, LayoutPoint()));
</del><ins>+        ASSERT(containingRenderer);
+        offsetFromInputRenderer -= roundedIntSize(renderer-&gt;offsetFromContainer(*containingRenderer, LayoutPoint()));
</ins><span class="cx">         renderer = containingRenderer;
</span><span class="cx">     }
</span><span class="cx">     // If the input renderer was not a container, something went wrong
</span></span></pre>
</div>
</div>

</body>
</html>