<!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>[168598] 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/168598">168598</a></dd>
<dt>Author</dt> <dd>antti@apple.com</dd>
<dt>Date</dt> <dd>2014-05-11 02:42:47 -0700 (Sun, 11 May 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Text with simple line layout not getting pushed below float when there is not enough space for it
https://bugs.webkit.org/show_bug.cgi?id=126991

Reviewed by Andreas Kling.


Source/WebCore: 
Tests: fast/text/simple-lines-intruding-wide-float-dynamic.html
       fast/text/simple-lines-intruding-wide-float.html

* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::markLinesDirtyInBlockRange):
        
    Invalidate the line layout path when floats change. We need to check SimpleLineLayout::canUseFor again as
    intruding floats may make this flow ineligible to use the path.

* rendering/RenderBlockFlow.h:
(WebCore::RenderBlockFlow::floatingObjectSet):
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseFor):
        
    Test the top positions of all floats for case that would push text below the float instead of just testing 
    the first line. We may have floats in the middle of the paragraph too.

LayoutTests: 
* fast/text/simple-lines-intruding-wide-float-dynamic-expected.html: Added.
* fast/text/simple-lines-intruding-wide-float-dynamic.html: Added.
* fast/text/simple-lines-intruding-wide-float-expected.html: Added.
* fast/text/simple-lines-intruding-wide-float.html: Added.</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="#trunkSourceWebCorerenderingRenderBlockFlowcpp">trunk/Source/WebCore/rendering/RenderBlockFlow.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBlockFlowh">trunk/Source/WebCore/rendering/RenderBlockFlow.h</a></li>
<li><a href="#trunkSourceWebCorerenderingSimpleLineLayoutcpp">trunk/Source/WebCore/rendering/SimpleLineLayout.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfasttextsimplelinesintrudingwidefloatdynamicexpectedhtml">trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-dynamic-expected.html</a></li>
<li><a href="#trunkLayoutTestsfasttextsimplelinesintrudingwidefloatdynamichtml">trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-dynamic.html</a></li>
<li><a href="#trunkLayoutTestsfasttextsimplelinesintrudingwidefloatexpectedhtml">trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-expected.html</a></li>
<li><a href="#trunkLayoutTestsfasttextsimplelinesintrudingwidefloathtml">trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (168597 => 168598)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-05-11 07:47:10 UTC (rev 168597)
+++ trunk/LayoutTests/ChangeLog        2014-05-11 09:42:47 UTC (rev 168598)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-05-11  Antti Koivisto  &lt;antti@apple.com&gt;
+
+        Text with simple line layout not getting pushed below float when there is not enough space for it
+        https://bugs.webkit.org/show_bug.cgi?id=126991
+
+        Reviewed by Andreas Kling.
+
+        * fast/text/simple-lines-intruding-wide-float-dynamic-expected.html: Added.
+        * fast/text/simple-lines-intruding-wide-float-dynamic.html: Added.
+        * fast/text/simple-lines-intruding-wide-float-expected.html: Added.
+        * fast/text/simple-lines-intruding-wide-float.html: Added.
+
</ins><span class="cx"> 2014-05-10  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Multiple svg-in-object-placeholder-height tests fail
</span></span></pre></div>
<a id="trunkLayoutTestsfasttextsimplelinesintrudingwidefloatdynamicexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-dynamic-expected.html (0 => 168598)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-dynamic-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-dynamic-expected.html        2014-05-11 09:42:47 UTC (rev 168598)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;  
+&lt;style type=&quot;text/css&quot;&gt;
+.container { width:800px; }
+.float { float:right; clear:right; border:2px solid blue; width:200px; height:200px }
+.wide { width:785px; }
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div class=&quot;container&quot;&gt;
+ &lt;div class=&quot;float wide&quot; id=&quot;test&quot;&gt;
+&lt;/div&gt;
+  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfasttextsimplelinesintrudingwidefloatdynamichtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-dynamic.html (0 => 168598)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-dynamic.html                                (rev 0)
+++ trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-dynamic.html        2014-05-11 09:42:47 UTC (rev 168598)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;  
+&lt;style type=&quot;text/css&quot;&gt;
+.container { width:800px; }
+.float { float:right; clear:right; border:2px solid blue; width:200px; height:200px }
+.wide { width:785px; }
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div class=&quot;container&quot;&gt;
+ &lt;div class=&quot;float&quot; id=&quot;test&quot;&gt;
+&lt;/div&gt;
+  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&gt;
+&lt;/div&gt;
+&lt;script&gt;
+document.body.offsetLeft;
+document.getElementById(&quot;test&quot;).className += &quot; wide&quot;;
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfasttextsimplelinesintrudingwidefloatexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-expected.html (0 => 168598)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float-expected.html        2014-05-11 09:42:47 UTC (rev 168598)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script&gt;
+if (window.internals)
+    internals.settings.setSimpleLineLayoutEnabled(false);
+&lt;/script&gt;
+&lt;style type=&quot;text/css&quot;&gt;
+ .container { width:800px; }
+ .float { float:right; clear:right; border:2px solid blue; width:200px; height:200px }
+ .wide { width:785px; }
+
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div class=&quot;container&quot;&gt;
+ &lt;div class=&quot;float&quot;&gt;
+ &lt;/div&gt;
+ &lt;div class=&quot;float wide&quot;&gt;
+ &lt;/div&gt;
+  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.&lt;/p&gt;
+  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&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="trunkLayoutTestsfasttextsimplelinesintrudingwidefloathtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float.html (0 => 168598)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float.html                                (rev 0)
+++ trunk/LayoutTests/fast/text/simple-lines-intruding-wide-float.html        2014-05-11 09:42:47 UTC (rev 168598)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;  
+&lt;style type=&quot;text/css&quot;&gt;
+ .container { width:800px; }
+ .float { float:right; clear:right; border:2px solid blue; width:200px; height:200px }
+ .wide { width:785px; }
+
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div class=&quot;container&quot;&gt;
+ &lt;div class=&quot;float&quot;&gt;
+ &lt;/div&gt;
+ &lt;div class=&quot;float wide&quot;&gt;
+ &lt;/div&gt;
+  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.&lt;/p&gt;
+  &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/p&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 (168597 => 168598)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-05-11 07:47:10 UTC (rev 168597)
+++ trunk/Source/WebCore/ChangeLog        2014-05-11 09:42:47 UTC (rev 168598)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2014-05-11  Antti Koivisto  &lt;antti@apple.com&gt;
+
+        Text with simple line layout not getting pushed below float when there is not enough space for it
+        https://bugs.webkit.org/show_bug.cgi?id=126991
+
+        Reviewed by Andreas Kling.
+
+        Tests: fast/text/simple-lines-intruding-wide-float-dynamic.html
+               fast/text/simple-lines-intruding-wide-float.html
+
+        * rendering/RenderBlockFlow.cpp:
+        (WebCore::RenderBlockFlow::markLinesDirtyInBlockRange):
+        
+            Invalidate the line layout path when floats change. We need to check SimpleLineLayout::canUseFor again as
+            intruding floats may make this flow ineligible to use the path.
+
+        * rendering/RenderBlockFlow.h:
+        (WebCore::RenderBlockFlow::floatingObjectSet):
+        * rendering/SimpleLineLayout.cpp:
+        (WebCore::SimpleLineLayout::canUseFor):
+        
+            Test the top positions of all floats for case that would push text below the float instead of just testing 
+            the first line. We may have floats in the middle of the paragraph too.
+
</ins><span class="cx"> 2014-05-11  peavo@outlook.com  &lt;peavo@outlook.com&gt;
</span><span class="cx"> 
</span><span class="cx">         WinCairo crashes on acid3 test
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.cpp (168597 => 168598)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-05-11 07:47:10 UTC (rev 168597)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.cpp        2014-05-11 09:42:47 UTC (rev 168598)
</span><span class="lines">@@ -2872,6 +2872,12 @@
</span><span class="cx">     if (logicalTop &gt;= logicalBottom)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    // Floats currently affect the choice whether to use simple line layout path.
+    if (m_simpleLineLayout) {
+        invalidateLineLayoutPath();
+        return;
+    }
+
</ins><span class="cx">     RootInlineBox* lowestDirtyLine = lastRootBox();
</span><span class="cx">     RootInlineBox* afterLowest = lowestDirtyLine;
</span><span class="cx">     while (lowestDirtyLine &amp;&amp; lowestDirtyLine-&gt;lineBottomWithLeading() &gt;= logicalBottom &amp;&amp; logicalBottom &lt; LayoutUnit::max()) {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBlockFlowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBlockFlow.h (168597 => 168598)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBlockFlow.h        2014-05-11 07:47:10 UTC (rev 168597)
+++ trunk/Source/WebCore/rendering/RenderBlockFlow.h        2014-05-11 09:42:47 UTC (rev 168598)
</span><span class="lines">@@ -291,6 +291,8 @@
</span><span class="cx">     void markAllDescendantsWithFloatsForLayout(RenderBox* floatToRemove = nullptr, bool inLayout = true);
</span><span class="cx">     void markSiblingsWithFloatsForLayout(RenderBox* floatToRemove = nullptr);
</span><span class="cx"> 
</span><ins>+    const FloatingObjectSet* floatingObjectSet() const { return m_floatingObjects ? &amp;m_floatingObjects-&gt;set() : nullptr; }
+
</ins><span class="cx">     LayoutUnit logicalTopForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject-&gt;y() : floatingObject-&gt;x(); }
</span><span class="cx">     LayoutUnit logicalBottomForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject-&gt;maxY() : floatingObject-&gt;maxX(); }
</span><span class="cx">     LayoutUnit logicalLeftForFloat(const FloatingObject* floatingObject) const { return isHorizontalWritingMode() ? floatingObject-&gt;x() : floatingObject-&gt;y(); }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingSimpleLineLayoutcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/SimpleLineLayout.cpp (168597 => 168598)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/SimpleLineLayout.cpp        2014-05-11 07:47:10 UTC (rev 168597)
+++ trunk/Source/WebCore/rendering/SimpleLineLayout.cpp        2014-05-11 09:42:47 UTC (rev 168598)
</span><span class="lines">@@ -162,9 +162,13 @@
</span><span class="cx">     const RenderText&amp; textRenderer = toRenderText(*flow.firstChild());
</span><span class="cx">     if (flow.containsFloats()) {
</span><span class="cx">         // We can't use the code path if any lines would need to be shifted below floats. This is because we don't keep per-line y coordinates.
</span><del>-        // It is enough to test the first line width only as currently all floats must be overhanging.
-        if (textRenderer.minLogicalWidth() &gt; LineWidth(const_cast&lt;RenderBlockFlow&amp;&gt;(flow), false, DoNotIndentText).availableWidth())
-            return false;
</del><ins>+        float minimumWidthNeeded = textRenderer.minLogicalWidth();
+        for (auto&amp; floatRenderer : *flow.floatingObjectSet()) {
+            ASSERT(floatRenderer);
+            float availableWidth = flow.availableLogicalWidthForLine(floatRenderer-&gt;y(), false);
+            if (availableWidth &lt; minimumWidthNeeded)
+                return false;
+        }
</ins><span class="cx">     }
</span><span class="cx">     if (textRenderer.isCombineText() || textRenderer.isCounter() || textRenderer.isQuote() || textRenderer.isTextFragment()
</span><span class="cx">         || textRenderer.isSVGInlineText())
</span></span></pre>
</div>
</div>

</body>
</html>