<!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>[208005] 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/208005">208005</a></dd>
<dt>Author</dt> <dd>zalan@apple.com</dd>
<dt>Date</dt> <dd>2016-10-27 14:19:34 -0700 (Thu, 27 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>RenderMultiColumnFlowThread::processPossibleSpannerDescendant should take RenderObject&amp; instead of RenderObject*
https://bugs.webkit.org/show_bug.cgi?id=164072

Reviewed by Simon Fraser.

No change in functionality.

* rendering/RenderFlowThread.h:
* rendering/RenderMultiColumnFlowThread.cpp:
(WebCore::findSetRendering):
(WebCore::isValidColumnSpanner):
(WebCore::RenderMultiColumnFlowThread::processPossibleSpannerDescendant):
(WebCore::RenderMultiColumnFlowThread::flowThreadDescendantInserted):
(WebCore::RenderMultiColumnFlowThread::findSetRendering): Deleted.
* rendering/RenderMultiColumnFlowThread.h:
* rendering/RenderMultiColumnSet.cpp:
(WebCore::precedesRenderer):
(WebCore::RenderMultiColumnSet::containsRendererInFlowThread):
* rendering/RenderMultiColumnSet.h:
* rendering/RenderMultiColumnSpannerPlaceholder.cpp:
(WebCore::RenderMultiColumnSpannerPlaceholder::createAnonymous):
(WebCore::RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder):
* rendering/RenderMultiColumnSpannerPlaceholder.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::insertedIntoTree):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderFlowThreadh">trunk/Source/WebCore/rendering/RenderFlowThread.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="#trunkSourceWebCorerenderingRenderMultiColumnSetcpp">trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSeth">trunk/Source/WebCore/rendering/RenderMultiColumnSet.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSpannerPlaceholdercpp">trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMultiColumnSpannerPlaceholderh">trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderObjectcpp">trunk/Source/WebCore/rendering/RenderObject.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208004 => 208005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-27 21:14:50 UTC (rev 208004)
+++ trunk/Source/WebCore/ChangeLog        2016-10-27 21:19:34 UTC (rev 208005)
</span><span class="lines">@@ -1,3 +1,31 @@
</span><ins>+2016-10-27  Zalan Bujtas  &lt;zalan@apple.com&gt;
+
+        RenderMultiColumnFlowThread::processPossibleSpannerDescendant should take RenderObject&amp; instead of RenderObject*
+        https://bugs.webkit.org/show_bug.cgi?id=164072
+
+        Reviewed by Simon Fraser.
+
+        No change in functionality.
+
+        * rendering/RenderFlowThread.h:
+        * rendering/RenderMultiColumnFlowThread.cpp:
+        (WebCore::findSetRendering):
+        (WebCore::isValidColumnSpanner):
+        (WebCore::RenderMultiColumnFlowThread::processPossibleSpannerDescendant):
+        (WebCore::RenderMultiColumnFlowThread::flowThreadDescendantInserted):
+        (WebCore::RenderMultiColumnFlowThread::findSetRendering): Deleted.
+        * rendering/RenderMultiColumnFlowThread.h:
+        * rendering/RenderMultiColumnSet.cpp:
+        (WebCore::precedesRenderer):
+        (WebCore::RenderMultiColumnSet::containsRendererInFlowThread):
+        * rendering/RenderMultiColumnSet.h:
+        * rendering/RenderMultiColumnSpannerPlaceholder.cpp:
+        (WebCore::RenderMultiColumnSpannerPlaceholder::createAnonymous):
+        (WebCore::RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder):
+        * rendering/RenderMultiColumnSpannerPlaceholder.h:
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::insertedIntoTree):
+
</ins><span class="cx"> 2016-10-27  Brent Fulgham  &lt;bfulgham@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Prevent hit tests from being performed on an invalid render tree
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.h (208004 => 208005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.h        2016-10-27 21:14:50 UTC (rev 208004)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.h        2016-10-27 21:19:34 UTC (rev 208005)
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx">     // location in the tree.
</span><span class="cx">     virtual RenderObject* resolveMovedChild(RenderObject* child) const { return child; }
</span><span class="cx">     // Called when a descendant of the flow thread has been inserted.
</span><del>-    virtual void flowThreadDescendantInserted(RenderObject*) { }
</del><ins>+    virtual void flowThreadDescendantInserted(RenderObject&amp;) { }
</ins><span class="cx">     // Called when a sibling or descendant of the flow thread is about to be removed.
</span><span class="cx">     virtual void flowThreadRelativeWillBeRemoved(RenderObject*) { }
</span><span class="cx">     // Called when a descendant box's layout is finished and it has been positioned within its container.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp (208004 => 208005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp        2016-10-27 21:14:50 UTC (rev 208004)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp        2016-10-27 21:19:34 UTC (rev 208005)
</span><span class="lines">@@ -133,9 +133,10 @@
</span><span class="cx">     m_lastSetWorkedOn = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RenderMultiColumnSet* RenderMultiColumnFlowThread::findSetRendering(RenderObject* renderer) const
</del><ins>+static RenderMultiColumnSet* findSetRendering(const RenderMultiColumnFlowThread&amp; flowThread, const RenderObject&amp; renderer)
</ins><span class="cx"> {
</span><del>-    for (RenderMultiColumnSet* multicolSet = firstMultiColumnSet(); multicolSet; multicolSet = multicolSet-&gt;nextSiblingMultiColumnSet()) {
</del><ins>+    // Find the set inside which the specified renderer would be rendered.
+    for (auto* multicolSet = flowThread.firstMultiColumnSet(); multicolSet; multicolSet = multicolSet-&gt;nextSiblingMultiColumnSet()) {
</ins><span class="cx">         if (multicolSet-&gt;containsRendererInFlowThread(renderer))
</span><span class="cx">             return multicolSet;
</span><span class="cx">     }
</span><span class="lines">@@ -233,17 +234,17 @@
</span><span class="cx">     return child;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool isValidColumnSpanner(RenderMultiColumnFlowThread* flowThread, RenderObject* descendant)
</del><ins>+static bool isValidColumnSpanner(const RenderMultiColumnFlowThread&amp; flowThread, const RenderObject&amp; descendant)
</ins><span class="cx"> {
</span><span class="cx">     // We assume that we're inside the flow thread. This function is not to be called otherwise.
</span><del>-    ASSERT(descendant-&gt;isDescendantOf(flowThread));
</del><ins>+    ASSERT(descendant.isDescendantOf(&amp;flowThread));
</ins><span class="cx"> 
</span><span class="cx">     // First make sure that the renderer itself has the right properties for becoming a spanner.
</span><del>-    auto&amp; style = descendant-&gt;style();
-    if (style.columnSpan() != ColumnSpanAll || !is&lt;RenderBox&gt;(*descendant) || descendant-&gt;isFloatingOrOutOfFlowPositioned())
</del><ins>+    auto&amp; style = descendant.style();
+    if (style.columnSpan() != ColumnSpanAll || !is&lt;RenderBox&gt;(descendant) || descendant.isFloatingOrOutOfFlowPositioned())
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    RenderElement* container = descendant-&gt;parent();
</del><ins>+    RenderElement* container = descendant.parent();
</ins><span class="cx">     if (!is&lt;RenderBlockFlow&gt;(*container) || container-&gt;childrenInline()) {
</span><span class="cx">         // Needs to be block-level.
</span><span class="cx">         return false;
</span><span class="lines">@@ -250,19 +251,19 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     // We need to have the flow thread as the containing block. A spanner cannot break out of the flow thread.
</span><del>-    RenderFlowThread* enclosingFlowThread = descendant-&gt;flowThreadContainingBlock();
-    if (enclosingFlowThread != flowThread)
</del><ins>+    RenderFlowThread* enclosingFlowThread = descendant.flowThreadContainingBlock();
+    if (enclosingFlowThread != &amp;flowThread)
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     // This looks like a spanner, but if we're inside something unbreakable, it's not to be treated as one.
</span><del>-    for (RenderBox* ancestor = downcast&lt;RenderBox&gt;(*descendant).containingBlock(); ancestor &amp;&amp; !is&lt;RenderView&gt;(*ancestor); ancestor = ancestor-&gt;containingBlock()) {
</del><ins>+    for (auto* ancestor = downcast&lt;RenderBox&gt;(descendant).containingBlock(); ancestor &amp;&amp; !is&lt;RenderView&gt;(*ancestor); ancestor = ancestor-&gt;containingBlock()) {
</ins><span class="cx">         if (ancestor-&gt;isRenderFlowThread()) {
</span><span class="cx">             // Don't allow any intervening non-multicol fragmentation contexts. The spec doesn't say
</span><span class="cx">             // anything about disallowing this, but it's just going to be too complicated to
</span><span class="cx">             // implement (not to mention specify behavior).
</span><del>-            return ancestor == flowThread;
</del><ins>+            return ancestor == &amp;flowThread;
</ins><span class="cx">         }
</span><del>-        ASSERT(ancestor-&gt;style().columnSpan() != ColumnSpanAll || !isValidColumnSpanner(flowThread, ancestor));
</del><ins>+        ASSERT(ancestor-&gt;style().columnSpan() != ColumnSpanAll || !isValidColumnSpanner(flowThread, *ancestor));
</ins><span class="cx">         if (ancestor-&gt;isUnsplittableForPagination())
</span><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="lines">@@ -294,23 +295,23 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RenderObject* RenderMultiColumnFlowThread::processPossibleSpannerDescendant(RenderObject*&amp; subtreeRoot, RenderObject* descendant)
</del><ins>+RenderObject* RenderMultiColumnFlowThread::processPossibleSpannerDescendant(RenderObject*&amp; subtreeRoot, RenderObject&amp; descendant)
</ins><span class="cx"> {
</span><span class="cx">     RenderBlockFlow* multicolContainer = multiColumnBlockFlow();
</span><del>-    RenderObject* nextRendererInFlowThread = spannerPlacehoderCandidate(*descendant, *this);
</del><ins>+    RenderObject* nextRendererInFlowThread = spannerPlacehoderCandidate(descendant, *this);
</ins><span class="cx">     RenderObject* insertBeforeMulticolChild = nullptr;
</span><del>-    RenderObject* nextDescendant = descendant;
</del><ins>+    RenderObject* nextDescendant = &amp;descendant;
</ins><span class="cx"> 
</span><del>-    if (isValidColumnSpanner(this, descendant)) {
</del><ins>+    if (isValidColumnSpanner(*this, descendant)) {
</ins><span class="cx">         // This is a spanner (column-span:all). Such renderers are moved from where they would
</span><span class="cx">         // otherwise occur in the render tree to becoming a direct child of the multicol container,
</span><span class="cx">         // so that they live among the column sets. This simplifies the layout implementation, and
</span><span class="cx">         // basically just relies on regular block layout done by the RenderBlockFlow that
</span><span class="cx">         // establishes the multicol container.
</span><del>-        RenderBlockFlow* container = downcast&lt;RenderBlockFlow&gt;(descendant-&gt;parent());
</del><ins>+        RenderBlockFlow* container = downcast&lt;RenderBlockFlow&gt;(descendant.parent());
</ins><span class="cx">         RenderMultiColumnSet* setToSplit = nullptr;
</span><span class="cx">         if (nextRendererInFlowThread) {
</span><del>-            setToSplit = findSetRendering(descendant);
</del><ins>+            setToSplit = findSetRendering(*this, descendant);
</ins><span class="cx">             if (setToSplit) {
</span><span class="cx">                 setToSplit-&gt;setNeedsLayout();
</span><span class="cx">                 insertBeforeMulticolChild = setToSplit-&gt;nextSibling();
</span><span class="lines">@@ -322,13 +323,14 @@
</span><span class="cx">         // content before and after the spanner, so that it becomes separate line boxes. Secondly,
</span><span class="cx">         // this placeholder serves as a break point for column sets, so that, when encountered, we
</span><span class="cx">         // end flowing one column set and move to the next one.
</span><del>-        RenderMultiColumnSpannerPlaceholder* placeholder = RenderMultiColumnSpannerPlaceholder::createAnonymous(this, downcast&lt;RenderBox&gt;(descendant), &amp;container-&gt;style());
-        container-&gt;addChild(placeholder, descendant-&gt;nextSibling());
-        container-&gt;removeChild(*descendant);
</del><ins>+        RenderMultiColumnSpannerPlaceholder* placeholder = RenderMultiColumnSpannerPlaceholder::createAnonymous(this,
+            downcast&lt;RenderBox&gt;(descendant), &amp;container-&gt;style());
+        container-&gt;addChild(placeholder, descendant.nextSibling());
+        container-&gt;removeChild(descendant);
</ins><span class="cx">         
</span><span class="cx">         // This is a guard to stop an ancestor flow thread from processing the spanner.
</span><span class="cx">         gShiftingSpanner = true;
</span><del>-        multicolContainer-&gt;RenderBlock::addChild(descendant, insertBeforeMulticolChild);
</del><ins>+        multicolContainer-&gt;RenderBlock::addChild(&amp;descendant, insertBeforeMulticolChild);
</ins><span class="cx">         gShiftingSpanner = false;
</span><span class="cx">         
</span><span class="cx">         // The spanner has now been moved out from the flow thread, but we don't want to
</span><span class="lines">@@ -335,7 +337,7 @@
</span><span class="cx">         // examine its children anyway. They are all part of the spanner and shouldn't trigger
</span><span class="cx">         // creation of column sets or anything like that. Continue at its original position in
</span><span class="cx">         // the tree, i.e. where the placeholder was just put.
</span><del>-        if (subtreeRoot == descendant)
</del><ins>+        if (subtreeRoot == &amp;descendant)
</ins><span class="cx">             subtreeRoot = placeholder;
</span><span class="cx">         nextDescendant = placeholder;
</span><span class="cx">     } else {
</span><span class="lines">@@ -375,12 +377,12 @@
</span><span class="cx">     return nextDescendant;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderMultiColumnFlowThread::flowThreadDescendantInserted(RenderObject* descendant)
</del><ins>+void RenderMultiColumnFlowThread::flowThreadDescendantInserted(RenderObject&amp; newDescendant)
</ins><span class="cx"> {
</span><del>-    if (gShiftingSpanner || m_beingEvacuated || descendant-&gt;isInFlowRenderFlowThread())
</del><ins>+    if (gShiftingSpanner || m_beingEvacuated || newDescendant.isInFlowRenderFlowThread())
</ins><span class="cx">         return;
</span><del>-    RenderObject* subtreeRoot = descendant;
-    for (; descendant; descendant = (descendant ? descendant-&gt;nextInPreOrder(subtreeRoot) : nullptr)) {
</del><ins>+    RenderObject* subtreeRoot = &amp;newDescendant;
+    for (auto* descendant = &amp;newDescendant; descendant; descendant = (descendant ? descendant-&gt;nextInPreOrder(subtreeRoot) : nullptr)) {
</ins><span class="cx">         if (is&lt;RenderMultiColumnSpannerPlaceholder&gt;(*descendant)) {
</span><span class="cx">             // A spanner's placeholder has been inserted. The actual spanner renderer is moved from
</span><span class="cx">             // where it would otherwise occur (if it weren't a spanner) to becoming a sibling of the
</span><span class="lines">@@ -406,7 +408,7 @@
</span><span class="cx">                 if (subtreeRoot == descendant)
</span><span class="cx">                     subtreeRoot = spanner;
</span><span class="cx">                 // Now we process the spanner.
</span><del>-                descendant = processPossibleSpannerDescendant(subtreeRoot, spanner);
</del><ins>+                descendant = processPossibleSpannerDescendant(subtreeRoot, *spanner);
</ins><span class="cx">                 continue;
</span><span class="cx">             }
</span><span class="cx">             
</span><span class="lines">@@ -415,8 +417,7 @@
</span><span class="cx">             ASSERT(!placeholder.firstChild()); // There should be no children here, but if there are, we ought to skip them.
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><del>-        
-        descendant = processPossibleSpannerDescendant(subtreeRoot, descendant);
</del><ins>+        descendant = processPossibleSpannerDescendant(subtreeRoot, *descendant);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnFlowThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h (208004 => 208005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h        2016-10-27 21:14:50 UTC (rev 208004)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnFlowThread.h        2016-10-27 21:19:34 UTC (rev 208005)
</span><span class="lines">@@ -53,9 +53,6 @@
</span><span class="cx"> 
</span><span class="cx">     void layout() override;
</span><span class="cx"> 
</span><del>-    // Find the set inside which the specified renderer would be rendered.
-    RenderMultiColumnSet* findSetRendering(RenderObject*) const;
-
</del><span class="cx">     // Populate the flow thread with what's currently its siblings. Called when a regular block
</span><span class="cx">     // becomes a multicol container.
</span><span class="cx">     void populate();
</span><span class="lines">@@ -116,7 +113,7 @@
</span><span class="cx">     void addRegionToThread(RenderRegion*) override;
</span><span class="cx">     void willBeRemovedFromTree() override;
</span><span class="cx">     RenderObject* resolveMovedChild(RenderObject* child) const override;
</span><del>-    void flowThreadDescendantInserted(RenderObject*) override;
</del><ins>+    void flowThreadDescendantInserted(RenderObject&amp;) override;
</ins><span class="cx">     void flowThreadRelativeWillBeRemoved(RenderObject*) override;
</span><span class="cx">     void flowThreadDescendantBoxLaidOut(RenderBox*) override;
</span><span class="cx">     void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&amp;) const override;
</span><span class="lines">@@ -129,7 +126,7 @@
</span><span class="cx">     bool isPageLogicalHeightKnown() const override;
</span><span class="cx"> 
</span><span class="cx">     void handleSpannerRemoval(RenderObject* spanner);
</span><del>-    RenderObject* processPossibleSpannerDescendant(RenderObject*&amp; subtreeRoot, RenderObject* descendant);
</del><ins>+    RenderObject* processPossibleSpannerDescendant(RenderObject*&amp; subtreeRoot, RenderObject&amp; descendant);
</ins><span class="cx">     
</span><span class="cx"> private:
</span><span class="cx">     typedef HashMap&lt;RenderBox*, RenderMultiColumnSpannerPlaceholder*&gt; SpannerMap;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp (208004 => 208005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp        2016-10-27 21:14:50 UTC (rev 208004)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp        2016-10-27 21:19:34 UTC (rev 208005)
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx">     return flowThread()-&gt;lastLeafChild();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool precedesRenderer(RenderObject* renderer, RenderObject* boundary)
</del><ins>+static bool precedesRenderer(const RenderObject* renderer, const RenderObject* boundary)
</ins><span class="cx"> {
</span><span class="cx">     for (; renderer; renderer = renderer-&gt;nextInPreOrder()) {
</span><span class="cx">         if (renderer == boundary)
</span><span class="lines">@@ -100,11 +100,11 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderMultiColumnSet::containsRendererInFlowThread(RenderObject* renderer) const
</del><ins>+bool RenderMultiColumnSet::containsRendererInFlowThread(const RenderObject&amp; renderer) const
</ins><span class="cx"> {
</span><span class="cx">     if (!previousSiblingMultiColumnSet() &amp;&amp; !nextSiblingMultiColumnSet()) {
</span><span class="cx">         // There is only one set. This is easy, then.
</span><del>-        return renderer-&gt;isDescendantOf(m_flowThread);
</del><ins>+        return renderer.isDescendantOf(m_flowThread);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RenderObject* firstRenderer = firstRendererInFlowThread();
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">     ASSERT(lastRenderer);
</span><span class="cx"> 
</span><span class="cx">     // This is SLOW! But luckily very uncommon.
</span><del>-    return precedesRenderer(firstRenderer, renderer) &amp;&amp; precedesRenderer(renderer, lastRenderer);
</del><ins>+    return precedesRenderer(firstRenderer, &amp;renderer) &amp;&amp; precedesRenderer(&amp;renderer, lastRenderer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMultiColumnSet::setLogicalTopInFlowThread(LayoutUnit logicalTop)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.h (208004 => 208005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.h        2016-10-27 21:14:50 UTC (rev 208004)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.h        2016-10-27 21:19:34 UTC (rev 208005)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">     RenderObject* lastRendererInFlowThread() const;
</span><span class="cx"> 
</span><span class="cx">     // Return true if the specified renderer (descendant of the flow thread) is inside this column set.
</span><del>-    bool containsRendererInFlowThread(RenderObject*) const;
</del><ins>+    bool containsRendererInFlowThread(const RenderObject&amp;) const;
</ins><span class="cx"> 
</span><span class="cx">     void setLogicalTopInFlowThread(LayoutUnit);
</span><span class="cx">     LayoutUnit logicalTopInFlowThread() const { return isHorizontalWritingMode() ? flowThreadPortionRect().y() : flowThreadPortionRect().x(); }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSpannerPlaceholdercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.cpp (208004 => 208005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.cpp        2016-10-27 21:14:50 UTC (rev 208004)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.cpp        2016-10-27 21:19:34 UTC (rev 208005)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-RenderMultiColumnSpannerPlaceholder* RenderMultiColumnSpannerPlaceholder::createAnonymous(RenderMultiColumnFlowThread* flowThread, RenderBox* spanner, const RenderStyle* parentStyle)
</del><ins>+RenderMultiColumnSpannerPlaceholder* RenderMultiColumnSpannerPlaceholder::createAnonymous(RenderMultiColumnFlowThread* flowThread, RenderBox&amp; spanner, const RenderStyle* parentStyle)
</ins><span class="cx"> {
</span><span class="cx">     auto newStyle = RenderStyle::createAnonymousStyleWithDisplay(*parentStyle, BLOCK);
</span><span class="cx">     newStyle.setClear(CBOTH); // We don't want floats in the row preceding the spanner to continue on the other side.
</span><span class="lines">@@ -43,9 +43,9 @@
</span><span class="cx">     return placeholder;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder(RenderMultiColumnFlowThread* flowThread, RenderBox* spanner, RenderStyle&amp;&amp; style)
</del><ins>+RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder(RenderMultiColumnFlowThread* flowThread, RenderBox&amp; spanner, RenderStyle&amp;&amp; style)
</ins><span class="cx">     : RenderBox(flowThread-&gt;document(), WTFMove(style), RenderBoxModelObjectFlag)
</span><del>-    , m_spanner(spanner)
</del><ins>+    , m_spanner(&amp;spanner)
</ins><span class="cx">     , m_flowThread(flowThread)
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMultiColumnSpannerPlaceholderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h (208004 => 208005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h        2016-10-27 21:14:50 UTC (rev 208004)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSpannerPlaceholder.h        2016-10-27 21:19:34 UTC (rev 208005)
</span><span class="lines">@@ -38,13 +38,13 @@
</span><span class="cx"> 
</span><span class="cx"> class RenderMultiColumnSpannerPlaceholder final : public RenderBox {
</span><span class="cx"> public:
</span><del>-    static RenderMultiColumnSpannerPlaceholder* createAnonymous(RenderMultiColumnFlowThread*, RenderBox* spanner, const RenderStyle* parentStyle);
</del><ins>+    static RenderMultiColumnSpannerPlaceholder* createAnonymous(RenderMultiColumnFlowThread*, RenderBox&amp; spanner, const RenderStyle* parentStyle);
</ins><span class="cx"> 
</span><span class="cx">     RenderBox* spanner() const { return m_spanner; }
</span><span class="cx">     RenderMultiColumnFlowThread* flowThread() const { return m_flowThread; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    RenderMultiColumnSpannerPlaceholder(RenderMultiColumnFlowThread*, RenderBox* spanner, RenderStyle&amp;&amp;);
</del><ins>+    RenderMultiColumnSpannerPlaceholder(RenderMultiColumnFlowThread*, RenderBox&amp; spanner, RenderStyle&amp;&amp;);
</ins><span class="cx">     bool isRenderMultiColumnSpannerPlaceholder() const override { return true; }
</span><span class="cx"> 
</span><span class="cx">     bool canHaveChildren() const override { return false; }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (208004 => 208005)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderObject.cpp        2016-10-27 21:14:50 UTC (rev 208004)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp        2016-10-27 21:19:34 UTC (rev 208005)
</span><span class="lines">@@ -1421,7 +1421,7 @@
</span><span class="cx">         parent()-&gt;dirtyLinesFromChangedChild(*this);
</span><span class="cx"> 
</span><span class="cx">     if (RenderFlowThread* flowThread = flowThreadContainingBlock())
</span><del>-        flowThread-&gt;flowThreadDescendantInserted(this);
</del><ins>+        flowThread-&gt;flowThreadDescendantInserted(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderObject::willBeRemovedFromTree()
</span></span></pre>
</div>
</div>

</body>
</html>