<!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>[191234] 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/191234">191234</a></dd>
<dt>Author</dt> <dd>zalan@apple.com</dd>
<dt>Date</dt> <dd>2015-10-16 20:36:56 -0700 (Fri, 16 Oct 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>RenderBlockFlow::*logical*ForFloat should take FloatingObject reference.
https://bugs.webkit.org/show_bug.cgi?id=150266
Reviewed by Simon Fraser.
No change in behaviour.
* rendering/FloatingObjects.cpp:
(WebCore::FindNextFloatLogicalBottomAdapter::collectIfNeeded):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatTypeValue>::heightRemaining):
(WebCore::ComputeFloatOffsetAdapter<FloatTypeValue>::collectIfNeeded):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::rebuildFloatingObjectSetFromIntrudingFloats):
(WebCore::RenderBlockFlow::repaintOverhangingFloats):
(WebCore::RenderBlockFlow::insertFloatingObject):
(WebCore::RenderBlockFlow::removeFloatingObject):
(WebCore::RenderBlockFlow::removeFloatingObjectsBelow):
(WebCore::RenderBlockFlow::computeLogicalLocationForFloat):
(WebCore::RenderBlockFlow::positionNewFloats):
(WebCore::RenderBlockFlow::lowestFloatLogicalBottom):
(WebCore::RenderBlockFlow::lowestInitialLetterLogicalBottom):
(WebCore::RenderBlockFlow::addOverhangingFloats):
(WebCore::RenderBlockFlow::hasOverhangingFloat):
(WebCore::RenderBlockFlow::addIntrudingFloats):
* rendering/RenderBlockFlow.h:
(WebCore::RenderBlockFlow::logicalTopForFloat):
(WebCore::RenderBlockFlow::logicalBottomForFloat):
(WebCore::RenderBlockFlow::logicalLeftForFloat):
(WebCore::RenderBlockFlow::logicalRightForFloat):
(WebCore::RenderBlockFlow::logicalWidthForFloat):
(WebCore::RenderBlockFlow::logicalHeightForFloat):
(WebCore::RenderBlockFlow::setLogicalTopForFloat):
(WebCore::RenderBlockFlow::setLogicalLeftForFloat):
(WebCore::RenderBlockFlow::setLogicalHeightForFloat):
(WebCore::RenderBlockFlow::setLogicalWidthForFloat):
(WebCore::RenderBlockFlow::logicalSizeForFloat): Deleted.
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
(WebCore::RenderBlockFlow::checkPaginationAndFloatsAtEndLine):
(WebCore::RenderBlockFlow::positionNewFloatOnLine):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::addOverflowFromChild):
* rendering/RenderBox.h:
(WebCore::RenderBox::addOverflowFromChild):
* rendering/line/BreakingContext.h:
(WebCore::BreakingContext::handleFloat):
* rendering/line/LineWidth.cpp:
(WebCore::newFloatShrinksLine):
(WebCore::LineWidth::shrinkAvailableWidthForNewFloatIfNeeded):
* rendering/shapes/ShapeOutsideInfo.cpp:
(WebCore::ShapeOutsideInfo::computeDeltasForContainingBlockLine):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingFloatingObjectscpp">trunk/Source/WebCore/rendering/FloatingObjects.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowcpp">trunk/Source/WebCore/rendering/RenderBlockFlow.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowh">trunk/Source/WebCore/rendering/RenderBlockFlow.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockLineLayoutcpp">trunk/Source/WebCore/rendering/RenderBlockLineLayout.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="#trunkSourceWebCorerenderinglineBreakingContexth">trunk/Source/WebCore/rendering/line/BreakingContext.h</a></li>
<li><a href="#trunkSourceWebCorerenderinglineLineWidthcpp">trunk/Source/WebCore/rendering/line/LineWidth.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingshapesShapeOutsideInfocpp">trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/ChangeLog        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -1,3 +1,61 @@
</span><ins>+2015-10-16 Zalan Bujtas <zalan@apple.com>
+
+ RenderBlockFlow::*logical*ForFloat should take FloatingObject reference.
+ https://bugs.webkit.org/show_bug.cgi?id=150266
+
+ Reviewed by Simon Fraser.
+
+ No change in behaviour.
+
+ * rendering/FloatingObjects.cpp:
+ (WebCore::FindNextFloatLogicalBottomAdapter::collectIfNeeded):
+ (WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded):
+ (WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded):
+ (WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatTypeValue>::heightRemaining):
+ (WebCore::ComputeFloatOffsetAdapter<FloatTypeValue>::collectIfNeeded):
+ (WebCore::ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded):
+ (WebCore::ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded):
+ * rendering/RenderBlockFlow.cpp:
+ (WebCore::RenderBlockFlow::rebuildFloatingObjectSetFromIntrudingFloats):
+ (WebCore::RenderBlockFlow::repaintOverhangingFloats):
+ (WebCore::RenderBlockFlow::insertFloatingObject):
+ (WebCore::RenderBlockFlow::removeFloatingObject):
+ (WebCore::RenderBlockFlow::removeFloatingObjectsBelow):
+ (WebCore::RenderBlockFlow::computeLogicalLocationForFloat):
+ (WebCore::RenderBlockFlow::positionNewFloats):
+ (WebCore::RenderBlockFlow::lowestFloatLogicalBottom):
+ (WebCore::RenderBlockFlow::lowestInitialLetterLogicalBottom):
+ (WebCore::RenderBlockFlow::addOverhangingFloats):
+ (WebCore::RenderBlockFlow::hasOverhangingFloat):
+ (WebCore::RenderBlockFlow::addIntrudingFloats):
+ * rendering/RenderBlockFlow.h:
+ (WebCore::RenderBlockFlow::logicalTopForFloat):
+ (WebCore::RenderBlockFlow::logicalBottomForFloat):
+ (WebCore::RenderBlockFlow::logicalLeftForFloat):
+ (WebCore::RenderBlockFlow::logicalRightForFloat):
+ (WebCore::RenderBlockFlow::logicalWidthForFloat):
+ (WebCore::RenderBlockFlow::logicalHeightForFloat):
+ (WebCore::RenderBlockFlow::setLogicalTopForFloat):
+ (WebCore::RenderBlockFlow::setLogicalLeftForFloat):
+ (WebCore::RenderBlockFlow::setLogicalHeightForFloat):
+ (WebCore::RenderBlockFlow::setLogicalWidthForFloat):
+ (WebCore::RenderBlockFlow::logicalSizeForFloat): Deleted.
+ * rendering/RenderBlockLineLayout.cpp:
+ (WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
+ (WebCore::RenderBlockFlow::checkPaginationAndFloatsAtEndLine):
+ (WebCore::RenderBlockFlow::positionNewFloatOnLine):
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::addOverflowFromChild):
+ * rendering/RenderBox.h:
+ (WebCore::RenderBox::addOverflowFromChild):
+ * rendering/line/BreakingContext.h:
+ (WebCore::BreakingContext::handleFloat):
+ * rendering/line/LineWidth.cpp:
+ (WebCore::newFloatShrinksLine):
+ (WebCore::LineWidth::shrinkAvailableWidthForNewFloatIfNeeded):
+ * rendering/shapes/ShapeOutsideInfo.cpp:
+ (WebCore::ShapeOutsideInfo::computeDeltasForContainingBlockLine):
+
</ins><span class="cx"> 2015-10-16 Jiewen Tan <jiewen_tan@apple.com>
</span><span class="cx">
</span><span class="cx"> Avoid to insert TAB before HTML element.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingFloatingObjectscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/FloatingObjects.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/FloatingObjects.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/FloatingObjects.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -210,12 +210,12 @@
</span><span class="cx">
</span><span class="cx"> inline void FindNextFloatLogicalBottomAdapter::collectIfNeeded(const IntervalType& interval)
</span><span class="cx"> {
</span><del>- const FloatingObject* floatingObject = interval.data();
</del><ins>+ const auto& floatingObject = *interval.data();
</ins><span class="cx"> if (!rangesIntersect(interval.low(), interval.high(), m_belowLogicalHeight, m_aboveLogicalHeight))
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> // All the objects returned from the tree should be already placed.
</span><del>- ASSERT(floatingObject->isPlaced());
</del><ins>+ ASSERT(floatingObject.isPlaced());
</ins><span class="cx"> ASSERT(rangesIntersect(m_renderer.logicalTopForFloat(floatingObject), m_renderer.logicalBottomForFloat(floatingObject), m_belowLogicalHeight, m_aboveLogicalHeight));
</span><span class="cx">
</span><span class="cx"> LayoutUnit floatBottom = m_renderer.logicalBottomForFloat(floatingObject);
</span><span class="lines">@@ -223,8 +223,8 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><del>- if (ShapeOutsideInfo* shapeOutside = floatingObject->renderer().shapeOutsideInfo()) {
- LayoutUnit shapeBottom = m_renderer.logicalTopForFloat(floatingObject) + m_renderer.marginBeforeForChild(floatingObject->renderer()) + shapeOutside->shapeLogicalBottom();
</del><ins>+ if (ShapeOutsideInfo* shapeOutside = floatingObject.renderer().shapeOutsideInfo()) {
+ LayoutUnit shapeBottom = m_renderer.logicalTopForFloat(floatingObject) + m_renderer.marginBeforeForChild(floatingObject.renderer()) + shapeOutside->shapeLogicalBottom();
</ins><span class="cx"> // Use the shapeBottom unless it extends outside of the margin box, in which case it is clipped.
</span><span class="cx"> m_nextShapeLogicalBottom = std::min(shapeBottom, floatBottom);
</span><span class="cx"> } else
</span><span class="lines">@@ -433,7 +433,7 @@
</span><span class="cx"> template<>
</span><span class="cx"> inline bool ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded(const FloatingObject& floatingObject)
</span><span class="cx"> {
</span><del>- LayoutUnit logicalRight = m_renderer.logicalRightForFloat(&floatingObject);
</del><ins>+ LayoutUnit logicalRight = m_renderer.logicalRightForFloat(floatingObject);
</ins><span class="cx"> if (logicalRight > m_offset) {
</span><span class="cx"> m_offset = logicalRight;
</span><span class="cx"> return true;
</span><span class="lines">@@ -444,7 +444,7 @@
</span><span class="cx"> template<>
</span><span class="cx"> inline bool ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded(const FloatingObject& floatingObject)
</span><span class="cx"> {
</span><del>- LayoutUnit logicalLeft = m_renderer.logicalLeftForFloat(&floatingObject);
</del><ins>+ LayoutUnit logicalLeft = m_renderer.logicalLeftForFloat(floatingObject);
</ins><span class="cx"> if (logicalLeft < m_offset) {
</span><span class="cx"> m_offset = logicalLeft;
</span><span class="cx"> return true;
</span><span class="lines">@@ -455,29 +455,29 @@
</span><span class="cx"> template <FloatingObject::Type FloatTypeValue>
</span><span class="cx"> LayoutUnit ComputeFloatOffsetForFloatLayoutAdapter<FloatTypeValue>::heightRemaining() const
</span><span class="cx"> {
</span><del>- return this->m_outermostFloat ? this->m_renderer.logicalBottomForFloat(this->m_outermostFloat) - this->m_lineTop : LayoutUnit::fromPixel(1);
</del><ins>+ return this->m_outermostFloat ? this->m_renderer.logicalBottomForFloat(*this->m_outermostFloat) - this->m_lineTop : LayoutUnit::fromPixel(1);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <FloatingObject::Type FloatTypeValue>
</span><span class="cx"> inline void ComputeFloatOffsetAdapter<FloatTypeValue>::collectIfNeeded(const IntervalType& interval)
</span><span class="cx"> {
</span><del>- const FloatingObject* floatingObject = interval.data();
- if (floatingObject->type() != FloatTypeValue || !rangesIntersect(interval.low(), interval.high(), m_lineTop, m_lineBottom))
</del><ins>+ const auto& floatingObject = *interval.data();
+ if (floatingObject.type() != FloatTypeValue || !rangesIntersect(interval.low(), interval.high(), m_lineTop, m_lineBottom))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> // All the objects returned from the tree should be already placed.
</span><del>- ASSERT(floatingObject->isPlaced());
</del><ins>+ ASSERT(floatingObject.isPlaced());
</ins><span class="cx"> ASSERT(rangesIntersect(m_renderer.logicalTopForFloat(floatingObject), m_renderer.logicalBottomForFloat(floatingObject), m_lineTop, m_lineBottom));
</span><span class="cx">
</span><del>- bool floatIsNewExtreme = updateOffsetIfNeeded(*floatingObject);
</del><ins>+ bool floatIsNewExtreme = updateOffsetIfNeeded(floatingObject);
</ins><span class="cx"> if (floatIsNewExtreme)
</span><del>- m_outermostFloat = floatingObject;
</del><ins>+ m_outermostFloat = &floatingObject;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<>
</span><span class="cx"> inline bool ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded(const FloatingObject& floatingObject)
</span><span class="cx"> {
</span><del>- LayoutUnit logicalRight = m_renderer.logicalRightForFloat(&floatingObject);
</del><ins>+ LayoutUnit logicalRight = m_renderer.logicalRightForFloat(floatingObject);
</ins><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><span class="cx"> if (ShapeOutsideInfo* shapeOutside = floatingObject.renderer().shapeOutsideInfo()) {
</span><span class="cx"> ShapeOutsideDeltas shapeDeltas = shapeOutside->computeDeltasForContainingBlockLine(m_renderer, floatingObject, m_lineTop, m_lineBottom - m_lineTop);
</span><span class="lines">@@ -498,7 +498,7 @@
</span><span class="cx"> template<>
</span><span class="cx"> inline bool ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded(const FloatingObject& floatingObject)
</span><span class="cx"> {
</span><del>- LayoutUnit logicalLeft = m_renderer.logicalLeftForFloat(&floatingObject);
</del><ins>+ LayoutUnit logicalLeft = m_renderer.logicalLeftForFloat(floatingObject);
</ins><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><span class="cx"> if (ShapeOutsideInfo* shapeOutside = floatingObject.renderer().shapeOutsideInfo()) {
</span><span class="cx"> ShapeOutsideDeltas shapeDeltas = shapeOutside->computeDeltasForContainingBlockLine(m_renderer, floatingObject, m_lineTop, m_lineBottom - m_lineTop);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -267,12 +267,12 @@
</span><span class="cx"> const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
</span><span class="cx"> auto end = floatingObjectSet.end();
</span><span class="cx"> for (auto it = floatingObjectSet.begin(); it != end; ++it) {
</span><del>- FloatingObject* floatingObject = it->get();
- std::unique_ptr<FloatingObject> oldFloatingObject = floatMap.take(&floatingObject->renderer());
</del><ins>+ const auto& floatingObject = *it->get();
+ std::unique_ptr<FloatingObject> oldFloatingObject = floatMap.take(&floatingObject.renderer());
</ins><span class="cx"> LayoutUnit logicalBottom = logicalBottomForFloat(floatingObject);
</span><span class="cx"> if (oldFloatingObject) {
</span><del>- LayoutUnit oldLogicalBottom = logicalBottomForFloat(oldFloatingObject.get());
- if (logicalWidthForFloat(floatingObject) != logicalWidthForFloat(oldFloatingObject.get()) || logicalLeftForFloat(floatingObject) != logicalLeftForFloat(oldFloatingObject.get())) {
</del><ins>+ LayoutUnit oldLogicalBottom = logicalBottomForFloat(*oldFloatingObject);
+ if (logicalWidthForFloat(floatingObject) != logicalWidthForFloat(*oldFloatingObject) || logicalLeftForFloat(floatingObject) != logicalLeftForFloat(*oldFloatingObject)) {
</ins><span class="cx"> changeLogicalTop = 0;
</span><span class="cx"> changeLogicalBottom = std::max(changeLogicalBottom, std::max(logicalBottom, oldLogicalBottom));
</span><span class="cx"> } else {
</span><span class="lines">@@ -281,7 +281,7 @@
</span><span class="cx"> changeLogicalBottom = std::max(changeLogicalBottom, std::max(logicalBottom, oldLogicalBottom));
</span><span class="cx"> }
</span><span class="cx"> LayoutUnit logicalTop = logicalTopForFloat(floatingObject);
</span><del>- LayoutUnit oldLogicalTop = logicalTopForFloat(oldFloatingObject.get());
</del><ins>+ LayoutUnit oldLogicalTop = logicalTopForFloat(*oldFloatingObject);
</ins><span class="cx"> if (logicalTop != oldLogicalTop) {
</span><span class="cx"> changeLogicalTop = std::min(changeLogicalTop, std::min(logicalTop, oldLogicalTop));
</span><span class="cx"> changeLogicalBottom = std::max(changeLogicalBottom, std::max(logicalTop, oldLogicalTop));
</span><span class="lines">@@ -301,8 +301,8 @@
</span><span class="cx">
</span><span class="cx"> auto end = floatMap.end();
</span><span class="cx"> for (auto it = floatMap.begin(); it != end; ++it) {
</span><del>- FloatingObject* floatingObject = it->value.get();
- if (!floatingObject->isDescendant()) {
</del><ins>+ const auto& floatingObject = *it->value.get();
+ if (!floatingObject.isDescendant()) {
</ins><span class="cx"> changeLogicalTop = 0;
</span><span class="cx"> changeLogicalBottom = std::max(changeLogicalBottom, logicalBottomForFloat(floatingObject));
</span><span class="cx"> }
</span><span class="lines">@@ -2154,15 +2154,16 @@
</span><span class="cx"> const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
</span><span class="cx"> auto end = floatingObjectSet.end();
</span><span class="cx"> for (auto it = floatingObjectSet.begin(); it != end; ++it) {
</span><del>- FloatingObject* floatingObject = it->get();
</del><ins>+ const auto& floatingObject = *it->get();
</ins><span class="cx"> // Only repaint the object if it is overhanging, is not in its own layer, and
</span><span class="cx"> // is our responsibility to paint (m_shouldPaint is set). When paintAllDescendants is true, the latter
</span><span class="cx"> // condition is replaced with being a descendant of us.
</span><ins>+ auto& renderer = floatingObject.renderer();
</ins><span class="cx"> if (logicalBottomForFloat(floatingObject) > logicalHeight()
</span><del>- && !floatingObject->renderer().hasSelfPaintingLayer()
- && (floatingObject->shouldPaint() || (paintAllDescendants && floatingObject->renderer().isDescendantOf(this)))) {
- floatingObject->renderer().repaint();
- floatingObject->renderer().repaintOverhangingFloats(false);
</del><ins>+ && !renderer.hasSelfPaintingLayer()
+ && (floatingObject.shouldPaint() || (paintAllDescendants && renderer.isDescendantOf(this)))) {
+ renderer.repaint();
+ renderer.repaintOverhangingFloats(false);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -2278,7 +2279,7 @@
</span><span class="cx"> floatBox.computeAndSetBlockDirectionMargins(this);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- setLogicalWidthForFloat(floatingObject.get(), logicalWidthForChild(floatBox) + marginStartForChild(floatBox) + marginEndForChild(floatBox));
</del><ins>+ setLogicalWidthForFloat(*floatingObject, logicalWidthForChild(floatBox) + marginStartForChild(floatBox) + marginEndForChild(floatBox));
</ins><span class="cx">
</span><span class="cx"> return m_floatingObjects->add(WTF::move(floatingObject));
</span><span class="cx"> }
</span><span class="lines">@@ -2289,7 +2290,7 @@
</span><span class="cx"> const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
</span><span class="cx"> auto it = floatingObjectSet.find<RenderBox&, FloatingObjectHashTranslator>(floatBox);
</span><span class="cx"> if (it != floatingObjectSet.end()) {
</span><del>- FloatingObject* floatingObject = it->get();
</del><ins>+ auto& floatingObject = *it->get();
</ins><span class="cx"> if (childrenInline()) {
</span><span class="cx"> LayoutUnit logicalTop = logicalTopForFloat(floatingObject);
</span><span class="cx"> LayoutUnit logicalBottom = logicalBottomForFloat(floatingObject);
</span><span class="lines">@@ -2303,19 +2304,19 @@
</span><span class="cx"> // accomplished by pretending they have a height of 1.
</span><span class="cx"> logicalBottom = std::max(logicalBottom, logicalTop + 1);
</span><span class="cx"> }
</span><del>- if (floatingObject->originatingLine()) {
- floatingObject->originatingLine()->removeFloat(floatBox);
</del><ins>+ if (floatingObject.originatingLine()) {
+ floatingObject.originatingLine()->removeFloat(floatBox);
</ins><span class="cx"> if (!selfNeedsLayout()) {
</span><del>- ASSERT(&floatingObject->originatingLine()->renderer() == this);
- floatingObject->originatingLine()->markDirty();
</del><ins>+ ASSERT(&floatingObject.originatingLine()->renderer() == this);
+ floatingObject.originatingLine()->markDirty();
</ins><span class="cx"> }
</span><span class="cx"> #if !ASSERT_DISABLED
</span><del>- floatingObject->setOriginatingLine(0);
</del><ins>+ floatingObject.setOriginatingLine(0);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> markLinesDirtyInBlockRange(0, logicalBottom);
</span><span class="cx"> }
</span><del>- m_floatingObjects->remove(floatingObject);
</del><ins>+ m_floatingObjects->remove(&floatingObject);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -2327,7 +2328,7 @@
</span><span class="cx">
</span><span class="cx"> const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
</span><span class="cx"> FloatingObject* curr = floatingObjectSet.last().get();
</span><del>- while (curr != lastFloat && (!curr->isPlaced() || logicalTopForFloat(curr) >= logicalOffset)) {
</del><ins>+ while (curr != lastFloat && (!curr->isPlaced() || logicalTopForFloat(*curr) >= logicalOffset)) {
</ins><span class="cx"> m_floatingObjects->remove(curr);
</span><span class="cx"> if (floatingObjectSet.isEmpty())
</span><span class="cx"> break;
</span><span class="lines">@@ -2351,9 +2352,9 @@
</span><span class="cx"> return adjustLogicalRightOffsetForLine(offset, applyTextIndent);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-LayoutPoint RenderBlockFlow::computeLogicalLocationForFloat(const FloatingObject* floatingObject, LayoutUnit logicalTopOffset)
</del><ins>+LayoutPoint RenderBlockFlow::computeLogicalLocationForFloat(const FloatingObject& floatingObject, LayoutUnit logicalTopOffset)
</ins><span class="cx"> {
</span><del>- RenderBox& childBox = floatingObject->renderer();
</del><ins>+ auto& childBox = floatingObject.renderer();
</ins><span class="cx"> LayoutUnit logicalLeftOffset = logicalLeftOffsetForContent(logicalTopOffset); // Constant part of left offset.
</span><span class="cx"> LayoutUnit logicalRightOffset = logicalRightOffsetForContent(logicalTopOffset); // Constant part of right offset.
</span><span class="cx">
</span><span class="lines">@@ -2471,19 +2472,18 @@
</span><span class="cx">
</span><span class="cx"> // The float cannot start above the top position of the last positioned float.
</span><span class="cx"> if (lastPlacedFloatingObject)
</span><del>- logicalTop = std::max(logicalTopForFloat(lastPlacedFloatingObject), logicalTop);
</del><ins>+ logicalTop = std::max(logicalTopForFloat(*lastPlacedFloatingObject), logicalTop);
</ins><span class="cx">
</span><span class="cx"> auto end = floatingObjectSet.end();
</span><span class="cx"> // Now walk through the set of unpositioned floats and place them.
</span><span class="cx"> for (; it != end; ++it) {
</span><del>- FloatingObject* floatingObject = it->get();
</del><ins>+ auto& floatingObject = *it->get();
</ins><span class="cx"> // The containing block is responsible for positioning floats, so if we have floats in our
</span><span class="cx"> // list that come from somewhere else, do not attempt to position them.
</span><del>- if (floatingObject->renderer().containingBlock() != this)
</del><ins>+ auto& childBox = floatingObject.renderer();
+ if (childBox.containingBlock() != this)
</ins><span class="cx"> continue;
</span><span class="cx">
</span><del>- RenderBox& childBox = floatingObject->renderer();
-
</del><span class="cx"> LayoutUnit childLogicalLeftMargin = style().isLeftToRightDirection() ? marginStartForChild(childBox) : marginEndForChild(childBox);
</span><span class="cx">
</span><span class="cx"> LayoutRect oldRect = childBox.frameRect();
</span><span class="lines">@@ -2522,7 +2522,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (newLogicalTop != floatLogicalLocation.y()) {
</span><del>- floatingObject->setPaginationStrut(newLogicalTop - floatLogicalLocation.y());
</del><ins>+ floatingObject.setPaginationStrut(newLogicalTop - floatLogicalLocation.y());
</ins><span class="cx">
</span><span class="cx"> floatLogicalLocation = computeLogicalLocationForFloat(floatingObject, newLogicalTop);
</span><span class="cx"> setLogicalLeftForFloat(floatingObject, floatLogicalLocation.x());
</span><span class="lines">@@ -2545,7 +2545,7 @@
</span><span class="cx">
</span><span class="cx"> setLogicalHeightForFloat(floatingObject, logicalHeightForChildForFragmentation(childBox) + marginBeforeForChild(childBox) + marginAfterForChild(childBox));
</span><span class="cx">
</span><del>- m_floatingObjects->addPlacedObject(floatingObject);
</del><ins>+ m_floatingObjects->addPlacedObject(&floatingObject);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><span class="cx"> if (ShapeOutsideInfo* shapeOutside = childBox.shapeOutsideInfo())
</span><span class="lines">@@ -2620,8 +2620,8 @@
</span><span class="cx"> const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
</span><span class="cx"> auto end = floatingObjectSet.end();
</span><span class="cx"> for (auto it = floatingObjectSet.begin(); it != end; ++it) {
</span><del>- FloatingObject* floatingObject = it->get();
- if (floatingObject->isPlaced() && floatingObject->type() & floatType)
</del><ins>+ const auto& floatingObject = *it->get();
+ if (floatingObject.isPlaced() && floatingObject.type() & floatType)
</ins><span class="cx"> lowestFloatBottom = std::max(lowestFloatBottom, logicalBottomForFloat(floatingObject));
</span><span class="cx"> }
</span><span class="cx"> return lowestFloatBottom;
</span><span class="lines">@@ -2635,8 +2635,8 @@
</span><span class="cx"> const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
</span><span class="cx"> auto end = floatingObjectSet.end();
</span><span class="cx"> for (auto it = floatingObjectSet.begin(); it != end; ++it) {
</span><del>- FloatingObject* floatingObject = it->get();
- if (floatingObject->isPlaced() && floatingObject->renderer().style().styleType() == FIRST_LETTER && floatingObject->renderer().style().initialLetterDrop() > 0)
</del><ins>+ const auto& floatingObject = *it->get();
+ if (floatingObject.isPlaced() && floatingObject.renderer().style().styleType() == FIRST_LETTER && floatingObject.renderer().style().initialLetterDrop() > 0)
</ins><span class="cx"> lowestFloatBottom = std::max(lowestFloatBottom, logicalBottomForFloat(floatingObject));
</span><span class="cx"> }
</span><span class="cx"> return lowestFloatBottom;
</span><span class="lines">@@ -2656,14 +2656,14 @@
</span><span class="cx"> // overflow.
</span><span class="cx"> auto childEnd = child.m_floatingObjects->set().end();
</span><span class="cx"> for (auto childIt = child.m_floatingObjects->set().begin(); childIt != childEnd; ++childIt) {
</span><del>- FloatingObject* floatingObject = childIt->get();
</del><ins>+ auto& floatingObject = *childIt->get();
</ins><span class="cx"> LayoutUnit floatLogicalBottom = std::min(logicalBottomForFloat(floatingObject), LayoutUnit::max() - childLogicalTop);
</span><span class="cx"> LayoutUnit logicalBottom = childLogicalTop + floatLogicalBottom;
</span><span class="cx"> lowestFloatLogicalBottom = std::max(lowestFloatLogicalBottom, logicalBottom);
</span><span class="cx">
</span><span class="cx"> if (logicalBottom > logicalHeight()) {
</span><span class="cx"> // If the object is not in the list, we add it now.
</span><del>- if (!containsFloat(floatingObject->renderer())) {
</del><ins>+ if (!containsFloat(floatingObject.renderer())) {
</ins><span class="cx"> LayoutSize offset = isHorizontalWritingMode() ? LayoutSize(-childLogicalLeft, -childLogicalTop) : LayoutSize(-childLogicalTop, -childLogicalLeft);
</span><span class="cx"> bool shouldPaint = false;
</span><span class="cx">
</span><span class="lines">@@ -2671,30 +2671,31 @@
</span><span class="cx"> // behaves properly). We always want to propagate the desire to paint the float as
</span><span class="cx"> // far out as we can, to the outermost block that overlaps the float, stopping only
</span><span class="cx"> // if we hit a self-painting layer boundary.
</span><del>- if (floatingObject->renderer().enclosingFloatPaintingLayer() == enclosingFloatPaintingLayer()) {
- floatingObject->setShouldPaint(false);
</del><ins>+ if (floatingObject.renderer().enclosingFloatPaintingLayer() == enclosingFloatPaintingLayer()) {
+ floatingObject.setShouldPaint(false);
</ins><span class="cx"> shouldPaint = true;
</span><span class="cx"> }
</span><span class="cx"> // We create the floating object list lazily.
</span><span class="cx"> if (!m_floatingObjects)
</span><span class="cx"> createFloatingObjects();
</span><span class="cx">
</span><del>- m_floatingObjects->add(floatingObject->copyToNewContainer(offset, shouldPaint, true));
</del><ins>+ m_floatingObjects->add(floatingObject.copyToNewContainer(offset, shouldPaint, true));
</ins><span class="cx"> }
</span><span class="cx"> } else {
</span><del>- if (makeChildPaintOtherFloats && !floatingObject->shouldPaint() && !floatingObject->renderer().hasSelfPaintingLayer()
- && floatingObject->renderer().isDescendantOf(&child) && floatingObject->renderer().enclosingFloatPaintingLayer() == child.enclosingFloatPaintingLayer()) {
</del><ins>+ const auto& renderer = floatingObject.renderer();
+ if (makeChildPaintOtherFloats && !floatingObject.shouldPaint() && !renderer.hasSelfPaintingLayer()
+ && renderer.isDescendantOf(&child) && renderer.enclosingFloatPaintingLayer() == child.enclosingFloatPaintingLayer()) {
</ins><span class="cx"> // The float is not overhanging from this block, so if it is a descendant of the child, the child should
</span><span class="cx"> // paint it (the other case is that it is intruding into the child), unless it has its own layer or enclosing
</span><span class="cx"> // layer.
</span><span class="cx"> // If makeChildPaintOtherFloats is false, it means that the child must already know about all the floats
</span><span class="cx"> // it should paint.
</span><del>- floatingObject->setShouldPaint(true);
</del><ins>+ floatingObject.setShouldPaint(true);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Since the float doesn't overhang, it didn't get put into our list. We need to add its overflow in to the child now.
</span><del>- if (floatingObject->isDescendant())
- child.addOverflowFromChild(&floatingObject->renderer(), LayoutSize(xPositionForFloatIncludingMargin(floatingObject), yPositionForFloatIncludingMargin(floatingObject)));
</del><ins>+ if (floatingObject.isDescendant())
+ child.addOverflowFromChild(&renderer, LayoutSize(xPositionForFloatIncludingMargin(&floatingObject), yPositionForFloatIncludingMargin(&floatingObject)));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> return lowestFloatLogicalBottom;
</span><span class="lines">@@ -2706,11 +2707,11 @@
</span><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
</span><del>- auto it = floatingObjectSet.find<RenderBox&, FloatingObjectHashTranslator>(renderer);
</del><ins>+ const auto it = floatingObjectSet.find<RenderBox&, FloatingObjectHashTranslator>(renderer);
</ins><span class="cx"> if (it == floatingObjectSet.end())
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- return logicalBottomForFloat(it->get()) > logicalHeight();
</del><ins>+ return logicalBottomForFloat(*it->get()) > logicalHeight();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RenderBlockFlow::addIntrudingFloats(RenderBlockFlow* prev, RenderBlockFlow* container, LayoutUnit logicalLeftOffset, LayoutUnit logicalTopOffset)
</span><span class="lines">@@ -2730,9 +2731,9 @@
</span><span class="cx"> const FloatingObjectSet& prevSet = prev->m_floatingObjects->set();
</span><span class="cx"> auto prevEnd = prevSet.end();
</span><span class="cx"> for (auto prevIt = prevSet.begin(); prevIt != prevEnd; ++prevIt) {
</span><del>- FloatingObject* floatingObject = prevIt->get();
</del><ins>+ auto& floatingObject = *prevIt->get();
</ins><span class="cx"> if (logicalBottomForFloat(floatingObject) > logicalTopOffset) {
</span><del>- if (!m_floatingObjects || !m_floatingObjects->set().contains<FloatingObject&, FloatingObjectHashTranslator>(*floatingObject)) {
</del><ins>+ if (!m_floatingObjects || !m_floatingObjects->set().contains<FloatingObject&, FloatingObjectHashTranslator>(floatingObject)) {
</ins><span class="cx"> // We create the floating object list lazily.
</span><span class="cx"> if (!m_floatingObjects)
</span><span class="cx"> createFloatingObjects();
</span><span class="lines">@@ -2746,7 +2747,7 @@
</span><span class="cx"> ? LayoutSize(logicalLeftOffset - (prev != container ? prev->marginLeft() : LayoutUnit()), logicalTopOffset)
</span><span class="cx"> : LayoutSize(logicalTopOffset, logicalLeftOffset - (prev != container ? prev->marginTop() : LayoutUnit()));
</span><span class="cx">
</span><del>- m_floatingObjects->add(floatingObject->copyToNewContainer(offset));
</del><ins>+ m_floatingObjects->add(floatingObject.copyToNewContainer(offset));
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.h (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.h        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.h        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -297,41 +297,40 @@
</span><span class="cx">
</span><span class="cx"> const FloatingObjectSet* floatingObjectSet() const { return m_floatingObjects ? &m_floatingObjects->set() : nullptr; }
</span><span class="cx">
</span><del>- LayoutUnit logicalTopForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject->y() : floatingObject->x(); }
- LayoutUnit logicalBottomForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject->maxY() : floatingObject->maxX(); }
- LayoutUnit logicalLeftForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject->x() : floatingObject->y(); }
- LayoutUnit logicalRightForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject->maxX() : floatingObject->maxY(); }
- LayoutUnit logicalWidthForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject->width() : floatingObject->height(); }
- LayoutUnit logicalHeightForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject->height() : floatingObject->width(); }
- LayoutSize logicalSizeForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? LayoutSize(floatingObject->width(), floatingObject->height()) : LayoutSize(floatingObject->height(), floatingObject->width()); }
</del><ins>+ LayoutUnit logicalTopForFloat(const FloatingObject& floatingObject) const { return isHorizontalWritingMode() ? floatingObject.y() : floatingObject.x(); }
+ LayoutUnit logicalBottomForFloat(const FloatingObject& floatingObject) const { return isHorizontalWritingMode() ? floatingObject.maxY() : floatingObject.maxX(); }
+ LayoutUnit logicalLeftForFloat(const FloatingObject& floatingObject) const { return isHorizontalWritingMode() ? floatingObject.x() : floatingObject.y(); }
+ LayoutUnit logicalRightForFloat(const FloatingObject& floatingObject) const { return isHorizontalWritingMode() ? floatingObject.maxX() : floatingObject.maxY(); }
+ LayoutUnit logicalWidthForFloat(const FloatingObject& floatingObject) const { return isHorizontalWritingMode() ? floatingObject.width() : floatingObject.height(); }
+ LayoutUnit logicalHeightForFloat(const FloatingObject& floatingObject) const { return isHorizontalWritingMode() ? floatingObject.height() : floatingObject.width(); }
</ins><span class="cx">
</span><del>- void setLogicalTopForFloat(FloatingObject* floatingObject, LayoutUnit logicalTop)
</del><ins>+ void setLogicalTopForFloat(FloatingObject& floatingObject, LayoutUnit logicalTop)
</ins><span class="cx"> {
</span><span class="cx"> if (isHorizontalWritingMode())
</span><del>- floatingObject->setY(logicalTop);
</del><ins>+ floatingObject.setY(logicalTop);
</ins><span class="cx"> else
</span><del>- floatingObject->setX(logicalTop);
</del><ins>+ floatingObject.setX(logicalTop);
</ins><span class="cx"> }
</span><del>- void setLogicalLeftForFloat(FloatingObject* floatingObject, LayoutUnit logicalLeft)
</del><ins>+ void setLogicalLeftForFloat(FloatingObject& floatingObject, LayoutUnit logicalLeft)
</ins><span class="cx"> {
</span><span class="cx"> if (isHorizontalWritingMode())
</span><del>- floatingObject->setX(logicalLeft);
</del><ins>+ floatingObject.setX(logicalLeft);
</ins><span class="cx"> else
</span><del>- floatingObject->setY(logicalLeft);
</del><ins>+ floatingObject.setY(logicalLeft);
</ins><span class="cx"> }
</span><del>- void setLogicalHeightForFloat(FloatingObject* floatingObject, LayoutUnit logicalHeight)
</del><ins>+ void setLogicalHeightForFloat(FloatingObject& floatingObject, LayoutUnit logicalHeight)
</ins><span class="cx"> {
</span><span class="cx"> if (isHorizontalWritingMode())
</span><del>- floatingObject->setHeight(logicalHeight);
</del><ins>+ floatingObject.setHeight(logicalHeight);
</ins><span class="cx"> else
</span><del>- floatingObject->setWidth(logicalHeight);
</del><ins>+ floatingObject.setWidth(logicalHeight);
</ins><span class="cx"> }
</span><del>- void setLogicalWidthForFloat(FloatingObject* floatingObject, LayoutUnit logicalWidth)
</del><ins>+ void setLogicalWidthForFloat(FloatingObject& floatingObject, LayoutUnit logicalWidth)
</ins><span class="cx"> {
</span><span class="cx"> if (isHorizontalWritingMode())
</span><del>- floatingObject->setWidth(logicalWidth);
</del><ins>+ floatingObject.setWidth(logicalWidth);
</ins><span class="cx"> else
</span><del>- floatingObject->setHeight(logicalWidth);
</del><ins>+ floatingObject.setHeight(logicalWidth);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> LayoutUnit xPositionForFloatIncludingMargin(const FloatingObject* child) const { return isHorizontalWritingMode() ? child->x() + child->renderer().marginLeft() : child->x() + marginBeforeForChild(child->renderer()); }
</span><span class="lines">@@ -490,7 +489,7 @@
</span><span class="cx"> FloatingObject* insertFloatingObject(RenderBox&);
</span><span class="cx"> void removeFloatingObject(RenderBox&);
</span><span class="cx"> void removeFloatingObjectsBelow(FloatingObject*, int logicalOffset);
</span><del>- LayoutPoint computeLogicalLocationForFloat(const FloatingObject*, LayoutUnit logicalTopOffset);
</del><ins>+ LayoutPoint computeLogicalLocationForFloat(const FloatingObject&, LayoutUnit logicalTopOffset);
</ins><span class="cx">
</span><span class="cx"> // Called from lineWidth, to position the floats added in the last line.
</span><span class="cx"> // Returns true if and only if it has positioned any floats.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockLineLayoutcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -1255,7 +1255,7 @@
</span><span class="cx">
</span><span class="cx"> const InlineIterator oldEnd = end;
</span><span class="cx"> bool isNewUBAParagraph = layoutState.lineInfo().previousLineBrokeCleanly();
</span><del>- FloatingObject* lastFloatFromPreviousLine = (containsFloats()) ? m_floatingObjects->set().last().get() : 0;
</del><ins>+ FloatingObject* lastFloatFromPreviousLine = (containsFloats()) ? m_floatingObjects->set().last().get() : nullptr;
</ins><span class="cx">
</span><span class="cx"> WordMeasurements wordMeasurements;
</span><span class="cx"> end = lineBreaker.nextLineBreak(resolver, layoutState.lineInfo(), layoutState, renderTextInfo, lastFloatFromPreviousLine, consecutiveHyphenatedLines, wordMeasurements);
</span><span class="lines">@@ -1898,7 +1898,7 @@
</span><span class="cx"> const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
</span><span class="cx"> auto end = floatingObjectSet.end();
</span><span class="cx"> for (auto it = floatingObjectSet.begin(); it != end; ++it) {
</span><del>- FloatingObject* floatingObject = it->get();
</del><ins>+ const auto& floatingObject = *it->get();
</ins><span class="cx"> if (logicalBottomForFloat(floatingObject) >= logicalTop && logicalBottomForFloat(floatingObject) < logicalBottom)
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="lines">@@ -2075,7 +2075,7 @@
</span><span class="cx"> const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
</span><span class="cx"> ASSERT(floatingObjectSet.last().get() == &newFloat);
</span><span class="cx">
</span><del>- LayoutUnit floatLogicalTop = logicalTopForFloat(&newFloat);
</del><ins>+ LayoutUnit floatLogicalTop = logicalTopForFloat(newFloat);
</ins><span class="cx"> LayoutUnit paginationStrut = newFloat.paginationStrut();
</span><span class="cx">
</span><span class="cx"> if (floatLogicalTop - paginationStrut != logicalHeight() + lineInfo.floatPaginationStrut())
</span><span class="lines">@@ -2086,15 +2086,15 @@
</span><span class="cx"> auto begin = floatingObjectSet.begin();
</span><span class="cx"> while (it != begin) {
</span><span class="cx"> --it;
</span><del>- FloatingObject* floatingObject = it->get();
- if (floatingObject == lastFloatFromPreviousLine)
</del><ins>+ auto& floatingObject = *it->get();
+ if (&floatingObject == lastFloatFromPreviousLine)
</ins><span class="cx"> break;
</span><span class="cx"> if (logicalTopForFloat(floatingObject) == logicalHeight() + lineInfo.floatPaginationStrut()) {
</span><del>- floatingObject->setPaginationStrut(paginationStrut + floatingObject->paginationStrut());
- RenderBox& floatBox = floatingObject->renderer();
</del><ins>+ floatingObject.setPaginationStrut(paginationStrut + floatingObject.paginationStrut());
+ RenderBox& floatBox = floatingObject.renderer();
</ins><span class="cx"> setLogicalTopForChild(floatBox, logicalTopForChild(floatBox) + marginBeforeForChild(floatBox) + paginationStrut);
</span><span class="cx">
</span><del>- if (updateRegionRangeForBoxChild(floatingObject->renderer()))
</del><ins>+ if (updateRegionRangeForBoxChild(floatBox))
</ins><span class="cx"> floatBox.setNeedsLayout(MarkOnlyThis);
</span><span class="cx"> else if (is<RenderBlock>(floatBox))
</span><span class="cx"> downcast<RenderBlock>(floatBox).setChildNeedsLayout(MarkOnlyThis);
</span><span class="lines">@@ -2103,9 +2103,9 @@
</span><span class="cx"> // Save the old logical top before calling removePlacedObject which will set
</span><span class="cx"> // isPlaced to false. Otherwise it will trigger an assert in logicalTopForFloat.
</span><span class="cx"> LayoutUnit oldLogicalTop = logicalTopForFloat(floatingObject);
</span><del>- m_floatingObjects->removePlacedObject(floatingObject);
</del><ins>+ m_floatingObjects->removePlacedObject(&floatingObject);
</ins><span class="cx"> setLogicalTopForFloat(floatingObject, oldLogicalTop + paginationStrut);
</span><del>- m_floatingObjects->addPlacedObject(floatingObject);
</del><ins>+ m_floatingObjects->addPlacedObject(&floatingObject);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -4447,7 +4447,7 @@
</span><span class="cx"> return LayoutRect(overflowMinX, overflowMinY, overflowMaxX - overflowMinX, overflowMaxY - overflowMinY);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void RenderBox::addOverflowFromChild(RenderBox* child, const LayoutSize& delta)
</del><ins>+void RenderBox::addOverflowFromChild(const RenderBox* child, const LayoutSize& delta)
</ins><span class="cx"> {
</span><span class="cx"> // Never allow flow threads to propagate overflow up to a parent.
</span><span class="cx"> if (child->isRenderFlowThread())
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.h (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.h        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/RenderBox.h        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -204,8 +204,8 @@
</span><span class="cx">
</span><span class="cx"> void addVisualEffectOverflow();
</span><span class="cx"> LayoutRect applyVisualEffectOverflow(const LayoutRect&) const;
</span><del>- void addOverflowFromChild(RenderBox* child) { addOverflowFromChild(child, child->locationOffset()); }
- void addOverflowFromChild(RenderBox* child, const LayoutSize& delta);
</del><ins>+ void addOverflowFromChild(const RenderBox* child) { addOverflowFromChild(child, child->locationOffset()); }
+ void addOverflowFromChild(const RenderBox* child, const LayoutSize& delta);
</ins><span class="cx">
</span><span class="cx"> void updateLayerTransform();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderinglineBreakingContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/line/BreakingContext.h (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/line/BreakingContext.h        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/line/BreakingContext.h        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -444,12 +444,12 @@
</span><span class="cx"> inline void BreakingContext::handleFloat()
</span><span class="cx"> {
</span><span class="cx"> auto& floatBox = downcast<RenderBox>(*m_current.renderer());
</span><del>- FloatingObject* floatingObject = m_lineBreaker.insertFloatingObject(floatBox);
</del><ins>+ const auto& floatingObject = *m_lineBreaker.insertFloatingObject(floatBox);
</ins><span class="cx"> // check if it fits in the current line.
</span><span class="cx"> // If it does, position it now, otherwise, position
</span><span class="cx"> // it after moving to next line (in clearFloats() func)
</span><span class="cx"> if (m_floatsFitOnLine && m_width.fitsOnLineExcludingTrailingWhitespace(m_block.logicalWidthForFloat(floatingObject))) {
</span><del>- m_lineBreaker.positionNewFloatOnLine(*floatingObject, m_lastFloatFromPreviousLine, m_lineInfo, m_width);
</del><ins>+ m_lineBreaker.positionNewFloatOnLine(floatingObject, m_lastFloatFromPreviousLine, m_lineInfo, m_width);
</ins><span class="cx"> if (m_lineBreakHistory.renderer() == m_current.renderer()) {
</span><span class="cx"> ASSERT(!m_lineBreakHistory.offset());
</span><span class="cx"> m_lineBreakHistory.increment();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderinglineLineWidthcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/line/LineWidth.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/line/LineWidth.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/line/LineWidth.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> static bool newFloatShrinksLine(const FloatingObject& newFloat, const RenderBlockFlow& block, bool isFirstLine)
</span><span class="cx"> {
</span><span class="cx"> LayoutUnit blockOffset = block.logicalHeight();
</span><del>- if (blockOffset >= block.logicalTopForFloat(&newFloat) && blockOffset < block.logicalBottomForFloat(&newFloat))
</del><ins>+ if (blockOffset >= block.logicalTopForFloat(newFloat) && blockOffset < block.logicalBottomForFloat(newFloat))
</ins><span class="cx"> return true;
</span><span class="cx">
</span><span class="cx"> // initial-letter float always shrinks the first line.
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> if (newFloat.type() == FloatingObject::FloatLeft) {
</span><del>- float newLeft = m_block.logicalRightForFloat(&newFloat);
</del><ins>+ float newLeft = m_block.logicalRightForFloat(newFloat);
</ins><span class="cx"> if (shouldIndentText() && m_block.style().isLeftToRightDirection())
</span><span class="cx"> newLeft += floorToInt(m_block.textIndentOffset());
</span><span class="cx"> #if ENABLE(CSS_SHAPES)
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> m_left = std::max<float>(m_left, newLeft);
</span><span class="cx"> } else {
</span><del>- float newRight = m_block.logicalLeftForFloat(&newFloat);
</del><ins>+ float newRight = m_block.logicalLeftForFloat(newFloat);
</ins><span class="cx"> if (shouldIndentText() && !m_block.style().isLeftToRightDirection())
</span><span class="cx"> newRight -= floorToInt(m_block.textIndentOffset());
</span><span class="cx"> #if ENABLE(CSS_SHAPES)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingshapesShapeOutsideInfocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp (191233 => 191234)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp        2015-10-17 02:15:20 UTC (rev 191233)
+++ trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp        2015-10-17 03:36:56 UTC (rev 191234)
</span><span class="lines">@@ -307,12 +307,12 @@
</span><span class="cx"> ShapeOutsideDeltas ShapeOutsideInfo::computeDeltasForContainingBlockLine(const RenderBlockFlow& containingBlock, const FloatingObject& floatingObject, LayoutUnit lineTop, LayoutUnit lineHeight)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(lineHeight >= 0);
</span><del>- LayoutUnit borderBoxTop = containingBlock.logicalTopForFloat(&floatingObject) + containingBlock.marginBeforeForChild(m_renderer);
</del><ins>+ LayoutUnit borderBoxTop = containingBlock.logicalTopForFloat(floatingObject) + containingBlock.marginBeforeForChild(m_renderer);
</ins><span class="cx"> LayoutUnit borderBoxLineTop = lineTop - borderBoxTop;
</span><span class="cx">
</span><span class="cx"> if (isShapeDirty() || !m_shapeOutsideDeltas.isForLine(borderBoxLineTop, lineHeight)) {
</span><span class="cx"> LayoutUnit referenceBoxLineTop = borderBoxLineTop - logicalTopOffset();
</span><del>- LayoutUnit floatMarginBoxWidth = std::max<LayoutUnit>(LayoutUnit(), containingBlock.logicalWidthForFloat(&floatingObject));
</del><ins>+ LayoutUnit floatMarginBoxWidth = std::max<LayoutUnit>(LayoutUnit(), containingBlock.logicalWidthForFloat(floatingObject));
</ins><span class="cx">
</span><span class="cx"> if (computedShape().lineOverlapsShapeMarginBounds(referenceBoxLineTop, lineHeight)) {
</span><span class="cx"> LineSegment segment = computedShape().getExcludedInterval((borderBoxLineTop - logicalTopOffset()), std::min(lineHeight, shapeLogicalBottom() - borderBoxLineTop));
</span></span></pre>
</div>
</div>
</body>
</html>