<!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>[164440] 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/164440">164440</a></dd>
<dt>Author</dt> <dd>bjonesbe@adobe.com</dd>
<dt>Date</dt> <dd>2014-02-20 11:40:28 -0800 (Thu, 20 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Rename RenderBlockFlow::clearFloats and RenderBlockFlow::newLine to be more accurate
https://bugs.webkit.org/show_bug.cgi?id=128991

Reviewed by David Hyatt.

Rename clearFloats to rebuildFloatingObjectSetFromIntrudingFloats
since it does just that.

Rename newLine to clearFloats because it actually does what the CSS
spec calls clearing floats. This also matches clearFloatsIfNeeded.

This also removes a FIXME comment that points to a bug that has
already been fixed.

This patch is based on a Blink patch by leviw:
https://src.chromium.org/viewvc/blink?revision=158598&amp;view=revision

No new tests, no behavior change.

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::rebuildFloatingObjectSetFromIntrudingFloats):
(WebCore::RenderBlockFlow::layoutBlock):
(WebCore::RenderBlockFlow::clearFloats):
* rendering/RenderBlockFlow.h:
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::layoutRunsAndFloats):
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
* rendering/line/BreakingContextInlineHeaders.h:
(WebCore::BreakingContext::handleFloat):
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::layout):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</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="#trunkSourceWebCorerenderinglineBreakingContextInlineHeadersh">trunk/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGTextcpp">trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (164439 => 164440)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-02-20 19:40:04 UTC (rev 164439)
+++ trunk/Source/WebCore/ChangeLog        2014-02-20 19:40:28 UTC (rev 164440)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2014-02-20  Bem Jones-Bey  &lt;bjonesbe@adobe.com&gt;
+
+        Rename RenderBlockFlow::clearFloats and RenderBlockFlow::newLine to be more accurate
+        https://bugs.webkit.org/show_bug.cgi?id=128991
+
+        Reviewed by David Hyatt.
+
+        Rename clearFloats to rebuildFloatingObjectSetFromIntrudingFloats
+        since it does just that.
+
+        Rename newLine to clearFloats because it actually does what the CSS
+        spec calls clearing floats. This also matches clearFloatsIfNeeded.
+
+        This also removes a FIXME comment that points to a bug that has
+        already been fixed.
+
+        This patch is based on a Blink patch by leviw:
+        https://src.chromium.org/viewvc/blink?revision=158598&amp;view=revision
+
+        No new tests, no behavior change.
+
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::rebuildFloatingObjectSetFromIntrudingFloats):
+        (WebCore::RenderBlockFlow::layoutBlock):
+        (WebCore::RenderBlockFlow::clearFloats):
+        * rendering/RenderBlockFlow.h:
+        * rendering/RenderBlockLineLayout.cpp:
+        (WebCore::RenderBlockFlow::layoutRunsAndFloats):
+        (WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
+        * rendering/line/BreakingContextInlineHeaders.h:
+        (WebCore::BreakingContext::handleFloat):
+        * rendering/svg/RenderSVGText.cpp:
+        (WebCore::RenderSVGText::layout):
+
</ins><span class="cx"> 2014-02-19  Pratik Solanki  &lt;psolanki@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         ASSERT in FrameLoader::shouldInterruptLoadForXFrameOptions
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (164439 => 164440)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-02-20 19:40:04 UTC (rev 164439)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-02-20 19:40:28 UTC (rev 164440)
</span><span class="lines">@@ -203,7 +203,7 @@
</span><span class="cx">     RenderBox::willBeDestroyed();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderBlockFlow::clearFloats()
</del><ins>+void RenderBlockFlow::rebuildFloatingObjectSetFromIntrudingFloats()
</ins><span class="cx"> {
</span><span class="cx">     if (m_floatingObjects)
</span><span class="cx">         m_floatingObjects-&gt;setHorizontalWritingMode(isHorizontalWritingMode());
</span><span class="lines">@@ -351,7 +351,7 @@
</span><span class="cx">     if (updateLogicalWidthAndColumnWidth())
</span><span class="cx">         relayoutChildren = true;
</span><span class="cx"> 
</span><del>-    clearFloats();
</del><ins>+    rebuildFloatingObjectSetFromIntrudingFloats();
</ins><span class="cx"> 
</span><span class="cx">     LayoutUnit previousHeight = logicalHeight();
</span><span class="cx">     // FIXME: should this start out as borderAndPaddingLogicalHeight() + scrollbarLogicalHeight(),
</span><span class="lines">@@ -2355,7 +2355,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderBlockFlow::newLine(EClear clear)
</del><ins>+void RenderBlockFlow::clearFloats(EClear clear)
</ins><span class="cx"> {
</span><span class="cx">     positionNewFloats();
</span><span class="cx">     // set y position
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.h (164439 => 164440)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.h        2014-02-20 19:40:04 UTC (rev 164439)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.h        2014-02-20 19:40:28 UTC (rev 164440)
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx">     // repopulates the list with any floats that intrude from previous siblings or parents. Floats that were added by
</span><span class="cx">     // descendants are gone when this call completes and will get added back later on after the children have gotten
</span><span class="cx">     // a relayout.
</span><del>-    void clearFloats();
</del><ins>+    void rebuildFloatingObjectSetFromIntrudingFloats();
</ins><span class="cx"> 
</span><span class="cx">     // RenderBlockFlow always contains either lines or paragraphs. When the children are all blocks (e.g. paragraphs), we call layoutBlockChildren.
</span><span class="cx">     // When the children are are all inline (e.g., lines), we call layoutInlineChildren.
</span><span class="lines">@@ -470,7 +470,7 @@
</span><span class="cx">     // Returns true if and only if it has positioned any floats.
</span><span class="cx">     bool positionNewFloats();
</span><span class="cx"> 
</span><del>-    void newLine(EClear);
</del><ins>+    void clearFloats(EClear);
</ins><span class="cx"> 
</span><span class="cx">     virtual LayoutUnit logicalRightFloatOffsetForLine(LayoutUnit logicalTop, LayoutUnit fixedOffset, LayoutUnit logicalHeight) const override;
</span><span class="cx">     virtual LayoutUnit logicalLeftFloatOffsetForLine(LayoutUnit logicalTop, LayoutUnit fixedOffset, LayoutUnit logicalHeight) const override;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockLineLayoutcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp (164439 => 164440)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2014-02-20 19:40:04 UTC (rev 164439)
+++ trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp        2014-02-20 19:40:28 UTC (rev 164440)
</span><span class="lines">@@ -1085,7 +1085,7 @@
</span><span class="cx">             if (lastObject-&gt;isBR()) {
</span><span class="cx">                 EClear clear = lastObject-&gt;style().clear();
</span><span class="cx">                 if (clear != CNONE)
</span><del>-                    newLine(clear);
</del><ins>+                    clearFloats(clear);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -1421,7 +1421,7 @@
</span><span class="cx"> 
</span><span class="cx">         if (!layoutState.lineInfo().isEmpty()) {
</span><span class="cx">             layoutState.lineInfo().setFirstLine(false);
</span><del>-            newLine(lineBreaker.clear());
</del><ins>+            clearFloats(lineBreaker.clear());
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (m_floatingObjects &amp;&amp; lastRootBox()) {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderinglineBreakingContextInlineHeadersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h (164439 => 164440)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h        2014-02-20 19:40:04 UTC (rev 164439)
+++ trunk/Source/WebCore/rendering/line/BreakingContextInlineHeaders.h        2014-02-20 19:40:28 UTC (rev 164440)
</span><span class="lines">@@ -341,8 +341,7 @@
</span><span class="cx">     FloatingObject* floatingObject = m_lineBreaker.insertFloatingObject(floatBox);
</span><span class="cx">     // check if it fits in the current line.
</span><span class="cx">     // If it does, position it now, otherwise, position
</span><del>-    // it after moving to next line (in newLine() func)
-    // FIXME: Bug 110372: Properly position multiple stacked floats with non-rectangular shape outside.
</del><ins>+    // it after moving to next line (in clearFloats() func)
</ins><span class="cx">     if (m_floatsFitOnLine &amp;&amp; m_width.fitsOnLineExcludingTrailingWhitespace(m_block.logicalWidthForFloat(floatingObject))) {
</span><span class="cx">         m_lineBreaker.positionNewFloatOnLine(floatingObject, m_lastFloatFromPreviousLine, m_lineInfo, m_width);
</span><span class="cx">         if (m_lineBreak.renderer() == m_current.renderer()) {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGTextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp (164439 => 164440)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp        2014-02-20 19:40:04 UTC (rev 164439)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGText.cpp        2014-02-20 19:40:28 UTC (rev 164440)
</span><span class="lines">@@ -411,7 +411,7 @@
</span><span class="cx">     ASSERT(childrenInline());
</span><span class="cx">     LayoutUnit repaintLogicalTop = 0;
</span><span class="cx">     LayoutUnit repaintLogicalBottom = 0;
</span><del>-    clearFloats();
</del><ins>+    rebuildFloatingObjectSetFromIntrudingFloats();
</ins><span class="cx">     layoutInlineChildren(true, repaintLogicalTop, repaintLogicalBottom);
</span><span class="cx"> 
</span><span class="cx">     if (m_needsReordering)
</span></span></pre>
</div>
</div>

</body>
</html>