<!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>[185201] 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/185201">185201</a></dd>
<dt>Author</dt> <dd>bfulgham@apple.com</dd>
<dt>Date</dt> <dd>2015-06-04 10:53:24 -0700 (Thu, 04 Jun 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>REGRESSION (<a href="http://trac.webkit.org/projects/webkit/changeset/181879">r181879</a>): Scrolling order on pages with focused iframe is broken.
https://bugs.webkit.org/show_bug.cgi?id=145637
&lt;rdar://problem/20635581&gt;

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe.html

This page revealed a bug in our RenderBox code caused by the mismatch between
our scrolling units, which are all integrally snapped, with our client height
and widths, which are not snapped at all. 
        
In certain cases, the client height would have a small subpixel difference compared
to the scroll height, which would cause WebKit to believe it was scrollable. When
this happened, it would get stuck latched to this element and block scrolling events. 

* page/Frame.cpp:
(WebCore::Frame::scrollOverflowLayer): Use roundToInt for clientWidth and clientHeight,
rather than integer truncation.
* rendering/RenderBox.cpp:
(WebCore::RenderBox::canBeScrolledAndHasScrollableArea): Need to round clientWidth
and clientHeight to compare with scrollWidth/scrollHeight.
* rendering/RenderBox.h:
(WebCore::RenderBox::hasScrollableOverflowX): Ditto.
(WebCore::RenderBox::hasScrollableOverflowY): Ditto.
* rendering/RenderMarquee.cpp:
(WebCore::RenderMarquee::computePosition): Use roundToInt for clientWidth and
clientHeight, rather than integer truncation.

LayoutTests:

* platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe.html: Added.
* platform/mac-wk2/tiled-drawing/scrolling/resources/inner_content.html: Added.
* platform/mac-wk2/tiled-drawing/scrolling/resources/testContent.html: Added.
* platform/mac-wk2/tiled-drawing/scrolling/resources/testImage.png: 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="#trunkSourceWebCorepageFramecpp">trunk/Source/WebCore/page/Frame.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxcpp">trunk/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxh">trunk/Source/WebCore/rendering/RenderBox.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderMarqueecpp">trunk/Source/WebCore/rendering/RenderMarquee.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingscrollingiframe_in_iframeexpectedtxt">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingscrollingiframe_in_iframehtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingscrollingresourcesinner_contenthtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/inner_content.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingscrollingresourcestestContenthtml">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/testContent.html</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk2tileddrawingscrollingresourcestestImagepng">trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/testImage.png</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (185200 => 185201)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-06-04 16:50:38 UTC (rev 185200)
+++ trunk/LayoutTests/ChangeLog        2015-06-04 17:53:24 UTC (rev 185201)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2015-06-03  Brent Fulgham  &lt;bfulgham@apple.com&gt;
+
+        REGRESSION (r181879): Scrolling order on pages with focused iframe is broken.
+        https://bugs.webkit.org/show_bug.cgi?id=145637
+        &lt;rdar://problem/20635581&gt;
+
+        Reviewed by Zalan Bujtas.
+
+        * platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe-expected.txt: Added.
+        * platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe.html: Added.
+        * platform/mac-wk2/tiled-drawing/scrolling/resources/inner_content.html: Added.
+        * platform/mac-wk2/tiled-drawing/scrolling/resources/testContent.html: Added.
+        * platform/mac-wk2/tiled-drawing/scrolling/resources/testImage.png: Added.
+
</ins><span class="cx"> 2015-06-04  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         css3/filters/backdrop/backdrop-filter-with-mask.html is missing the mask layer.
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingscrollingiframe_in_iframeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe-expected.txt (0 => 185201)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe-expected.txt        2015-06-04 17:53:24 UTC (rev 185201)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Inner Frame:
+
+Tests that iframe doesn't pass wheel events to main frame when scrolling inside iframe
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+PASS Page did not receive wheel events.
+PASS iframe did not receive wheel events.
+PASS iframe received wheel events.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingscrollingiframe_in_iframehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe.html (0 => 185201)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe.html        2015-06-04 17:53:24 UTC (rev 185201)
</span><span class="lines">@@ -0,0 +1,114 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;iFrame in iFrame Test&lt;/title&gt;
+        &lt;style&gt;
+        * {
+            box-sizing: border-box;
+        }
+
+        .container {
+            width:100%;
+            overflow:auto;
+            height:auto;
+        }
+
+        .innercontainer {
+            height:100%;
+            width:50%;
+        }
+        &lt;/style&gt;
+        &lt;script src=&quot;../../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+&lt;script&gt;
+
+var iframeTarget;
+var innerIFrameTarget;
+var pageScrollPositionBefore;
+var iFrameScrollPositionBefore;
+var continueCount = 5;
+
+function checkForScroll()
+{
+    // The IFrame should not have scrolled at all.
+    var pageScrollPositionAfter = document.body.scrollTop;
+    var iFrameScrollPositionAfter = window.frames['target'].document.body.scrollTop;
+    var innerIFrameScrollPositionAfter = iframeTarget.contentWindow.frames['target'].document.body.scrollTop;
+
+    if (pageScrollPositionBefore != pageScrollPositionAfter)
+        testFailed(&quot;Page received wheel events.&quot;);
+    else
+        testPassed(&quot;Page did not receive wheel events.&quot;);
+
+    if (iFrameScrollPositionBefore != iFrameScrollPositionAfter)
+        testFailed(&quot;iframe received wheel events.&quot;);
+    else
+        testPassed(&quot;iframe did not receive wheel events.&quot;);
+
+    if (innerIFrameScrollPositionBefore != innerIFrameScrollPositionAfter)
+        testPassed(&quot;iframe received wheel events.&quot;);
+    else
+        testFailed(&quot;iframe did not receive wheel events.&quot;);
+
+    finishJSTest();
+    testRunner.notifyDone();
+}
+
+function scrollTest()
+{
+    pageScrollPositionBefore = document.body.scrollTop;
+
+    iframeTarget = document.getElementById('target');
+
+    var iFrameBody = window.frames['target'].document.body;
+    iFrameScrollPositionBefore = iFrameBody.scrollTop;
+
+    innerIFrameTarget = iframeTarget.contentWindow.frames['target'].document.body;
+    innerIFrameScrollPositionBefore = innerIFrameTarget.scrollTop;
+
+    // Scroll the #source until we reach the #target.
+    var startPosX = Math.round(iframeTarget.offsetLeft) + 20;
+    var startPosY = Math.round(iframeTarget.offsetTop) + 80;
+    eventSender.mouseMoveTo(startPosX, startPosY);
+    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
+    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
+    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'changed', 'none');
+    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
+    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'begin');
+    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
+    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
+    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
+    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'none', 'continue');
+    eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
+    eventSender.callAfterScrollingCompletes(checkForScroll);
+}
+
+function setupTopLevel()
+{
+    if (window.eventSender) {
+        testRunner.dumpAsText();
+        testRunner.waitUntilDone();
+
+        eventSender.monitorWheelEvents();
+        setTimeout(scrollTest, 0);
+    }
+}
+&lt;/script&gt;
+        &lt;div class=&quot;container&quot;&gt;
+            &lt;div class=&quot;innercontainer&quot;&gt;
+                &lt;div style=&quot;width:100%;&quot;&gt;
+                    &lt;div&gt;Inner Frame:&lt;/div&gt;
+                    &lt;div style=&quot;height:92%;&quot;&gt;
+                        &lt;iframe id=&quot;target&quot; name=&quot;target&quot; src=&quot;resources/testContent.html&quot; onload=&quot;setupTopLevel();&quot;&gt;&lt;/iframe&gt;
+                    &lt;/div&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/div&gt;
+        &lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+        &lt;script&gt;
+        description(&quot;Tests that iframe doesn't pass wheel events to main frame when scrolling inside iframe&quot;);
+        &lt;/script&gt;
+        &lt;script src=&quot;../../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingscrollingresourcesinner_contenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/inner_content.html (0 => 185201)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/inner_content.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/inner_content.html        2015-06-04 17:53:24 UTC (rev 185201)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html lang=&quot;en-US&quot;&gt;
+    &lt;head&gt;
+        &lt;title&gt;Inner iFrame Example&lt;/title&gt;
+        &lt;meta charset=&quot;utf-8&quot;&gt;
+        &lt;style&gt;
+        img {
+            display:block;
+            max-width:100%;
+        }
+        &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body style=&quot;position: relative; min-height: 100%; top: 0px;&quot;&gt;
+        &lt;div style=&quot;overflow:auto;&quot;&gt;
+            &lt;img src=&quot;testImage.png&quot;&gt;
+            &lt;div&gt;TEST CASE TEST CASE TEST CASE TEST CASE&lt;/div&gt;
+        &lt;/div&gt;
+        &lt;div style=&quot;overflow:auto;&quot;&gt;
+            &lt;h1&gt;TEST HEADING&lt;/h1&gt;
+            &lt;p&gt;Test paragraph.&lt;/p&gt;
+            &lt;div&gt;TEST BUTTON 1&lt;/div&gt;
+            &lt;div&gt;TEST BUTTON 2&lt;/div&gt;      
+        &lt;/div&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk2tileddrawingscrollingresourcestestContenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/testContent.html (0 => 185201)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/testContent.html                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/testContent.html        2015-06-04 17:53:24 UTC (rev 185201)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;body&gt;
+
+&lt;p&gt;An iframe where scrollbars are always shown:&lt;/p&gt;
+&lt;iframe id=&quot;target&quot; name=&quot;target&quot; src=&quot;./inner_content.html&quot; width=&quot;200&quot; height=&quot;200&quot; scrolling=&quot;yes&quot;&gt;
+  &lt;p&gt;Your browser does not support iframes.&lt;/p&gt;
+&lt;/iframe&gt;
+
+&lt;p&gt;An iframe where scrollbars are never shown:&lt;/p&gt;
+&lt;iframe src=&quot;./inner_content.html&quot; width=&quot;200&quot; height=&quot;200&quot; scrolling=&quot;no&quot;&gt;
+  &lt;p&gt;Your browser does not support iframes.&lt;/p&gt;
+&lt;/iframe&gt;
+
+&lt;p&gt;The scrolling attribute is not supported in HTML5. Use CSS instead.&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="trunkLayoutTestsplatformmacwk2tileddrawingscrollingresourcestestImagepng"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/testImage.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/platform/mac-wk2/tiled-drawing/scrolling/resources/testImage.png
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (185200 => 185201)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-06-04 16:50:38 UTC (rev 185200)
+++ trunk/Source/WebCore/ChangeLog        2015-06-04 17:53:24 UTC (rev 185201)
</span><span class="lines">@@ -1,3 +1,34 @@
</span><ins>+2015-06-03  Brent Fulgham  &lt;bfulgham@apple.com&gt;
+
+        REGRESSION (r181879): Scrolling order on pages with focused iframe is broken.
+        https://bugs.webkit.org/show_bug.cgi?id=145637
+        &lt;rdar://problem/20635581&gt;
+
+        Reviewed by Zalan Bujtas.
+
+        Test: platform/mac-wk2/tiled-drawing/scrolling/iframe_in_iframe.html
+
+        This page revealed a bug in our RenderBox code caused by the mismatch between
+        our scrolling units, which are all integrally snapped, with our client height
+        and widths, which are not snapped at all. 
+        
+        In certain cases, the client height would have a small subpixel difference compared
+        to the scroll height, which would cause WebKit to believe it was scrollable. When
+        this happened, it would get stuck latched to this element and block scrolling events. 
+
+        * page/Frame.cpp:
+        (WebCore::Frame::scrollOverflowLayer): Use roundToInt for clientWidth and clientHeight,
+        rather than integer truncation.
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::canBeScrolledAndHasScrollableArea): Need to round clientWidth
+        and clientHeight to compare with scrollWidth/scrollHeight.
+        * rendering/RenderBox.h:
+        (WebCore::RenderBox::hasScrollableOverflowX): Ditto.
+        (WebCore::RenderBox::hasScrollableOverflowY): Ditto.
+        * rendering/RenderMarquee.cpp:
+        (WebCore::RenderMarquee::computePosition): Use roundToInt for clientWidth and
+        clientHeight, rather than integer truncation.
+
</ins><span class="cx"> 2015-06-04  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Cocoa] Clean up m_font inside FontPlatformData
</span></span></pre></div>
<a id="trunkSourceWebCorepageFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Frame.cpp (185200 => 185201)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Frame.cpp        2015-06-04 16:50:38 UTC (rev 185200)
+++ trunk/Source/WebCore/page/Frame.cpp        2015-06-04 17:53:24 UTC (rev 185201)
</span><span class="lines">@@ -501,7 +501,7 @@
</span><span class="cx">     int x = layer-&gt;scrollXOffset();
</span><span class="cx">     int exposeLeft = exposeRect.x();
</span><span class="cx">     int exposeRight = exposeLeft + exposeRect.width();
</span><del>-    int clientWidth = box-&gt;clientWidth();
</del><ins>+    int clientWidth = roundToInt(box-&gt;clientWidth());
</ins><span class="cx">     if (exposeLeft &lt;= 0)
</span><span class="cx">         x = std::max(0, x + exposeLeft - clientWidth / 2);
</span><span class="cx">     else if (exposeRight &gt;= clientWidth)
</span><span class="lines">@@ -510,7 +510,7 @@
</span><span class="cx">     int y = layer-&gt;scrollYOffset();
</span><span class="cx">     int exposeTop = exposeRect.y();
</span><span class="cx">     int exposeBottom = exposeTop + exposeRect.height();
</span><del>-    int clientHeight = box-&gt;clientHeight();
</del><ins>+    int clientHeight = roundToInt(box-&gt;clientHeight());
</ins><span class="cx">     if (exposeTop &lt;= 0)
</span><span class="cx">         y = std::max(0, y + exposeTop - clientHeight / 2);
</span><span class="cx">     else if (exposeBottom &gt;= clientHeight)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (185200 => 185201)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp        2015-06-04 16:50:38 UTC (rev 185200)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2015-06-04 17:53:24 UTC (rev 185201)
</span><span class="lines">@@ -876,7 +876,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool RenderBox::canBeScrolledAndHasScrollableArea() const
</span><span class="cx"> {
</span><del>-    return canBeProgramaticallyScrolled() &amp;&amp; (scrollHeight() != clientHeight() || scrollWidth() != clientWidth());
</del><ins>+    return canBeProgramaticallyScrolled() &amp;&amp; (scrollHeight() != roundToInt(clientHeight()) || scrollWidth() != roundToInt(clientWidth()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RenderBox::isScrollableOrRubberbandableBox() const
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.h (185200 => 185201)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.h        2015-06-04 16:50:38 UTC (rev 185200)
+++ trunk/Source/WebCore/rendering/RenderBox.h        2015-06-04 17:53:24 UTC (rev 185201)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
</span><span class="cx">  *           (C) 1999 Antti Koivisto (koivisto@kde.org)
</span><del>- * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2003, 2006, 2007, 2015 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * This library is free software; you can redistribute it and/or
</span><span class="cx">  * modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -477,8 +477,8 @@
</span><span class="cx">     bool scrollsOverflow() const { return scrollsOverflowX() || scrollsOverflowY(); }
</span><span class="cx">     bool scrollsOverflowX() const { return hasOverflowClip() &amp;&amp; (style().overflowX() == OSCROLL || hasHorizontalScrollbarWithAutoBehavior()); }
</span><span class="cx">     bool scrollsOverflowY() const { return hasOverflowClip() &amp;&amp; (style().overflowY() == OSCROLL || hasVerticalScrollbarWithAutoBehavior()); }
</span><del>-    bool hasScrollableOverflowX() const { return scrollsOverflowX() &amp;&amp; scrollWidth() != clientWidth(); }
-    bool hasScrollableOverflowY() const { return scrollsOverflowY() &amp;&amp; scrollHeight() != clientHeight(); }
</del><ins>+    bool hasScrollableOverflowX() const { return scrollsOverflowX() &amp;&amp; scrollWidth() != roundToInt(clientWidth()); }
+    bool hasScrollableOverflowY() const { return scrollsOverflowY() &amp;&amp; scrollHeight() != roundToInt(clientHeight()); }
</ins><span class="cx"> 
</span><span class="cx">     bool usesCompositedScrolling() const;
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderMarqueecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderMarquee.cpp (185200 => 185201)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderMarquee.cpp        2015-06-04 16:50:38 UTC (rev 185200)
+++ trunk/Source/WebCore/rendering/RenderMarquee.cpp        2015-06-04 17:53:24 UTC (rev 185201)
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx">     }
</span><span class="cx">     else {
</span><span class="cx">         int contentHeight = box-&gt;layoutOverflowRect().maxY() - box-&gt;borderTop() + box-&gt;paddingBottom();
</span><del>-        int clientHeight = box-&gt;clientHeight();
</del><ins>+        int clientHeight = roundToInt(box-&gt;clientHeight());
</ins><span class="cx">         if (dir == MUP) {
</span><span class="cx">             if (stopAtContentEdge)
</span><span class="cx">                  return std::min(contentHeight - clientHeight, 0);
</span><span class="lines">@@ -271,7 +271,7 @@
</span><span class="cx">             addIncrement = !addIncrement;
</span><span class="cx">         }
</span><span class="cx">         bool positive = range &gt; 0;
</span><del>-        int clientSize = (isHorizontal() ? m_layer-&gt;renderBox()-&gt;clientWidth() : m_layer-&gt;renderBox()-&gt;clientHeight());
</del><ins>+        int clientSize = (isHorizontal() ? roundToInt(m_layer-&gt;renderBox()-&gt;clientWidth()) : roundToInt(m_layer-&gt;renderBox()-&gt;clientHeight()));
</ins><span class="cx">         int increment = abs(intValueForLength(m_layer-&gt;renderer().style().marqueeIncrement(), clientSize));
</span><span class="cx">         int currentPos = (isHorizontal() ? m_layer-&gt;scrollXOffset() : m_layer-&gt;scrollYOffset());
</span><span class="cx">         newPos =  currentPos + (addIncrement ? increment : -increment);
</span></span></pre>
</div>
</div>

</body>
</html>