<!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>[162115] 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/162115">162115</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2014-01-15 23:00:05 -0800 (Wed, 15 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[CSS Regions] Fix painting when the composited region has overflow:hidden
https://bugs.webkit.org/show_bug.cgi?id=124887

Patch by Mihai Maerean &lt;mmaerean@adobe.com&gt; on 2014-01-15
Reviewed by Alexandru Chiculita.

Source/WebCore:

When the layer of the region is composited, the region receives a GraphicsLayer of its own
so the clipping coordinates (caused by overflow:hidden) must be relative to the
GraphicsLayer coordinates in which the region gets painted.

Also, while the painting is done relative to the location of the region's content box, the
clipping is bound to the padding box of the region.

Tests: compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div.html
       compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region.html

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

LayoutTests:

* compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div.html: Added.
* compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div-expected.html: Added.
* compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region.html: Added.
* compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region-expected.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="#trunkLayoutTestscompositingregionspaintinsidecompositedregionoverflowhiddenversusdivexpectedhtml">trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div-expected.html</a></li>
<li><a href="#trunkLayoutTestscompositingregionspaintinsidecompositedregionoverflowhiddenversusdivhtml">trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div.html</a></li>
<li><a href="#trunkLayoutTestscompositingregionspaintinsidecompositedregionoverflowhiddenversusregionexpectedhtml">trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region-expected.html</a></li>
<li><a href="#trunkLayoutTestscompositingregionspaintinsidecompositedregionoverflowhiddenversusregionhtml">trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (162114 => 162115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-01-16 06:42:39 UTC (rev 162114)
+++ trunk/LayoutTests/ChangeLog        2014-01-16 07:00:05 UTC (rev 162115)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-01-15  Mihai Maerean  &lt;mmaerean@adobe.com&gt;
+
+        [CSS Regions] Fix painting when the composited region has overflow:hidden
+        https://bugs.webkit.org/show_bug.cgi?id=124887
+
+        Reviewed by Alexandru Chiculita.
+
+        * compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div.html: Added.
+        * compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div-expected.html: Added.
+        * compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region.html: Added.
+        * compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region-expected.html: Added.
+
</ins><span class="cx"> 2014-01-15  Ryuan Choi  &lt;ryuan.choi@samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed. EFL Gardening.
</span></span></pre></div>
<a id="trunkLayoutTestscompositingregionspaintinsidecompositedregionoverflowhiddenversusdivexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div-expected.html (0 => 162115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div-expected.html                                (rev 0)
+++ trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div-expected.html        2014-01-16 07:00:05 UTC (rev 162115)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Expected Result - Bug #124887: [CSS Regions] Fix painting when the composited region has overflow:hidden&lt;/title&gt;
+        &lt;style&gt;
+            html {
+                -webkit-writing-mode: horizontal-tb;
+            }
+            .content {
+                margin: -5px -10px -15px -20px;
+            }
+            .transformed {
+                -webkit-transform: translateZ(1px);
+            }
+            .region {
+                width: 600px;
+                height: 100px;
+                overflow: hidden;
+                box-shadow: 0px 0px 0px 10px Green;
+                padding: 5px 10px 15px 20px;
+                margin: 10px 15px 20px 5px;
+                border-width: 15px 20px 5px 10px;
+                border-style: solid;
+                border-color: #888;
+            }
+            html {
+                -webkit-font-smoothing:none;
+                font-size: 16px;
+                line-height: 16px;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+
+        &lt;div class=&quot;region transformed&quot;&gt;
+            &lt;div class=&quot;content&quot;&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.
+                &lt;br/&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.
+            &lt;/div&gt;
+        &lt;/div&gt;
+
+        &lt;p&gt;Test passes if the content of the composited region is painted in its entirety (in the region with overflow:hidden) as in the div.&lt;/p&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscompositingregionspaintinsidecompositedregionoverflowhiddenversusdivhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div.html (0 => 162115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div.html                                (rev 0)
+++ trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div.html        2014-01-16 07:00:05 UTC (rev 162115)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Test - Bug #124887: [CSS Regions] Fix painting when the composited region has overflow:hidden&lt;/title&gt;
+        &lt;style&gt;
+            .content {
+                -webkit-flow-into: theFlow;
+                margin: -5px -10px -15px -20px;
+            }
+            .transformed {
+                -webkit-transform: translateZ(1px);
+            }
+            .region {
+                -webkit-flow-from: theFlow;
+                width: 600px;
+                height: 100px;
+                overflow: hidden;
+                box-shadow: 0px 0px 0px 10px Green;
+                padding: 5px 10px 15px 20px;
+                margin: 10px 15px 20px 5px;
+                border-width: 15px 20px 5px 10px;
+                border-style: solid;
+                border-color: #888;
+            }
+            html {
+                -webkit-font-smoothing:none;
+                font-size: 16px;
+                line-height: 16px;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;div class=&quot;content&quot;&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.
+            &lt;br/&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.
+        &lt;/div&gt;
+
+        &lt;div class=&quot;region transformed&quot;&gt;&lt;/div&gt;
+
+        &lt;p&gt;Test passes if the content of the composited region is painted in its entirety (in the region with overflow:hidden) as in the div.&lt;/p&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscompositingregionspaintinsidecompositedregionoverflowhiddenversusregionexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region-expected.html (0 => 162115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region-expected.html                                (rev 0)
+++ trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region-expected.html        2014-01-16 07:00:05 UTC (rev 162115)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Expected Result - Bug #124887: [CSS Regions] Fix painting when the composited region has overflow:hidden&lt;/title&gt;
+        &lt;style&gt;
+            .content {
+                -webkit-flow-into: theFlow;
+                margin: -5px -10px -15px -20px;
+            }
+            .transformed {
+                -webkit-transform: translateZ(1px);
+            }
+            .region {
+                -webkit-flow-from: theFlow;
+                width: 600px;
+                height: 100px;
+                box-shadow: 0px 0px 0px 10px Green;
+                padding: 5px 10px 15px 20px;
+                margin: 10px 15px 20px 5px;
+                border-width: 15px 20px 5px 10px;
+                border-style: solid;
+                border-color: #888;
+            }
+            html {
+                -webkit-font-smoothing:none;
+                font-size: 16px;
+                line-height: 16px;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;div class=&quot;content&quot;&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.
+            &lt;br/&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.
+        &lt;/div&gt;
+
+        &lt;div class=&quot;region transformed&quot;&gt;&lt;/div&gt;
+
+        &lt;p&gt;Test passes if the content of the composited region is painted in its entirety (in the region with overflow:hidden) as in the region that doesn't have overflow:hidden .&lt;/p&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestscompositingregionspaintinsidecompositedregionoverflowhiddenversusregionhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region.html (0 => 162115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region.html                                (rev 0)
+++ trunk/LayoutTests/compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region.html        2014-01-16 07:00:05 UTC (rev 162115)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;Test - Bug #124887: [CSS Regions] Fix painting when the composited region has overflow:hidden&lt;/title&gt;
+        &lt;style&gt;
+            .content {
+                -webkit-flow-into: theFlow;
+                margin: -5px -10px -15px -20px;
+            }
+            .transformed {
+                -webkit-transform: translateZ(1px);
+            }
+            .region {
+                overflow: hidden;
+
+                -webkit-flow-from: theFlow;
+                width: 600px;
+                height: 100px;
+                box-shadow: 0px 0px 0px 10px Green;
+                padding: 5px 10px 15px 20px;
+                margin: 10px 15px 20px 5px;
+                border-width: 15px 20px 5px 10px;
+                border-style: solid;
+                border-color: #888;
+            }
+            html {
+                -webkit-font-smoothing:none;
+                font-size: 16px;
+                line-height: 16px;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;div class=&quot;content&quot;&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.
+            &lt;br/&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.
+        &lt;/div&gt;
+
+        &lt;div class=&quot;region transformed&quot;&gt;&lt;/div&gt;
+
+        &lt;p&gt;Test passes if the content of the composited region is painted in its entirety (in the region with overflow:hidden) as in the region that doesn't have overflow:hidden .&lt;/p&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 (162114 => 162115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-01-16 06:42:39 UTC (rev 162114)
+++ trunk/Source/WebCore/ChangeLog        2014-01-16 07:00:05 UTC (rev 162115)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2014-01-15  Mihai Maerean  &lt;mmaerean@adobe.com&gt;
+
+        [CSS Regions] Fix painting when the composited region has overflow:hidden
+        https://bugs.webkit.org/show_bug.cgi?id=124887
+
+        Reviewed by Alexandru Chiculita.
+
+        When the layer of the region is composited, the region receives a GraphicsLayer of its own
+        so the clipping coordinates (caused by overflow:hidden) must be relative to the
+        GraphicsLayer coordinates in which the region gets painted.
+
+        Also, while the painting is done relative to the location of the region's content box, the
+        clipping is bound to the padding box of the region.
+
+        Tests: compositing/regions/paint-inside-composited-region-overflow-hidden-versus-div.html
+               compositing/regions/paint-inside-composited-region-overflow-hidden-versus-region.html
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::paintFlowThreadIfRegion):
+
</ins><span class="cx"> 2014-01-15  Benjamin Poulain  &lt;bpoulain@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Move user agent code to WebCore and unify some code between OS X and iOS
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (162114 => 162115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-01-16 06:42:39 UTC (rev 162114)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-01-16 07:00:05 UTC (rev 162115)
</span><span class="lines">@@ -6958,36 +6958,42 @@
</span><span class="cx">         return;
</span><span class="cx">     
</span><span class="cx">     RenderBlockFlow* renderNamedFlowFragmentContainer = toRenderBlockFlow(&amp;renderer());
</span><del>-    RenderNamedFlowFragment* region = renderNamedFlowFragmentContainer-&gt;renderNamedFlowFragment();
-    if (!region-&gt;isValid())
</del><ins>+    RenderNamedFlowFragment* flowFragment = renderNamedFlowFragmentContainer-&gt;renderNamedFlowFragment();
+    if (!flowFragment-&gt;isValid())
</ins><span class="cx">         return;
</span><span class="cx">     
</span><span class="cx">     ClipRect regionClipRect;
</span><del>-    if (paintingInfo.rootLayer != this &amp;&amp; parent()) {
-        ClipRectsContext clipRectsContext(paintingInfo.rootLayer, region,
-            (paintFlags &amp; PaintLayerTemporaryClipRects) ? TemporaryClipRects : PaintingClipRects,
-            IgnoreOverlayScrollbarSize, (isPaintingOverflowContents) ? IgnoreOverflowClip : RespectOverflowClip);
-        regionClipRect = backgroundClipRect(clipRectsContext);
-    } else
-        regionClipRect = dirtyRect;
</del><ins>+    RenderNamedFlowThread* flowThread = flowFragment-&gt;namedFlowThread();
+    RenderLayer* flowThreadLayer = flowThread-&gt;layer();
+    bool isLastRegionWithRegionFragmentBreak = (flowFragment-&gt;isLastRegion() &amp;&amp; flowFragment-&gt;style().regionFragment() == BreakRegionFragment);
+    if (flowFragment-&gt;hasOverflowClip() || isLastRegionWithRegionFragmentBreak) {
+        regionClipRect = renderNamedFlowFragmentContainer-&gt;paddingBoxRect();
</ins><span class="cx"> 
</span><del>-    RenderNamedFlowThread* flowThread = region-&gt;namedFlowThread();
-    LayoutRect regionContentBox = renderNamedFlowFragmentContainer-&gt;contentBoxRect();
-    
-    RenderLayer* flowThreadLayer = flowThread-&gt;layer();
-    bool isLastRegionWithRegionFragmentBreak = (region-&gt;isLastRegion() &amp;&amp; region-&gt;style().regionFragment() == BreakRegionFragment);
-    if (region-&gt;hasOverflowClip() || isLastRegionWithRegionFragmentBreak) {
-        LayoutPoint regionOffsetFromRoot;
-        convertToLayerCoords(flowThreadLayer, regionOffsetFromRoot);
-        regionClipRect = regionContentBox;
-        regionClipRect.moveBy(regionOffsetFromRoot);
</del><ins>+        // When the layer of the flow fragment's container is composited, the flow fragment container receives a
+        // GraphicsLayer of its own so the clipping coordinates (caused by overflow:hidden) must be relative to the
+        // GraphicsLayer coordinates in which the fragment gets painted. So what is computed so far is enough.
+        // If the layer of the flowFragment is not composited, then we change the coordinates to be relative to the flow
+        // thread's layer.
+        if (!isComposited()) {
+            LayoutPoint regionOffsetFromRoot;
+            convertToLayerCoords(flowThreadLayer, regionOffsetFromRoot);
+            regionClipRect.moveBy(regionOffsetFromRoot);
+        }
+    } else {
+        if (paintingInfo.rootLayer != this &amp;&amp; parent()) {
+            ClipRectsContext clipRectsContext(paintingInfo.rootLayer, flowFragment,
+                (paintFlags &amp; PaintLayerTemporaryClipRects) ? TemporaryClipRects : PaintingClipRects,
+                IgnoreOverlayScrollbarSize, (isPaintingOverflowContents) ? IgnoreOverflowClip : RespectOverflowClip);
+            regionClipRect = backgroundClipRect(clipRectsContext);
+        } else
+            regionClipRect = dirtyRect;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Optimize clipping for the single fragment case.
</span><span class="cx">     if (!regionClipRect.isEmpty() &amp;&amp; regionClipRect != LayoutRect::infiniteRect())
</span><span class="cx">         clipToRect(paintingInfo.rootLayer, context, paintingInfo.paintDirtyRect, regionClipRect);
</span><span class="cx"> 
</span><del>-    flowThreadLayer-&gt;paintNamedFlowThreadInsideRegion(context, region, paintingInfo.paintDirtyRect, paintOffset, paintingInfo.paintBehavior, paintFlags);
</del><ins>+    flowThreadLayer-&gt;paintNamedFlowThreadInsideRegion(context, flowFragment, paintingInfo.paintDirtyRect, paintOffset, paintingInfo.paintBehavior, paintFlags);
</ins><span class="cx"> 
</span><span class="cx">     if (!regionClipRect.isEmpty() &amp;&amp; regionClipRect != LayoutRect::infiniteRect())
</span><span class="cx">         restoreClip(context, paintingInfo.paintDirtyRect, regionClipRect);
</span></span></pre>
</div>
</div>

</body>
</html>