<!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>[164600] 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/164600">164600</a></dd>
<dt>Author</dt> <dd>stavila@adobe.com</dd>
<dt>Date</dt> <dd>2014-02-24 12:51:05 -0800 (Mon, 24 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[CSS Regions] Relative positioned elements overflowing the region do not get painted into the next tile
https://bugs.webkit.org/show_bug.cgi?id=129254

Reviewed by Antti Koivisto.

Source/WebCore:

The painting of the region's layer should not be aborted so early if the region's fragment shouldn't be painted
because that would prevent all the layer's children from being painted.

Another problem this patch addresses is that clipping should also be performed when the clip rect is empty,
which is what happens when painting in a tile in which the flowed element would normally be painted
if it wasn't clipped by the region.

Test: fast/regions/content-relative-next-tile.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintFlowThreadIfRegionForFragments):

LayoutTests:

Added test for the painting across tiles of relative positioned elements flowed into regions.

* fast/regions/content-relative-next-tile-expected.html: Added.
* fast/regions/content-relative-next-tile.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="#trunkSourceWebCorerenderingRenderLayercpp">trunk/Source/WebCore/rendering/RenderLayer.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastregionscontentrelativenexttileexpectedhtml">trunk/LayoutTests/fast/regions/content-relative-next-tile-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastregionscontentrelativenexttilehtml">trunk/LayoutTests/fast/regions/content-relative-next-tile.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (164599 => 164600)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-02-24 20:31:04 UTC (rev 164599)
+++ trunk/LayoutTests/ChangeLog        2014-02-24 20:51:05 UTC (rev 164600)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-02-24  Radu Stavila  &lt;stavila@adobe.com&gt;
+
+        [CSS Regions] Relative positioned elements overflowing the region do not get painted into the next tile
+        https://bugs.webkit.org/show_bug.cgi?id=129254
+
+        Reviewed by Antti Koivisto.
+
+        Added test for the painting across tiles of relative positioned elements flowed into regions.
+
+        * fast/regions/content-relative-next-tile-expected.html: Added.
+        * fast/regions/content-relative-next-tile.html: Added.
+
</ins><span class="cx"> 2014-02-24  Dirk Schulze  &lt;krit@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Transform more clip-path pixel tests to reference tests
</span></span></pre></div>
<a id="trunkLayoutTestsfastregionscontentrelativenexttileexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/content-relative-next-tile-expected.html (0 => 164600)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/content-relative-next-tile-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/regions/content-relative-next-tile-expected.html        2014-02-24 20:51:05 UTC (rev 164600)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;style&gt;
+    #region {
+        border: 4px solid brown;
+        padding: 5px;
+        position: relative;
+        top: 300px;
+    }
+
+    #content {
+        border: 2px solid green;
+        color: green;
+        width: 210px;
+        height: 150px;
+        padding: 3px;
+        position: relative;
+        top: 100px;
+    }
+
+    #firstTile {
+        margin: 0px;
+        position: absolute;
+        left: 0px;
+        top: 0px;
+        width: 512px;
+        height: 512px;
+        border: 2px solid blue;
+        border-top: none;
+        border-left: none;
+    }
+&lt;/style&gt;
+
+&lt;body&gt;
+    &lt;div id=&quot;firstTile&quot;&gt;&lt;/div&gt;
+    &lt;div style=&quot;position:absolute&quot;&gt;
+        &lt;div&gt;This tests that &lt;span style=&quot;color:green&quot;&gt;relative-positioned elements&lt;/span&gt; flowed into &lt;span style=&quot;color:brown&quot;&gt;a region&lt;/span&gt; are properly painted across &lt;span style=&quot;color:blue&quot;&gt;different tiles&lt;/span&gt;&lt;/div&gt;
+        &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=129254&quot;&gt;Bug 129254&lt;/a&gt;
+    &lt;/div&gt;
+
+    &lt;div id=&quot;region&quot;&gt;
+        &lt;div id=&quot;content&quot;&gt;
+            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. &lt;span style=&quot;color:brown&quot;&gt;&lt;b&gt;THE END&lt;/b&gt;&lt;/span&gt;.
+        &lt;/div&gt;
+    &lt;/div&gt;
+&lt;/body&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsfastregionscontentrelativenexttilehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/content-relative-next-tile.html (0 => 164600)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/content-relative-next-tile.html                                (rev 0)
+++ trunk/LayoutTests/fast/regions/content-relative-next-tile.html        2014-02-24 20:51:05 UTC (rev 164600)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;style&gt;
+    #region {
+        -webkit-flow-from: flow;
+        border: 4px solid brown;
+        padding: 5px;
+        position: relative;
+        top: 300px;
+    }
+
+    #content {
+        -webkit-flow-into: flow;
+        border: 2px solid green;
+        color: green;
+        width: 210px;
+        height: 150px;
+        padding: 3px;
+        position: relative;
+        top: 100px;
+    }
+
+    #firstTile {
+        margin: 0px;
+        position: absolute;
+        left: 0px;
+        top: 0px;
+        width: 512px;
+        height: 512px;
+        border: 2px solid blue;
+        border-top: none;
+        border-left: none;
+    }
+&lt;/style&gt;
+
+&lt;body&gt;
+    &lt;div id=&quot;firstTile&quot;&gt;&lt;/div&gt;
+    &lt;div style=&quot;position:absolute&quot;&gt;
+        &lt;div&gt;This tests that &lt;span style=&quot;color:green&quot;&gt;relative-positioned elements&lt;/span&gt; flowed into &lt;span style=&quot;color:brown&quot;&gt;a region&lt;/span&gt; are properly painted across &lt;span style=&quot;color:blue&quot;&gt;different tiles&lt;/span&gt;&lt;/div&gt;
+        &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=129254&quot;&gt;Bug 129254&lt;/a&gt;
+    &lt;/div&gt;
+
+    &lt;div id=&quot;region&quot;&gt;&lt;/div&gt;
+
+    &lt;div id=&quot;content&quot;&gt;
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. &lt;span style=&quot;color:brown&quot;&gt;&lt;b&gt;THE END&lt;/b&gt;&lt;/span&gt;.
+    &lt;/div&gt;
+&lt;/body&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 (164599 => 164600)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-02-24 20:31:04 UTC (rev 164599)
+++ trunk/Source/WebCore/ChangeLog        2014-02-24 20:51:05 UTC (rev 164600)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2014-02-24  Radu Stavila  &lt;stavila@adobe.com&gt;
+
+        [CSS Regions] Relative positioned elements overflowing the region do not get painted into the next tile
+        https://bugs.webkit.org/show_bug.cgi?id=129254
+
+        Reviewed by Antti Koivisto.
+
+        The painting of the region's layer should not be aborted so early if the region's fragment shouldn't be painted
+        because that would prevent all the layer's children from being painted.
+
+        Another problem this patch addresses is that clipping should also be performed when the clip rect is empty,
+        which is what happens when painting in a tile in which the flowed element would normally be painted
+        if it wasn't clipped by the region.
+
+        Test: fast/regions/content-relative-next-tile.html
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::paintFlowThreadIfRegionForFragments):
+
</ins><span class="cx"> 2014-02-24  Renata Hodovan  &lt;rhodovan.u-szeged@partner.samsung.com&gt;
</span><span class="cx">         
</span><span class="cx">         Get rid of the unused 'immediate' parameters from repaint related functions
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (164599 => 164600)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-02-24 20:31:04 UTC (rev 164599)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-02-24 20:51:05 UTC (rev 164600)
</span><span class="lines">@@ -6821,14 +6821,11 @@
</span><span class="cx">     for (size_t i = 0; i &lt; fragments.size(); ++i) {
</span><span class="cx">         const LayerFragment&amp; fragment = fragments.at(i);
</span><span class="cx"> 
</span><del>-        if (!fragment.shouldPaintContent)
-            continue;
-
</del><span class="cx">         ClipRect clipRect = fragment.backgroundRect;
</span><span class="cx">         if (flowFragment-&gt;shouldClipFlowThreadContent())
</span><span class="cx">             clipRect.intersect(regionClipRect);
</span><span class="cx"> 
</span><del>-        bool shouldClip = !clipRect.isEmpty() &amp;&amp; clipRect != LayoutRect::infiniteRect();
</del><ins>+        bool shouldClip = (clipRect != LayoutRect::infiniteRect());
</ins><span class="cx">         // Optimize clipping for the single fragment case.
</span><span class="cx">         if (shouldClip)
</span><span class="cx">             clipToRect(paintingInfo.rootLayer, context, paintingInfo.paintDirtyRect, clipRect);
</span></span></pre>
</div>
</div>

</body>
</html>