<!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& 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 <zalan@apple.com>
+
+ RenderMultiColumnFlowThread::processPossibleSpannerDescendant should take RenderObject& 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 <bfulgham@apple.com>
</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&) { }
</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& flowThread, const RenderObject& renderer)
</ins><span class="cx"> {
</span><del>- for (RenderMultiColumnSet* multicolSet = firstMultiColumnSet(); multicolSet; multicolSet = multicolSet->nextSiblingMultiColumnSet()) {
</del><ins>+ // Find the set inside which the specified renderer would be rendered.
+ for (auto* multicolSet = flowThread.firstMultiColumnSet(); multicolSet; multicolSet = multicolSet->nextSiblingMultiColumnSet()) {
</ins><span class="cx"> if (multicolSet->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& flowThread, const RenderObject& 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->isDescendantOf(flowThread));
</del><ins>+ ASSERT(descendant.isDescendantOf(&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& style = descendant->style();
- if (style.columnSpan() != ColumnSpanAll || !is<RenderBox>(*descendant) || descendant->isFloatingOrOutOfFlowPositioned())
</del><ins>+ auto& style = descendant.style();
+ if (style.columnSpan() != ColumnSpanAll || !is<RenderBox>(descendant) || descendant.isFloatingOrOutOfFlowPositioned())
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- RenderElement* container = descendant->parent();
</del><ins>+ RenderElement* container = descendant.parent();
</ins><span class="cx"> if (!is<RenderBlockFlow>(*container) || container->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->flowThreadContainingBlock();
- if (enclosingFlowThread != flowThread)
</del><ins>+ RenderFlowThread* enclosingFlowThread = descendant.flowThreadContainingBlock();
+ if (enclosingFlowThread != &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<RenderBox>(*descendant).containingBlock(); ancestor && !is<RenderView>(*ancestor); ancestor = ancestor->containingBlock()) {
</del><ins>+ for (auto* ancestor = downcast<RenderBox>(descendant).containingBlock(); ancestor && !is<RenderView>(*ancestor); ancestor = ancestor->containingBlock()) {
</ins><span class="cx"> if (ancestor->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 == &flowThread;
</ins><span class="cx"> }
</span><del>- ASSERT(ancestor->style().columnSpan() != ColumnSpanAll || !isValidColumnSpanner(flowThread, ancestor));
</del><ins>+ ASSERT(ancestor->style().columnSpan() != ColumnSpanAll || !isValidColumnSpanner(flowThread, *ancestor));
</ins><span class="cx"> if (ancestor->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*& subtreeRoot, RenderObject* descendant)
</del><ins>+RenderObject* RenderMultiColumnFlowThread::processPossibleSpannerDescendant(RenderObject*& subtreeRoot, RenderObject& 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 = &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<RenderBlockFlow>(descendant->parent());
</del><ins>+ RenderBlockFlow* container = downcast<RenderBlockFlow>(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->setNeedsLayout();
</span><span class="cx"> insertBeforeMulticolChild = setToSplit->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<RenderBox>(descendant), &container->style());
- container->addChild(placeholder, descendant->nextSibling());
- container->removeChild(*descendant);
</del><ins>+ RenderMultiColumnSpannerPlaceholder* placeholder = RenderMultiColumnSpannerPlaceholder::createAnonymous(this,
+ downcast<RenderBox>(descendant), &container->style());
+ container->addChild(placeholder, descendant.nextSibling());
+ container->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->RenderBlock::addChild(descendant, insertBeforeMulticolChild);
</del><ins>+ multicolContainer->RenderBlock::addChild(&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 == &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& newDescendant)
</ins><span class="cx"> {
</span><del>- if (gShiftingSpanner || m_beingEvacuated || descendant->isInFlowRenderFlowThread())
</del><ins>+ if (gShiftingSpanner || m_beingEvacuated || newDescendant.isInFlowRenderFlowThread())
</ins><span class="cx"> return;
</span><del>- RenderObject* subtreeRoot = descendant;
- for (; descendant; descendant = (descendant ? descendant->nextInPreOrder(subtreeRoot) : nullptr)) {
</del><ins>+ RenderObject* subtreeRoot = &newDescendant;
+ for (auto* descendant = &newDescendant; descendant; descendant = (descendant ? descendant->nextInPreOrder(subtreeRoot) : nullptr)) {
</ins><span class="cx"> if (is<RenderMultiColumnSpannerPlaceholder>(*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&) 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&) 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*& subtreeRoot, RenderObject* descendant);
</del><ins>+ RenderObject* processPossibleSpannerDescendant(RenderObject*& subtreeRoot, RenderObject& descendant);
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> typedef HashMap<RenderBox*, RenderMultiColumnSpannerPlaceholder*> 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()->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->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& renderer) const
</ins><span class="cx"> {
</span><span class="cx"> if (!previousSiblingMultiColumnSet() && !nextSiblingMultiColumnSet()) {
</span><span class="cx"> // There is only one set. This is easy, then.
</span><del>- return renderer->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) && precedesRenderer(renderer, lastRenderer);
</del><ins>+ return precedesRenderer(firstRenderer, &renderer) && precedesRenderer(&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&) 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& 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&& style)
</del><ins>+RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder(RenderMultiColumnFlowThread* flowThread, RenderBox& spanner, RenderStyle&& style)
</ins><span class="cx"> : RenderBox(flowThread->document(), WTFMove(style), RenderBoxModelObjectFlag)
</span><del>- , m_spanner(spanner)
</del><ins>+ , m_spanner(&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& 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&&);
</del><ins>+ RenderMultiColumnSpannerPlaceholder(RenderMultiColumnFlowThread*, RenderBox& spanner, RenderStyle&&);
</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()->dirtyLinesFromChangedChild(*this);
</span><span class="cx">
</span><span class="cx"> if (RenderFlowThread* flowThread = flowThreadContainingBlock())
</span><del>- flowThread->flowThreadDescendantInserted(this);
</del><ins>+ flowThread->flowThreadDescendantInserted(*this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RenderObject::willBeRemovedFromTree()
</span></span></pre>
</div>
</div>
</body>
</html>