<!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>[169586] 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/169586">169586</a></dd>
<dt>Author</dt> <dd>stavila@adobe.com</dd>
<dt>Date</dt> <dd>2014-06-04 05:41:27 -0700 (Wed, 04 Jun 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>REGRESSION: [CSS Regions] Regions with overflow:auto generate scrollbars even if the content flows into the following regions and as such, should not be scrolled
https://bugs.webkit.org/show_bug.cgi?id=133481

Reviewed by Antti Koivisto.

Source/WebCore:
When enlarging the layout overflow of a scrollable region, the portion of the content that flows
in the region must be taken into consideration. If the content continues to flow into the next
region, the layout overflow of the current region must not be enlarged.

Test: fast/regions/scrollable-first-region.html

* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::addRegionsOverflowFromChild):

LayoutTests:
Added test for a large item flowed through two regions with the first region having overflow:auto.
The region must NOT scroll.

* fast/regions/scrollable-first-region-expected.html: Added.
* fast/regions/scrollable-first-region.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="#trunkSourceWebCorerenderingRenderFlowThreadcpp">trunk/Source/WebCore/rendering/RenderFlowThread.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastregionsscrollablefirstregionexpectedhtml">trunk/LayoutTests/fast/regions/scrollable-first-region-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastregionsscrollablefirstregionhtml">trunk/LayoutTests/fast/regions/scrollable-first-region.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (169585 => 169586)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-06-04 07:25:29 UTC (rev 169585)
+++ trunk/LayoutTests/ChangeLog        2014-06-04 12:41:27 UTC (rev 169586)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2014-06-04  Radu Stavila  &lt;stavila@adobe.com&gt;
+
+        REGRESSION: [CSS Regions] Regions with overflow:auto generate scrollbars even if the content flows into the following regions and as such, should not be scrolled
+        https://bugs.webkit.org/show_bug.cgi?id=133481
+
+        Reviewed by Antti Koivisto.
+
+        Added test for a large item flowed through two regions with the first region having overflow:auto.
+        The region must NOT scroll.
+
+        * fast/regions/scrollable-first-region-expected.html: Added.
+        * fast/regions/scrollable-first-region.html: Added.
+
</ins><span class="cx"> 2014-06-03  Benjamin Poulain  &lt;benjamin@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix some corner cases of :hover and :active in quirks mode
</span></span></pre></div>
<a id="trunkLayoutTestsfastregionsscrollablefirstregionexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/scrollable-first-region-expected.html (0 => 169586)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/scrollable-first-region-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/regions/scrollable-first-region-expected.html        2014-06-04 12:41:27 UTC (rev 169586)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;style&gt;
+            .ahem {
+                font-family: Ahem;
+                font-size: 10px;
+            }
+
+            #region1, #region2 { 
+                border: 5px solid black;
+                position: absolute;
+            }
+
+            #region1 {
+                height: 135px;
+                width: 320px;
+                left: 100px;
+                bottom: 100px;
+            }
+
+            #region2 {
+                overflow: auto;
+                height: 308px;
+                width: 308px;
+                left: 500px;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=133481&quot;&gt;Bug 133481 - REGRESSION: [CSS Regions] Regions with overflow:auto generate scrollbars even if the content flows into the following regions and as such, should not be scrolled&lt;/a&gt;
+        &lt;p&gt;This passes if neither region has scrollbars&lt;/p&gt;
+        &lt;div class=&quot;ahem&quot; id=&quot;region1&quot;&gt;
+            &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent interdum, sapien vitae faucibus suscipit, massa urna sagittis libero, ac imperdiet elit lacus a ligula. Mauris a orci sem. Nullam ullamcorper ornare porttitor. Morbi laoreet pellentesque diam, vitae hendrerit sem fringilla id. Maecenas rutrum lacinia lobortis. Praesent elit lectus,&lt;/p&gt;
+        &lt;/div&gt;
+        &lt;div class=&quot;ahem&quot; id=&quot;region2&quot;&gt;
+            &lt;p style=&quot;margin-top: 0px&quot;&gt;porttitor sed semper vel, fringilla id dolor. Sed lacus nisl, rutrum sit amet euismod a, vulputate quis elit. Fusce commodo dui quis lacus viverra vel egestas velit tempus. Donec ut sapien sit amet purus luctus fermentum. Donec eleifend pretium neque quis bibendum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam congue dapibus mi, id ultricies est sagittis et. Integer posuere, eros vitae laoreet congue, tortor purus euismod nibh, eu porta purus arcu id turpis. Donec vitae ultricies nibh. Nullam in urna dolor, at fringilla lorem. Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/p&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastregionsscrollablefirstregionhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/scrollable-first-region.html (0 => 169586)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/scrollable-first-region.html                                (rev 0)
+++ trunk/LayoutTests/fast/regions/scrollable-first-region.html        2014-06-04 12:41:27 UTC (rev 169586)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;style&gt;
+            .ahem {
+                font-family: Ahem;
+                font-size: 10px;
+            }
+            #content {
+                -webkit-flow-into: flow;
+            }
+
+            #region1, #region2 { 
+                -webkit-flow-from: flow; 
+                border: 5px solid black;
+                overflow: auto;
+                position: absolute;
+            }
+
+            #region1 {
+                height: 135px;
+                width: 320px;
+                left: 100px;
+                bottom: 100px;
+            }
+
+            #region2 {
+                height: 308px;
+                width: 308px;
+                left: 500px;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=133481&quot;&gt;Bug 133481 - REGRESSION: [CSS Regions] Regions with overflow:auto generate scrollbars even if the content flows into the following regions and as such, should not be scrolled&lt;/a&gt;
+        &lt;p&gt;This passes if neither region has scrollbars&lt;/p&gt;
+        &lt;div class=&quot;ahem&quot; id=&quot;content&quot;&gt;
+            &lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent interdum, sapien vitae faucibus suscipit, massa urna sagittis libero, ac imperdiet elit lacus a ligula. Mauris a orci sem. Nullam ullamcorper ornare porttitor. Morbi laoreet pellentesque diam, vitae hendrerit sem fringilla id. Maecenas rutrum lacinia lobortis. Praesent elit lectus, porttitor sed semper vel, fringilla id dolor. Sed lacus nisl, rutrum sit amet euismod a, vulputate quis elit. Fusce commodo dui quis lacus viverra vel egestas velit tempus. Donec ut sapien sit amet purus luctus fermentum. Donec eleifend pretium neque quis bibendum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam congue dapibus mi, id ultricies est sagittis et. Integer posuere, eros vitae laoreet congue, tortor purus euismod nibh, eu porta purus arcu id turpis. Donec vitae ultricies nibh. Nullam in urna dolor, at fringilla lorem. Lorem ipsum dolor sit amet, consectetur adipiscing elit.&lt;/p&gt;
+        &lt;/div&gt;
+        &lt;div class=&quot;ahem&quot; id=&quot;region1&quot;&gt;&lt;/div&gt;
+        &lt;div class=&quot;ahem&quot; id=&quot;region2&quot;&gt;&lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (169585 => 169586)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-06-04 07:25:29 UTC (rev 169585)
+++ trunk/Source/WebCore/ChangeLog        2014-06-04 12:41:27 UTC (rev 169586)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2014-06-04  Radu Stavila  &lt;stavila@adobe.com&gt;
+
+        REGRESSION: [CSS Regions] Regions with overflow:auto generate scrollbars even if the content flows into the following regions and as such, should not be scrolled
+        https://bugs.webkit.org/show_bug.cgi?id=133481
+
+        Reviewed by Antti Koivisto.
+
+        When enlarging the layout overflow of a scrollable region, the portion of the content that flows
+        in the region must be taken into consideration. If the content continues to flow into the next
+        region, the layout overflow of the current region must not be enlarged.
+
+        Test: fast/regions/scrollable-first-region.html
+
+        * rendering/RenderFlowThread.cpp:
+        (WebCore::RenderFlowThread::addRegionsOverflowFromChild):
+
</ins><span class="cx"> 2014-06-03  Benjamin Poulain  &lt;benjamin@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix some corner cases of :hover and :active in quirks mode
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderFlowThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (169585 => 169586)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2014-06-04 07:25:29 UTC (rev 169585)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp        2014-06-04 12:41:27 UTC (rev 169586)
</span><span class="lines">@@ -1424,14 +1424,14 @@
</span><span class="cx">             LayoutUnit spacingAfterLayout = fragmentContainer.paddingAfter() + child-&gt;marginAfter();
</span><span class="cx">             if (isHorizontalWritingMode()) {
</span><span class="cx">                 if (fragmentContainer.scrollsOverflowY()) {
</span><del>-                    LayoutUnit layoutMaxLogicalY = child-&gt;frameRect().maxY() + spacingAfterLayout;
</del><ins>+                    LayoutUnit layoutMaxLogicalY = region-&gt;rectFlowPortionForBox(child, child-&gt;frameRect()).maxY() + spacingAfterLayout;
</ins><span class="cx">                     LayoutUnit maxYDiff = layoutMaxLogicalY - childLayoutOverflowRect.maxY();
</span><span class="cx">                     if (maxYDiff &gt; 0)
</span><span class="cx">                         childLayoutOverflowRect.expand(0, maxYDiff);
</span><span class="cx">                 }
</span><span class="cx">             } else {
</span><span class="cx">                 if (fragmentContainer.scrollsOverflowX()) {
</span><del>-                    LayoutUnit layoutMaxLogicalY = child-&gt;frameRect().maxX() + spacingAfterLayout;
</del><ins>+                    LayoutUnit layoutMaxLogicalY = region-&gt;rectFlowPortionForBox(child, child-&gt;frameRect()).maxX() + spacingAfterLayout;
</ins><span class="cx">                     LayoutUnit maxYDiff = layoutMaxLogicalY - childLayoutOverflowRect.maxX();
</span><span class="cx">                     if (maxYDiff &gt; 0)
</span><span class="cx">                         childLayoutOverflowRect.expand(maxYDiff, 0);
</span></span></pre>
</div>
</div>

</body>
</html>