<!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>[169120] 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/169120">169120</a></dd>
<dt>Author</dt> <dd>stavila@adobe.com</dd>
<dt>Date</dt> <dd>2014-05-20 10:38:04 -0700 (Tue, 20 May 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>REGRESSION: [CSS Regions] Content flowed directly into the flow thread that ends up in the second region is not properly repainted
https://bugs.webkit.org/show_bug.cgi?id=133111
Reviewed by David Hyatt.
Source/WebCore:
When computing the repaint rect of an element flowed into a flow thread, if the element is flowed directly into
the flow thread (meaning its containing block is the flow thread itself), the region's position within the flow
must no longer be taken into consideration, because its already included in the element's |topLeft|.
Test: fast/regions/hover-element-flowed-second-region.html
* rendering/RenderBox.cpp:
(WebCore::RenderBox::computeRectForRepaint):
LayoutTests:
Added test for the correct repaint of an element flowed directly into the second region of a flow thread.
* fast/regions/hover-element-flowed-second-region-expected.html: Added.
* fast/regions/hover-element-flowed-second-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="#trunkSourceWebCorerenderingRenderBoxcpp">trunk/Source/WebCore/rendering/RenderBox.cpp</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastregionshoverelementflowedsecondregionexpectedhtml">trunk/LayoutTests/fast/regions/hover-element-flowed-second-region-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastregionshoverelementflowedsecondregionhtml">trunk/LayoutTests/fast/regions/hover-element-flowed-second-region.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (169119 => 169120)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-05-20 17:29:35 UTC (rev 169119)
+++ trunk/LayoutTests/ChangeLog        2014-05-20 17:38:04 UTC (rev 169120)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-05-20 Radu Stavila <stavila@adobe.com>
+
+ REGRESSION: [CSS Regions] Content flowed directly into the flow thread that ends up in the second region is not properly repainted
+ https://bugs.webkit.org/show_bug.cgi?id=133111
+
+ Reviewed by David Hyatt.
+
+ Added test for the correct repaint of an element flowed directly into the second region of a flow thread.
+
+ * fast/regions/hover-element-flowed-second-region-expected.html: Added.
+ * fast/regions/hover-element-flowed-second-region.html: Added.
+
</ins><span class="cx"> 2014-05-20 Prashant Hiremath <hiremathprashants@gmail.com>
</span><span class="cx">
</span><span class="cx"> Only set title on SVG documents
</span></span></pre></div>
<a id="trunkLayoutTestsfastregionshoverelementflowedsecondregionexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/hover-element-flowed-second-region-expected.html (0 => 169120)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/hover-element-flowed-second-region-expected.html         (rev 0)
+++ trunk/LayoutTests/fast/regions/hover-element-flowed-second-region-expected.html        2014-05-20 17:38:04 UTC (rev 169120)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+<!DOCTYPE html>
+
+<head>
+ <style>
+ .region {
+ -webkit-flow-from: flow;
+ border: 2px solid blue;
+ width: 100px;
+ height: 100px;
+ margin: 10px;
+ }
+ #region2 {
+ margin-top: 10px;
+ }
+ .content {
+ -webkit-flow-into: flow;
+ background-color: green;
+ width: 100px;
+ height: 100px;
+ }
+
+ #content2 {
+ background-color: red;
+ }
+ </style>
+</head>
+
+<body>
+ <a href="https://bugs.webkit.org/show_bug.cgi?id=133111">Bug 133111 - [CSS Regions] Content flowed directly into the flow thread that ends up in the second region is not properly repainted</a>
+ <p>When hovered, the <span style="color:green"><b>green</b></span> content should turn <span style="color:red"><b>red</b></span>.</p>
+ <div class="region" id="region1"></div>
+ <div class="region" id="region2"></div>
+ <div class="content" id="content1"></div>
+ <div class="content" id="content2"></div>
+</body>
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsfastregionshoverelementflowedsecondregionhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/hover-element-flowed-second-region.html (0 => 169120)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/hover-element-flowed-second-region.html         (rev 0)
+++ trunk/LayoutTests/fast/regions/hover-element-flowed-second-region.html        2014-05-20 17:38:04 UTC (rev 169120)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+<!DOCTYPE html>
+
+<head>
+ <style>
+ .region {
+ -webkit-flow-from: flow;
+ border: 2px solid blue;
+ width: 100px;
+ height: 100px;
+ margin: 10px;
+ }
+ #region2 {
+ margin-top: 10px;
+ }
+ .content {
+ -webkit-flow-into: flow;
+ background-color: green;
+ width: 100px;
+ height: 100px;
+ }
+
+ .content:hover {
+ background-color: red;
+ }
+ </style>
+</head>
+
+<script type="text/javascript">
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ function beginTest() {
+ if (window.eventSender) {
+
+ // move mouse on the hover test object
+ var content2 = document.getElementById("region2");
+ eventSender.mouseMoveTo(content2.offsetLeft + 20, content2.offsetTop + 20);
+ eventSender.mouseDown(0);
+
+ testRunner.notifyDone();
+ }
+ }
+</script>
+
+<body onload="beginTest()">
+ <a href="https://bugs.webkit.org/show_bug.cgi?id=133111">Bug 133111 - [CSS Regions] Content flowed directly into the flow thread that ends up in the second region is not properly repainted</a>
+ <p>When hovered, the <span style="color:green"><b>green</b></span> content should turn <span style="color:red"><b>red</b></span>.</p>
+ <div class="region" id="region1"></div>
+ <div class="region" id="region2"></div>
+ <div class="content" id="content1"></div>
+ <div class="content" id="content2"></div>
+</body>
</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 (169119 => 169120)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-05-20 17:29:35 UTC (rev 169119)
+++ trunk/Source/WebCore/ChangeLog        2014-05-20 17:38:04 UTC (rev 169120)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2014-05-20 Radu Stavila <stavila@adobe.com>
+
+ REGRESSION: [CSS Regions] Content flowed directly into the flow thread that ends up in the second region is not properly repainted
+ https://bugs.webkit.org/show_bug.cgi?id=133111
+
+ Reviewed by David Hyatt.
+
+ When computing the repaint rect of an element flowed into a flow thread, if the element is flowed directly into
+ the flow thread (meaning its containing block is the flow thread itself), the region's position within the flow
+ must no longer be taken into consideration, because its already included in the element's |topLeft|.
+
+ Test: fast/regions/hover-element-flowed-second-region.html
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::computeRectForRepaint):
+
</ins><span class="cx"> 2014-05-20 Alex Christensen <achristensen@webkit.org>
</span><span class="cx">
</span><span class="cx"> Fix web timing assertion failure.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (169119 => 169120)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp        2014-05-20 17:29:35 UTC (rev 169119)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2014-05-20 17:38:04 UTC (rev 169120)
</span><span class="lines">@@ -2140,7 +2140,9 @@
</span><span class="cx"> // elements because their absolute position already pushes them down through
</span><span class="cx"> // the regions so adding this here and then adding the topLeft again would cause
</span><span class="cx"> // us to add the height twice.
</span><del>- if (o->isOutOfFlowRenderFlowThread() && position != AbsolutePosition) {
</del><ins>+ // The same logic applies for elements flowed directly into the flow thread. Their topLeft member
+ // will already contain the portion rect of the region.
+ if (o->isOutOfFlowRenderFlowThread() && position != AbsolutePosition && containingBlock() != flowThreadContainingBlock()) {
</ins><span class="cx"> RenderRegion* firstRegion = nullptr;
</span><span class="cx"> RenderRegion* lastRegion = nullptr;
</span><span class="cx"> if (toRenderFlowThread(o)->getRegionRangeForBox(this, firstRegion, lastRegion))
</span></span></pre>
</div>
</div>
</body>
</html>