<!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>[167602] trunk</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/167602">167602</a></dd>
<dt>Author</dt> <dd>hyatt@apple.com</dd>
<dt>Date</dt> <dd>2014-04-21 12:05:23 -0700 (Mon, 21 Apr 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>
Source/WebCore: [New Multicolumn] Column balancing is slow on float-multicol.html
https://bugs.webkit.org/show_bug.cgi?id=131801

Reviewed by Enrica Casucci.

Added fast/multicol/tall-float.html

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::expandsToEncloseOverhangingFloats):
Make RenderFlowThreads expand to encompass floats. Also from Morten's patch for
Blink (#361551).

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::computeOverflow):
Fix a bug where the new multi-column code was adding in overflow for floats
when it should not. This was resulting in the creation of scrollbars when none
should exist. This is my own addition.

(WebCore::RenderBlockFlow::addOverhangingFloats):
Make RenderFlowThreads and RenderRegions ignore overhanging float additions. This
comes from Morten's patch for Blink (#361551).

LayoutTests: http/tests/cache/subresource-failover-to-network.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=131936

Patch by Alexey Proskuryakov &lt;ap@apple.com&gt; on 2014-04-21
Reviewed by Brady Eidson.

The test was racy, because it was unintentionally queuing TestRunner operations
twice. Also, it failed to clean up its cookie.

Rewrote to not use TestRunner queuing, making the test work in browser.

* http/tests/cache/resources/subresource-failover-to-network.cgi:
* http/tests/cache/subresource-failover-to-network.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockcpp">trunk/Source/WebCore/rendering/RenderBlock.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowcpp">trunk/Source/WebCore/rendering/RenderBlockFlow.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastmulticoltallfloatexpectedhtml">trunk/LayoutTests/fast/multicol/tall-float-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmulticoltallfloathtml">trunk/LayoutTests/fast/multicol/tall-float.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (167601 => 167602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-04-21 18:55:14 UTC (rev 167601)
+++ trunk/LayoutTests/ChangeLog        2014-04-21 19:05:23 UTC (rev 167602)
</span><span class="lines">@@ -15,6 +15,16 @@
</span><span class="cx"> 
</span><span class="cx"> 2014-04-21  David Hyatt  &lt;hyatt@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        [New Multicolumn] Column balancing is slow on float-multicol.html
+        https://bugs.webkit.org/show_bug.cgi?id=131801
+
+        Reviewed by Enrica Casucci.
+
+        * fast/multicol/tall-float-expected.html: Added.
+        * fast/multicol/tall-float.html: Added.
+
+2014-04-21  David Hyatt  &lt;hyatt@apple.com&gt;
+
</ins><span class="cx">         [New Multicolumn] Pagination mode messed up with non-inline axis and reversed direction.
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=131811
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastmulticoltallfloatexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/tall-float-expected.html (0 => 167602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/tall-float-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/tall-float-expected.html        2014-04-21 19:05:23 UTC (rev 167602)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+ &lt;!DOCTYPE html&gt;
+ &lt;html&gt;
+     &lt;head&gt;
+         &lt;script&gt;
+             if (window.internals)
+                 internals.settings.setRegionBasedColumnsEnabled(true);
+         &lt;/script&gt;
+     &lt;/head&gt;
+     &lt;body&gt;
+        &lt;p&gt;There should be no red below.&lt;/p&gt;
+        &lt;div style=&quot;-webkit-columns:3; columns:3; -webkit-column-gap:0; column-gap:0; background:yellow;&quot;&gt;
+            hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;
+         &lt;/div&gt;
+     &lt;/body&gt;
+ &lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsfastmulticoltallfloathtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/multicol/tall-float.html (0 => 167602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/multicol/tall-float.html                                (rev 0)
+++ trunk/LayoutTests/fast/multicol/tall-float.html        2014-04-21 19:05:23 UTC (rev 167602)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+ &lt;!DOCTYPE html&gt;
+ &lt;html&gt;
+     &lt;head&gt;
+         &lt;script&gt;
+             if (window.internals)
+                 internals.settings.setRegionBasedColumnsEnabled(true);
+         &lt;/script&gt;
+     &lt;/head&gt;
+     &lt;body&gt;
+        &lt;p&gt;There should be no red below.&lt;/p&gt;
+       &lt;div style=&quot;-webkit-columns:3; columns:3; -webkit-column-gap:0; column-gap:0; background:red;&quot;&gt;
+        &lt;div style=&quot;float:left; width:100%; background:yellow;&quot;&gt;                hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;hest&lt;br&gt;
+           &lt;/div&gt;
+         &lt;/div&gt;
+     &lt;/body&gt;
+ &lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (167601 => 167602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-04-21 18:55:14 UTC (rev 167601)
+++ trunk/Source/WebCore/ChangeLog        2014-04-21 19:05:23 UTC (rev 167602)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2014-04-21  David Hyatt  &lt;hyatt@apple.com&gt;
+
+        [New Multicolumn] Column balancing is slow on float-multicol.html
+        https://bugs.webkit.org/show_bug.cgi?id=131801
+
+        Reviewed by Enrica Casucci.
+
+        Added fast/multicol/tall-float.html
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::expandsToEncloseOverhangingFloats):
+        Make RenderFlowThreads expand to encompass floats. Also from Morten's patch for
+        Blink (#361551).
+
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::computeOverflow):
+        Fix a bug where the new multi-column code was adding in overflow for floats
+        when it should not. This was resulting in the creation of scrollbars when none
+        should exist. This is my own addition.
+
+        (WebCore::RenderBlockFlow::addOverhangingFloats):
+        Make RenderFlowThreads and RenderRegions ignore overhanging float additions. This
+        comes from Morten's patch for Blink (#361551).
+
</ins><span class="cx"> 2014-04-21  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         REGRESSION (r160908): Safari doesn't draw rotated images properly first time
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (167601 => 167602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlock.cpp        2014-04-21 18:55:14 UTC (rev 167601)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp        2014-04-21 19:05:23 UTC (rev 167602)
</span><span class="lines">@@ -1472,10 +1472,9 @@
</span><span class="cx"> bool RenderBlock::expandsToEncloseOverhangingFloats() const
</span><span class="cx"> {
</span><span class="cx">     return isInlineBlockOrInlineTable() || isFloatingOrOutOfFlowPositioned() || hasOverflowClip() || (parent() &amp;&amp; parent()-&gt;isFlexibleBoxIncludingDeprecated())
</span><del>-           || hasColumns() || isTableCell() || isTableCaption() || isFieldset() || isWritingModeRoot() || isRoot();
</del><ins>+        || hasColumns() || isTableCell() || isTableCaption() || isFieldset() || isWritingModeRoot() || isRoot() || isRenderFlowThread();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> LayoutUnit RenderBlock::computeStartPositionDeltaForChildAvoidingFloats(const RenderBox&amp; child, LayoutUnit childMarginStart, RenderRegion* region)
</span><span class="cx"> {
</span><span class="cx">     LayoutUnit startPosition = startOffsetForContent(region);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (167601 => 167602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-04-21 18:55:14 UTC (rev 167601)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-04-21 19:05:23 UTC (rev 167602)
</span><span class="lines">@@ -1967,7 +1967,7 @@
</span><span class="cx"> {
</span><span class="cx">     RenderBlock::computeOverflow(oldClientAfterEdge, recomputeFloats);
</span><span class="cx"> 
</span><del>-    if (!hasColumns() &amp;&amp; (recomputeFloats || isRoot() || expandsToEncloseOverhangingFloats() || hasSelfPaintingLayer()))
</del><ins>+    if (!hasColumns() &amp;&amp; !multiColumnFlowThread() &amp;&amp; (recomputeFloats || isRoot() || expandsToEncloseOverhangingFloats() || hasSelfPaintingLayer()))
</ins><span class="cx">         addOverflowFromFloats();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2422,7 +2422,7 @@
</span><span class="cx"> LayoutUnit RenderBlockFlow::addOverhangingFloats(RenderBlockFlow&amp; child, bool makeChildPaintOtherFloats)
</span><span class="cx"> {
</span><span class="cx">     // Prevent floats from being added to the canvas by the root element, e.g., &lt;html&gt;.
</span><del>-    if (child.hasOverflowClip() || !child.containsFloats() || child.isRoot() || child.hasColumns() || child.isWritingModeRoot())
</del><ins>+    if (child.hasOverflowClip() || !child.containsFloats() || child.isRoot() || child.hasColumns() || child.isWritingModeRoot() || child.isRenderFlowThread() || child.isRenderRegion())
</ins><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     LayoutUnit childLogicalTop = child.logicalTop();
</span></span></pre>
</div>
</div>

</body>
</html>