<!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>[165388] 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/165388">165388</a></dd>
<dt>Author</dt> <dd>stavila@adobe.com</dd>
<dt>Date</dt> <dd>2014-03-10 11:48:49 -0700 (Mon, 10 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[CSS Regions] Hit-testing is not working properly inside scrollable regions
https://bugs.webkit.org/show_bug.cgi?id=130015

Reviewed by Antti Koivisto.

Source/WebCore:

When hit-testing inside the flow thread's layer, the scrolled offset
of the current region must be taken into consideration.

Test: fast/regions/scrollable-regions-hit-testing-inside.html

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

LayoutTests:

Added test for hit-testing inside scrollable regions.

* fast/regions/scrollable-regions-hit-testing-inside-expected.html: Added.
* fast/regions/scrollable-regions-hit-testing-inside.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="#trunkLayoutTestsfastregionsscrollableregionshittestinginsideexpectedhtml">trunk/LayoutTests/fast/regions/scrollable-regions-hit-testing-inside-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastregionsscrollableregionshittestinginsidehtml">trunk/LayoutTests/fast/regions/scrollable-regions-hit-testing-inside.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (165387 => 165388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-03-10 18:41:34 UTC (rev 165387)
+++ trunk/LayoutTests/ChangeLog        2014-03-10 18:48:49 UTC (rev 165388)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-03-10  Radu Stavila  &lt;stavila@adobe.com&gt;
+
+        [CSS Regions] Hit-testing is not working properly inside scrollable regions
+        https://bugs.webkit.org/show_bug.cgi?id=130015
+
+        Reviewed by Antti Koivisto.
+
+        Added test for hit-testing inside scrollable regions.
+
+        * fast/regions/scrollable-regions-hit-testing-inside-expected.html: Added.
+        * fast/regions/scrollable-regions-hit-testing-inside.html: Added.
+
</ins><span class="cx"> 2014-03-10  Hans Muller  &lt;hmuller@adobe.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [CSS Shapes] SVG Image valued shape fails if root element's size is relative
</span></span></pre></div>
<a id="trunkLayoutTestsfastregionsscrollableregionshittestinginsideexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/scrollable-regions-hit-testing-inside-expected.html (0 => 165388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/scrollable-regions-hit-testing-inside-expected.html                                (rev 0)
+++ trunk/LayoutTests/fast/regions/scrollable-regions-hit-testing-inside-expected.html        2014-03-10 18:48:49 UTC (rev 165388)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html style=&quot;font: 16px/1.25 monospace; font-family: Ahem&quot;&gt;
+    &lt;head&gt;
+        &lt;script&gt;
+            onload = function() 
+            {
+                var region = document.getElementById(&quot;region&quot;);
+                region.scrollTop += 150;
+
+                if (window.eventSender) {
+                    eventSender.mouseMoveTo(140, 160);
+                    eventSender.mouseDown(0);
+                    eventSender.leapForward(500);
+                    eventSender.mouseUp(0);
+                }
+            }
+        &lt;/script&gt;
+
+        &lt;style&gt;
+            #container {
+                border: 2px solid green;
+                height: 300px;
+                overflow: visible;
+            }
+
+            #region {
+                width: 600px;
+                height: 200px;
+                border: thick solid red;
+                padding: 50px;
+                overflow: scroll;
+            }
+
+            #innerDiv {
+                width: 100px;
+                height: 100px;
+                background-color: red;
+                margin-left: 30px;
+            }
+
+            #innerDiv:hover
+            {
+                background-color: green;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+
+    &lt;body&gt;
+        &lt;a style=&quot;font-size: 14px&quot; href=&quot;https://bugs.webkit.org/show_bug.cgi?id=130015&quot;&gt;[CSS Regions] Hit-testing is not working properly inside scrollable regions&lt;/a&gt;
+        &lt;p&gt;This test passes if the red square turns green when hovered, even if the region is scrolled.&lt;/p&gt;
+
+        &lt;div id=&quot;region&quot;&gt;
+            &lt;div id=&quot;container&quot;&gt;
+                &lt;div&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.&lt;/div&gt;
+                &lt;div id=&quot;innerDiv&quot;&gt;&lt;/div&gt;
+                &lt;div style=&quot;color:red&quot;&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;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastregionsscrollableregionshittestinginsidehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/regions/scrollable-regions-hit-testing-inside.html (0 => 165388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/regions/scrollable-regions-hit-testing-inside.html                                (rev 0)
+++ trunk/LayoutTests/fast/regions/scrollable-regions-hit-testing-inside.html        2014-03-10 18:48:49 UTC (rev 165388)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html style=&quot;font: 16px/1.25 monospace; font-family: Ahem&quot;&gt;
+    &lt;head&gt;
+        &lt;script&gt;
+            onload = function() 
+            {
+                var region = document.getElementById(&quot;region&quot;);
+                region.scrollTop += 150;
+
+                if (window.eventSender) {
+                    eventSender.mouseMoveTo(140, 160);
+                    eventSender.mouseDown(0);
+                    eventSender.leapForward(500);
+                    eventSender.mouseUp(0);
+                }
+            }
+        &lt;/script&gt;
+
+        &lt;style&gt;
+            #container {
+                border: 2px solid green;
+                height: 300px;
+                overflow: visible;
+                -webkit-flow-into: flow;
+            }
+
+            #region {
+                width: 600px;
+                height: 200px;
+                -webkit-flow-from: flow;
+                border: thick solid red;
+                padding: 50px;
+                overflow: scroll;
+            }
+
+            #innerDiv {
+                width: 100px;
+                height: 100px;
+                background-color: red;
+                margin-left: 30px;
+            }
+
+            #innerDiv:hover
+            {
+                background-color: green;
+            }
+        &lt;/style&gt;
+    &lt;/head&gt;
+
+    &lt;body&gt;
+        &lt;a style=&quot;font-size: 14px&quot; href=&quot;https://bugs.webkit.org/show_bug.cgi?id=130015&quot;&gt;[CSS Regions] Hit-testing is not working properly inside scrollable regions&lt;/a&gt;
+        &lt;p&gt;This test passes if the red square turns green when hovered, even if the region is scrolled.&lt;/p&gt;
+
+        &lt;div id=&quot;region&quot;&gt;&lt;/div&gt;
+
+        &lt;div id=&quot;container&quot;&gt;
+            &lt;div&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.&lt;/div&gt;
+            &lt;div id=&quot;innerDiv&quot;&gt;&lt;/div&gt;
+            &lt;div style=&quot;color:red&quot;&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;/div&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 (165387 => 165388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-03-10 18:41:34 UTC (rev 165387)
+++ trunk/Source/WebCore/ChangeLog        2014-03-10 18:48:49 UTC (rev 165388)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2014-03-10  Radu Stavila  &lt;stavila@adobe.com&gt;
+
+        [CSS Regions] Hit-testing is not working properly inside scrollable regions
+        https://bugs.webkit.org/show_bug.cgi?id=130015
+
+        Reviewed by Antti Koivisto.
+
+        When hit-testing inside the flow thread's layer, the scrolled offset
+        of the current region must be taken into consideration.
+
+        Test: fast/regions/scrollable-regions-hit-testing-inside.html
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::calculateClipRects):
+
</ins><span class="cx"> 2014-03-10  Hans Muller  &lt;hmuller@adobe.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [CSS Shapes] SVG Image valued shape fails if root element's size is relative
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (165387 => 165388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-03-10 18:41:34 UTC (rev 165387)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-03-10 18:48:49 UTC (rev 165388)
</span><span class="lines">@@ -6876,6 +6876,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     LayoutRect regionContentBox = toRenderBlockFlow(&amp;renderer())-&gt;contentBoxRect();
</span><ins>+    IntSize scrolledContentOffset = region-&gt;fragmentContainer().hasOverflowClip() ? region-&gt;fragmentContainer().scrolledContentOffset() : IntSize();
</ins><span class="cx"> 
</span><span class="cx">     RenderLayer* resultLayer = 0;
</span><span class="cx">     for (int i = fragments.size() - 1; i &gt;= 0; --i) {
</span><span class="lines">@@ -6884,7 +6885,7 @@
</span><span class="cx">         if (!fragment.backgroundRect.intersects(hitTestLocation))
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        LayoutSize hitTestOffset = portionLocation - (fragment.layerBounds.location() + regionContentBox.location());
</del><ins>+        LayoutSize hitTestOffset = portionLocation - (fragment.layerBounds.location() + regionContentBox.location()) + scrolledContentOffset;
</ins><span class="cx"> 
</span><span class="cx">         // Always ignore clipping, since the RenderFlowThread has nothing to do with the bounds of the FrameView.
</span><span class="cx">         HitTestRequest newRequest(request.type() | HitTestRequest::IgnoreClipping | HitTestRequest::DisallowShadowContent);
</span></span></pre>
</div>
</div>

</body>
</html>