<!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>[163231] trunk/Source</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/163231">163231</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2014-01-31 19:57:48 -0800 (Fri, 31 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Pass the viewport rect and scroll origin independently into the scrolling tree, and make things floats
https://bugs.webkit.org/show_bug.cgi?id=128032

Reviewed by Tim Horton.

Pass the viewport rect and scroll offset independently into the ScrollingTree
via the ScrollingStateScrollingNode, since on iOS the scroll offset doesn't
always correspond to the viewport rect.

Make the viewport rect and the scroll origin be float-based, since on
Retina screens and with zooming these can both be non-integral.

Source/WebCore:

No behavior change.

* WebCore.exp.in:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
(WebCore::AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
* page/scrolling/AsyncScrollingCoordinator.h:
(WebCore::AsyncScrollingCoordinator::ScheduledScrollUpdate::ScheduledScrollUpdate):
* page/scrolling/ScrollingStateScrollingNode.cpp:
(WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
(WebCore::ScrollingStateScrollingNode::setViewportConstrainedObjectRect):
(WebCore::ScrollingStateScrollingNode::setScrollPosition):
(WebCore::ScrollingStateScrollingNode::dumpProperties):
* page/scrolling/ScrollingStateScrollingNode.h:
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
(WebCore::ScrollingTree::commitNewTreeState):
(WebCore::ScrollingTree::mainFrameScrollPosition):
(WebCore::ScrollingTree::setMainFrameScrollPosition):
* page/scrolling/ScrollingTree.h:
* page/scrolling/ScrollingTreeNode.h:
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::updateBeforeChildren):
* page/scrolling/ScrollingTreeScrollingNode.h:
(WebCore::ScrollingTreeScrollingNode::scrollPosition):
(WebCore::ScrollingTreeScrollingNode::viewportConstrainedObjectRect):
* page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):
* page/scrolling/ThreadedScrollingTree.h:
* page/scrolling/ios/ScrollingTreeIOS.cpp:
(WebCore::ScrollingTreeIOS::scrollingTreeNodeDidScroll):
* page/scrolling/ios/ScrollingTreeIOS.h:
* page/scrolling/ios/ScrollingTreeScrollingNodeIOS.h:
* page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm:
(WebCore::ScrollingTreeScrollingNodeIOS::scrollPosition):
(WebCore::ScrollingTreeScrollingNodeIOS::setScrollPosition):
(WebCore::ScrollingTreeScrollingNodeIOS::setScrollPositionWithoutContentEdgeConstraints):
(WebCore::ScrollingTreeScrollingNodeIOS::setScrollLayerPosition):
(WebCore::ScrollingTreeScrollingNodeIOS::minimumScrollPosition):
(WebCore::ScrollingTreeScrollingNodeIOS::maximumScrollPosition):
* page/scrolling/mac/ScrollingTreeFixedNode.h:
* page/scrolling/mac/ScrollingTreeFixedNode.mm:
(WebCore::ScrollingTreeFixedNode::parentScrollPositionDidChange):
* page/scrolling/mac/ScrollingTreeScrollingNodeMac.h:
* page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:
(WebCore::ScrollingTreeScrollingNodeMac::updateAfterChildren):
(WebCore::ScrollingTreeScrollingNodeMac::absoluteScrollPosition):
(WebCore::ScrollingTreeScrollingNodeMac::adjustScrollPositionToBoundsIfNecessary):
(WebCore::ScrollingTreeScrollingNodeMac::scrollPosition):
(WebCore::ScrollingTreeScrollingNodeMac::setScrollPosition):
(WebCore::ScrollingTreeScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints):
(WebCore::ScrollingTreeScrollingNodeMac::setScrollLayerPosition):
(WebCore::ScrollingTreeScrollingNodeMac::minimumScrollPosition):
(WebCore::ScrollingTreeScrollingNodeMac::maximumScrollPosition):
(WebCore::ScrollingTreeScrollingNodeMac::updateMainFramePinState):
(WebCore::ScrollingTreeScrollingNodeMac::logExposedUnfilledArea):
* page/scrolling/mac/ScrollingTreeStickyNode.h:
* page/scrolling/mac/ScrollingTreeStickyNode.mm:
(WebCore::ScrollingTreeStickyNode::parentScrollPositionDidChange):
* platform/graphics/FloatPoint.h:
(WebCore::FloatPoint::shrunkTo):

Source/WebKit2:

* Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
(ArgumentCoder&lt;ScrollingStateScrollingNode&gt;::encode):
(ArgumentCoder&lt;ScrollingStateScrollingNode&gt;::decode):
* UIProcess/Scrolling/RemoteScrollingTree.cpp:
(WebKit::RemoteScrollingTree::scrollingTreeNodeDidScroll):
* UIProcess/Scrolling/RemoteScrollingTree.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCorepagescrollingAsyncScrollingCoordinatorcpp">trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp</a></li>
<li><a href="#trunkSourceWebCorepagescrollingAsyncScrollingCoordinatorh">trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingStateScrollingNodecpp">trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingStateScrollingNodeh">trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingTreecpp">trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingTreeh">trunk/Source/WebCore/page/scrolling/ScrollingTree.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingTreeNodeh">trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingTreeScrollingNodecpp">trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingTreeScrollingNodeh">trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingThreadedScrollingTreecpp">trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp</a></li>
<li><a href="#trunkSourceWebCorepagescrollingThreadedScrollingTreeh">trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingiosScrollingTreeIOScpp">trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.cpp</a></li>
<li><a href="#trunkSourceWebCorepagescrollingiosScrollingTreeIOSh">trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingiosScrollingTreeScrollingNodeIOSh">trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeScrollingNodeIOS.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingiosScrollingTreeScrollingNodeIOSmm">trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm</a></li>
<li><a href="#trunkSourceWebCorepagescrollingmacScrollingTreeFixedNodeh">trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingmacScrollingTreeFixedNodemm">trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm</a></li>
<li><a href="#trunkSourceWebCorepagescrollingmacScrollingTreeScrollingNodeMach">trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingmacScrollingTreeScrollingNodeMacmm">trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm</a></li>
<li><a href="#trunkSourceWebCorepagescrollingmacScrollingTreeStickyNodeh">trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingmacScrollingTreeStickyNodemm">trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFloatPointh">trunk/Source/WebCore/platform/graphics/FloatPoint.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedScrollingRemoteScrollingCoordinatorTransactioncpp">trunk/Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessScrollingRemoteScrollingTreecpp">trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingTree.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessScrollingRemoteScrollingTreeh">trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingTree.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/ChangeLog        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -1,3 +1,80 @@
</span><ins>+2014-01-31  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        Pass the viewport rect and scroll origin independently into the scrolling tree, and make things floats
+        https://bugs.webkit.org/show_bug.cgi?id=128032
+
+        Reviewed by Tim Horton.
+
+        Pass the viewport rect and scroll offset independently into the ScrollingTree
+        via the ScrollingStateScrollingNode, since on iOS the scroll offset doesn't
+        always correspond to the viewport rect.
+        
+        Make the viewport rect and the scroll origin be float-based, since on
+        Retina screens and with zooming these can both be non-integral.
+
+        No behavior change.
+        
+        * WebCore.exp.in:
+        * page/scrolling/AsyncScrollingCoordinator.cpp:
+        (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
+        (WebCore::AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll):
+        (WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
+        * page/scrolling/AsyncScrollingCoordinator.h:
+        (WebCore::AsyncScrollingCoordinator::ScheduledScrollUpdate::ScheduledScrollUpdate):
+        * page/scrolling/ScrollingStateScrollingNode.cpp:
+        (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
+        (WebCore::ScrollingStateScrollingNode::setViewportConstrainedObjectRect):
+        (WebCore::ScrollingStateScrollingNode::setScrollPosition):
+        (WebCore::ScrollingStateScrollingNode::dumpProperties):
+        * page/scrolling/ScrollingStateScrollingNode.h:
+        * page/scrolling/ScrollingTree.cpp:
+        (WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
+        (WebCore::ScrollingTree::commitNewTreeState):
+        (WebCore::ScrollingTree::mainFrameScrollPosition):
+        (WebCore::ScrollingTree::setMainFrameScrollPosition):
+        * page/scrolling/ScrollingTree.h:
+        * page/scrolling/ScrollingTreeNode.h:
+        * page/scrolling/ScrollingTreeScrollingNode.cpp:
+        (WebCore::ScrollingTreeScrollingNode::updateBeforeChildren):
+        * page/scrolling/ScrollingTreeScrollingNode.h:
+        (WebCore::ScrollingTreeScrollingNode::scrollPosition):
+        (WebCore::ScrollingTreeScrollingNode::viewportConstrainedObjectRect):
+        * page/scrolling/ThreadedScrollingTree.cpp:
+        (WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):
+        * page/scrolling/ThreadedScrollingTree.h:
+        * page/scrolling/ios/ScrollingTreeIOS.cpp:
+        (WebCore::ScrollingTreeIOS::scrollingTreeNodeDidScroll):
+        * page/scrolling/ios/ScrollingTreeIOS.h:
+        * page/scrolling/ios/ScrollingTreeScrollingNodeIOS.h:
+        * page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm:
+        (WebCore::ScrollingTreeScrollingNodeIOS::scrollPosition):
+        (WebCore::ScrollingTreeScrollingNodeIOS::setScrollPosition):
+        (WebCore::ScrollingTreeScrollingNodeIOS::setScrollPositionWithoutContentEdgeConstraints):
+        (WebCore::ScrollingTreeScrollingNodeIOS::setScrollLayerPosition):
+        (WebCore::ScrollingTreeScrollingNodeIOS::minimumScrollPosition):
+        (WebCore::ScrollingTreeScrollingNodeIOS::maximumScrollPosition):
+        * page/scrolling/mac/ScrollingTreeFixedNode.h:
+        * page/scrolling/mac/ScrollingTreeFixedNode.mm:
+        (WebCore::ScrollingTreeFixedNode::parentScrollPositionDidChange):
+        * page/scrolling/mac/ScrollingTreeScrollingNodeMac.h:
+        * page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:
+        (WebCore::ScrollingTreeScrollingNodeMac::updateAfterChildren):
+        (WebCore::ScrollingTreeScrollingNodeMac::absoluteScrollPosition):
+        (WebCore::ScrollingTreeScrollingNodeMac::adjustScrollPositionToBoundsIfNecessary):
+        (WebCore::ScrollingTreeScrollingNodeMac::scrollPosition):
+        (WebCore::ScrollingTreeScrollingNodeMac::setScrollPosition):
+        (WebCore::ScrollingTreeScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints):
+        (WebCore::ScrollingTreeScrollingNodeMac::setScrollLayerPosition):
+        (WebCore::ScrollingTreeScrollingNodeMac::minimumScrollPosition):
+        (WebCore::ScrollingTreeScrollingNodeMac::maximumScrollPosition):
+        (WebCore::ScrollingTreeScrollingNodeMac::updateMainFramePinState):
+        (WebCore::ScrollingTreeScrollingNodeMac::logExposedUnfilledArea):
+        * page/scrolling/mac/ScrollingTreeStickyNode.h:
+        * page/scrolling/mac/ScrollingTreeStickyNode.mm:
+        (WebCore::ScrollingTreeStickyNode::parentScrollPositionDidChange):
+        * platform/graphics/FloatPoint.h:
+        (WebCore::FloatPoint::shrunkTo):
+
</ins><span class="cx"> 2014-01-30  Andy Estes  &lt;aestes@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Cocoa] Add NEFilterSource support to ContentFilterMac
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/WebCore.exp.in        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -3017,7 +3017,7 @@
</span><span class="cx"> __ZN7WebCore25AsyncScrollingCoordinator30setSynchronousScrollingReasonsEj
</span><span class="cx"> __ZN7WebCore25AsyncScrollingCoordinator37scrollableAreaScrollbarLayerDidChangeEPNS_14ScrollableAreaENS_20ScrollbarOrientationE
</span><span class="cx"> __ZN7WebCore25AsyncScrollingCoordinator43recomputeWheelEventHandlerCountForFrameViewEPNS_9FrameViewE
</span><del>-__ZN7WebCore25AsyncScrollingCoordinator44scheduleUpdateScrollPositionAfterAsyncScrollEyRKNS_8IntPointEbNS_31SetOrSyncScrollingLayerPositionE
</del><ins>+__ZN7WebCore25AsyncScrollingCoordinator44scheduleUpdateScrollPositionAfterAsyncScrollEyRKNS_10FloatPointEbNS_31SetOrSyncScrollingLayerPositionE
</ins><span class="cx"> __ZN7WebCore25AsyncScrollingCoordinatorC2EPNS_4PageE
</span><span class="cx"> __ZN7WebCore25AsyncScrollingCoordinatorD2Ev
</span><span class="cx"> __ZN7WebCore27ScrollingStateScrollingNode14setFooterLayerERKNS_19LayerRepresentationE
</span><span class="lines">@@ -3025,7 +3025,8 @@
</span><span class="cx"> __ZN7WebCore27ScrollingStateScrollingNode15setFooterHeightEi
</span><span class="cx"> __ZN7WebCore27ScrollingStateScrollingNode15setHeaderHeightEi
</span><span class="cx"> __ZN7WebCore27ScrollingStateScrollingNode15setScrollOriginERKNS_8IntPointE
</span><del>-__ZN7WebCore27ScrollingStateScrollingNode15setViewportRectERKNS_7IntRectE
</del><ins>+__ZN7WebCore27ScrollingStateScrollingNode17setScrollPositionERKNS_10FloatPointE
+__ZN7WebCore27ScrollingStateScrollingNode32setViewportConstrainedObjectRectERKNS_9FloatRectE
</ins><span class="cx"> __ZN7WebCore27ScrollingStateScrollingNode19setFrameScaleFactorEf
</span><span class="cx"> __ZN7WebCore27ScrollingStateScrollingNode20setTotalContentsSizeERKNS_7IntSizeE
</span><span class="cx"> __ZN7WebCore27ScrollingStateScrollingNode24setCounterScrollingLayerERKNS_19LayerRepresentationE
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingAsyncScrollingCoordinatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx">     node-&gt;setFooterHeight(frameView-&gt;footerHeight());
</span><span class="cx"> 
</span><span class="cx">     node-&gt;setScrollOrigin(frameView-&gt;scrollOrigin());
</span><del>-    node-&gt;setViewportRect(IntRect(IntPoint(), frameView-&gt;visibleContentRect().size()));
</del><ins>+    node-&gt;setViewportConstrainedObjectRect(FloatRect(FloatPoint(), frameView-&gt;visibleContentRect().size()));
</ins><span class="cx">     node-&gt;setTotalContentsSize(frameView-&gt;totalContentsSize());
</span><span class="cx"> 
</span><span class="cx">     ScrollableAreaParameters scrollParameters;
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll(ScrollingNodeID nodeID, const IntPoint&amp; scrollPosition, bool programmaticScroll, SetOrSyncScrollingLayerPosition scrollingLayerPositionAction)
</del><ins>+void AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll(ScrollingNodeID nodeID, const FloatPoint&amp; scrollPosition, bool programmaticScroll, SetOrSyncScrollingLayerPosition scrollingLayerPositionAction)
</ins><span class="cx"> {
</span><span class="cx">     ScheduledScrollUpdate scrollUpdate(nodeID, scrollPosition, programmaticScroll, scrollingLayerPositionAction);
</span><span class="cx">     
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx">     updateScrollPositionAfterAsyncScroll(m_scheduledScrollUpdate.nodeID, m_scheduledScrollUpdate.scrollPosition, m_scheduledScrollUpdate.isProgrammaticScroll, m_scheduledScrollUpdate.updateLayerPositionAction);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll(ScrollingNodeID scrollingNodeID, const IntPoint&amp; scrollPosition, bool programmaticScroll, SetOrSyncScrollingLayerPosition scrollingLayerPositionAction)
</del><ins>+void AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll(ScrollingNodeID scrollingNodeID, const FloatPoint&amp; scrollPosition, bool programmaticScroll, SetOrSyncScrollingLayerPosition scrollingLayerPositionAction)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><span class="lines">@@ -192,7 +192,7 @@
</span><span class="cx">     frameView-&gt;setInProgrammaticScroll(programmaticScroll);
</span><span class="cx"> 
</span><span class="cx">     frameView-&gt;setConstrainsScrollingToContentEdge(false);
</span><del>-    frameView-&gt;notifyScrollPositionChanged(scrollPosition);
</del><ins>+    frameView-&gt;notifyScrollPositionChanged(roundedIntPoint(scrollPosition));
</ins><span class="cx">     frameView-&gt;setConstrainsScrollingToContentEdge(true);
</span><span class="cx"> 
</span><span class="cx">     frameView-&gt;setInProgrammaticScroll(oldProgrammaticScroll);
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingAsyncScrollingCoordinatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> 
</span><span class="cx">     void scrollingStateTreePropertiesChanged();
</span><span class="cx"> 
</span><del>-    void scheduleUpdateScrollPositionAfterAsyncScroll(ScrollingNodeID, const IntPoint&amp;, bool programmaticScroll, SetOrSyncScrollingLayerPosition);
</del><ins>+    void scheduleUpdateScrollPositionAfterAsyncScroll(ScrollingNodeID, const FloatPoint&amp;, bool programmaticScroll, SetOrSyncScrollingLayerPosition);
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     AsyncScrollingCoordinator(Page*);
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> 
</span><span class="cx">     PassRefPtr&lt;ScrollingTree&gt; releaseScrollingTree() { return m_scrollingTree.release(); }
</span><span class="cx"> 
</span><del>-    void updateScrollPositionAfterAsyncScroll(ScrollingNodeID, const IntPoint&amp;, bool programmaticScroll, SetOrSyncScrollingLayerPosition);
</del><ins>+    void updateScrollPositionAfterAsyncScroll(ScrollingNodeID, const FloatPoint&amp;, bool programmaticScroll, SetOrSyncScrollingLayerPosition);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     virtual bool isAsyncScrollingCoordinator() const override { return true; }
</span><span class="lines">@@ -123,7 +123,7 @@
</span><span class="cx">             , updateLayerPositionAction(SyncScrollingLayerPosition)
</span><span class="cx">         { }
</span><span class="cx"> 
</span><del>-        ScheduledScrollUpdate(ScrollingNodeID scrollingNodeID, IntPoint point, bool isProgrammatic, SetOrSyncScrollingLayerPosition udpateAction)
</del><ins>+        ScheduledScrollUpdate(ScrollingNodeID scrollingNodeID, FloatPoint point, bool isProgrammatic, SetOrSyncScrollingLayerPosition udpateAction)
</ins><span class="cx">             : nodeID(scrollingNodeID)
</span><span class="cx">             , scrollPosition(point)
</span><span class="cx">             , isProgrammaticScroll(isProgrammatic)
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx">         { }
</span><span class="cx"> 
</span><span class="cx">         ScrollingNodeID nodeID;
</span><del>-        IntPoint scrollPosition;
</del><ins>+        FloatPoint scrollPosition;
</ins><span class="cx">         bool isProgrammaticScroll;
</span><span class="cx">         SetOrSyncScrollingLayerPosition updateLayerPositionAction;
</span><span class="cx">         
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingStateScrollingNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -61,8 +61,9 @@
</span><span class="cx">     , m_verticalScrollbarPainter(stateNode.verticalScrollbarPainter())
</span><span class="cx">     , m_horizontalScrollbarPainter(stateNode.horizontalScrollbarPainter())
</span><span class="cx"> #endif
</span><del>-    , m_viewportRect(stateNode.viewportRect())
</del><ins>+    , m_viewportConstrainedObjectRect(stateNode.viewportConstrainedObjectRect())
</ins><span class="cx">     , m_totalContentsSize(stateNode.totalContentsSize())
</span><ins>+    , m_scrollPosition(stateNode.scrollPosition())
</ins><span class="cx">     , m_scrollOrigin(stateNode.scrollOrigin())
</span><span class="cx">     , m_scrollableAreaParameters(stateNode.scrollableAreaParameters())
</span><span class="cx">     , m_nonFastScrollableRegion(stateNode.nonFastScrollableRegion())
</span><span class="lines">@@ -94,13 +95,13 @@
</span><span class="cx">     return adoptPtr(new ScrollingStateScrollingNode(*this, adoptiveTree));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingStateScrollingNode::setViewportRect(const IntRect&amp; viewportRect)
</del><ins>+void ScrollingStateScrollingNode::setViewportConstrainedObjectRect(const FloatRect&amp; viewportConstrainedObjectRect)
</ins><span class="cx"> {
</span><del>-    if (m_viewportRect == viewportRect)
</del><ins>+    if (m_viewportConstrainedObjectRect == viewportConstrainedObjectRect)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_viewportRect = viewportRect;
-    setPropertyChanged(ViewportRect);
</del><ins>+    m_viewportConstrainedObjectRect = viewportConstrainedObjectRect;
+    setPropertyChanged(ViewportConstrainedObjectRect);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ScrollingStateScrollingNode::setTotalContentsSize(const IntSize&amp; totalContentsSize)
</span><span class="lines">@@ -112,6 +113,15 @@
</span><span class="cx">     setPropertyChanged(TotalContentsSize);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ScrollingStateScrollingNode::setScrollPosition(const FloatPoint&amp; scrollPosition)
+{
+    if (m_scrollPosition == scrollPosition)
+        return;
+
+    m_scrollPosition = scrollPosition;
+    setPropertyChanged(ScrollPosition);
+}
+
</ins><span class="cx"> void ScrollingStateScrollingNode::setScrollOrigin(const IntPoint&amp; scrollOrigin)
</span><span class="cx"> {
</span><span class="cx">     if (m_scrollOrigin == scrollOrigin)
</span><span class="lines">@@ -242,11 +252,22 @@
</span><span class="cx"> {
</span><span class="cx">     ts &lt;&lt; &quot;(&quot; &lt;&lt; &quot;Scrolling node&quot; &lt;&lt; &quot;\n&quot;;
</span><span class="cx"> 
</span><del>-    if (!m_viewportRect.isEmpty()) {
</del><ins>+    if (!m_viewportConstrainedObjectRect.isEmpty()) {
</ins><span class="cx">         writeIndent(ts, indent + 1);
</span><del>-        ts &lt;&lt; &quot;(viewport rect &quot; &lt;&lt; m_viewportRect.x() &lt;&lt; &quot; &quot; &lt;&lt; m_viewportRect.y() &lt;&lt; &quot; &quot; &lt;&lt; m_viewportRect.width() &lt;&lt; &quot; &quot; &lt;&lt; m_viewportRect.height() &lt;&lt; &quot;)\n&quot;;
</del><ins>+        ts &lt;&lt; &quot;(viewport rect &quot;
+            &lt;&lt; TextStream::FormatNumberRespectingIntegers(m_viewportConstrainedObjectRect.x()) &lt;&lt; &quot; &quot;
+            &lt;&lt; TextStream::FormatNumberRespectingIntegers(m_viewportConstrainedObjectRect.y()) &lt;&lt; &quot; &quot;
+            &lt;&lt; TextStream::FormatNumberRespectingIntegers(m_viewportConstrainedObjectRect.width()) &lt;&lt; &quot; &quot;
+            &lt;&lt; TextStream::FormatNumberRespectingIntegers(m_viewportConstrainedObjectRect.height()) &lt;&lt; &quot;)\n&quot;;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    if (m_scrollPosition != FloatPoint()) {
+        writeIndent(ts, indent + 1);
+        ts &lt;&lt; &quot;(scroll position &quot;
+            &lt;&lt; TextStream::FormatNumberRespectingIntegers(m_scrollPosition.x()) &lt;&lt; &quot; &quot;
+            &lt;&lt; TextStream::FormatNumberRespectingIntegers(m_scrollPosition.y()) &lt;&lt; &quot;)\n&quot;;
+    }
+
</ins><span class="cx">     if (!m_totalContentsSize.isEmpty()) {
</span><span class="cx">         writeIndent(ts, indent + 1);
</span><span class="cx">         ts &lt;&lt; &quot;(contents size &quot; &lt;&lt; m_totalContentsSize.width() &lt;&lt; &quot; &quot; &lt;&lt; m_totalContentsSize.height() &lt;&lt; &quot;)\n&quot;;
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingStateScrollingNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -50,8 +50,9 @@
</span><span class="cx">     virtual ~ScrollingStateScrollingNode();
</span><span class="cx"> 
</span><span class="cx">     enum ChangedProperty {
</span><del>-        ViewportRect = NumStateNodeBits,
</del><ins>+        ViewportConstrainedObjectRect = NumStateNodeBits,
</ins><span class="cx">         TotalContentsSize,
</span><ins>+        ScrollPosition,
</ins><span class="cx">         ScrollOrigin,
</span><span class="cx">         ScrollableAreaParams,
</span><span class="cx">         FrameScaleFactor,
</span><span class="lines">@@ -68,12 +69,15 @@
</span><span class="cx">         BehaviorForFixedElements
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    const IntRect&amp; viewportRect() const { return m_viewportRect; }
-    void setViewportRect(const IntRect&amp;);
</del><ins>+    const FloatRect&amp; viewportConstrainedObjectRect() const { return m_viewportConstrainedObjectRect; }
+    void setViewportConstrainedObjectRect(const FloatRect&amp;);
</ins><span class="cx"> 
</span><span class="cx">     const IntSize&amp; totalContentsSize() const { return m_totalContentsSize; }
</span><span class="cx">     void setTotalContentsSize(const IntSize&amp;);
</span><span class="cx"> 
</span><ins>+    const FloatPoint&amp; scrollPosition() const { return m_scrollPosition; }
+    void setScrollPosition(const FloatPoint&amp;);
+
</ins><span class="cx">     const IntPoint&amp; scrollOrigin() const { return m_scrollOrigin; }
</span><span class="cx">     void setScrollOrigin(const IntPoint&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -139,8 +143,9 @@
</span><span class="cx">     RetainPtr&lt;ScrollbarPainter&gt; m_horizontalScrollbarPainter;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    IntRect m_viewportRect;
</del><ins>+    FloatRect m_viewportConstrainedObjectRect;
</ins><span class="cx">     IntSize m_totalContentsSize;
</span><ins>+    FloatPoint m_scrollPosition;
</ins><span class="cx">     IntPoint m_scrollOrigin;
</span><span class="cx">     
</span><span class="cx">     ScrollableAreaParameters m_scrollableAreaParameters;
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingTreecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -93,9 +93,9 @@
</span><span class="cx">     
</span><span class="cx">     if (!m_nonFastScrollableRegion.isEmpty()) {
</span><span class="cx">         // FIXME: This is not correct for non-default scroll origins.
</span><del>-        IntPoint position = wheelEvent.position();
</del><ins>+        FloatPoint position = wheelEvent.position();
</ins><span class="cx">         position.moveBy(m_mainFrameScrollPosition);
</span><del>-        if (m_nonFastScrollableRegion.contains(position))
</del><ins>+        if (m_nonFastScrollableRegion.contains(roundedIntPoint(position)))
</ins><span class="cx">             return true;
</span><span class="cx">     }
</span><span class="cx">     return false;
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx">         MutexLocker lock(m_mutex);
</span><span class="cx"> 
</span><span class="cx">         if (rootStateNodeChanged || rootNode-&gt;hasChangedProperty(ScrollingStateNode::ScrollLayer))
</span><del>-            m_mainFrameScrollPosition = IntPoint();
</del><ins>+            m_mainFrameScrollPosition = FloatPoint();
</ins><span class="cx">         if (rootStateNodeChanged || rootNode-&gt;hasChangedProperty(ScrollingStateScrollingNode::WheelEventHandlerCount))
</span><span class="cx">             m_hasWheelEventHandlers = scrollingStateTree-&gt;rootStateNode()-&gt;wheelEventHandlerCount();
</span><span class="cx">         if (rootStateNodeChanged || rootNode-&gt;hasChangedProperty(ScrollingStateScrollingNode::NonFastScrollableRegion))
</span><span class="lines">@@ -242,13 +242,13 @@
</span><span class="cx">     m_mainFramePinnedToTheBottom = pinnedToTheBottom;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-IntPoint ScrollingTree::mainFrameScrollPosition()
</del><ins>+FloatPoint ScrollingTree::mainFrameScrollPosition()
</ins><span class="cx"> {
</span><span class="cx">     MutexLocker lock(m_mutex);
</span><span class="cx">     return m_mainFrameScrollPosition;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTree::setMainFrameScrollPosition(IntPoint position)
</del><ins>+void ScrollingTree::setMainFrameScrollPosition(FloatPoint position)
</ins><span class="cx"> {
</span><span class="cx">     MutexLocker lock(m_mutex);
</span><span class="cx">     m_mainFrameScrollPosition = position;
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingTreeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingTree.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingTree.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTree.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -73,8 +73,8 @@
</span><span class="cx"> 
</span><span class="cx">     void setMainFramePinState(bool pinnedToTheLeft, bool pinnedToTheRight, bool pinnedToTheTop, bool pinnedToTheBottom);
</span><span class="cx"> 
</span><del>-    virtual void scrollingTreeNodeDidScroll(ScrollingNodeID, const IntPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition = SyncScrollingLayerPosition) = 0;
-    IntPoint mainFrameScrollPosition();
</del><ins>+    virtual void scrollingTreeNodeDidScroll(ScrollingNodeID, const FloatPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition = SyncScrollingLayerPosition) = 0;
+    FloatPoint mainFrameScrollPosition();
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS)
</span><span class="cx">     virtual void handleWheelEventPhase(PlatformWheelEventPhase) = 0;
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx">     void setOrClearLatchedNode(const PlatformWheelEvent&amp;, ScrollingNodeID);
</span><span class="cx">     
</span><span class="cx"> protected:
</span><del>-    void setMainFrameScrollPosition(IntPoint);
</del><ins>+    void setMainFrameScrollPosition(FloatPoint);
</ins><span class="cx">     virtual void handleWheelEvent(const PlatformWheelEvent&amp;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx"> 
</span><span class="cx">     Mutex m_mutex;
</span><span class="cx">     Region m_nonFastScrollableRegion;
</span><del>-    IntPoint m_mainFrameScrollPosition;
</del><ins>+    FloatPoint m_mainFrameScrollPosition;
</ins><span class="cx">     bool m_hasWheelEventHandlers;
</span><span class="cx"> 
</span><span class="cx">     Mutex m_swipeStateMutex;
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingTreeNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     virtual void updateBeforeChildren(const ScrollingStateNode&amp;) = 0;
</span><span class="cx">     virtual void updateAfterChildren(const ScrollingStateNode&amp;) { }
</span><span class="cx"> 
</span><del>-    virtual void parentScrollPositionDidChange(const IntRect&amp; viewportRect, const FloatSize&amp; cumulativeDelta) = 0;
</del><ins>+    virtual void parentScrollPositionDidChange(const FloatRect&amp; viewportRect, const FloatSize&amp; cumulativeDelta) = 0;
</ins><span class="cx"> 
</span><span class="cx">     ScrollingTreeNode* parent() const { return m_parent; }
</span><span class="cx">     void setParent(ScrollingTreeNode* parent) { m_parent = parent; }
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingTreeScrollingNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -51,8 +51,8 @@
</span><span class="cx"> {
</span><span class="cx">     const ScrollingStateScrollingNode&amp; state = toScrollingStateScrollingNode(stateNode);
</span><span class="cx"> 
</span><del>-    if (state.hasChangedProperty(ScrollingStateScrollingNode::ViewportRect))
-        m_viewportRect = state.viewportRect();
</del><ins>+    if (state.hasChangedProperty(ScrollingStateScrollingNode::ViewportConstrainedObjectRect))
+        m_viewportConstrainedObjectRect = state.viewportConstrainedObjectRect();
</ins><span class="cx"> 
</span><span class="cx">     if (state.hasChangedProperty(ScrollingStateScrollingNode::TotalContentsSize)) {
</span><span class="cx">         if (scrollingTree().isRubberBandInProgress())
</span><span class="lines">@@ -62,6 +62,9 @@
</span><span class="cx">         m_totalContentsSize = state.totalContentsSize();
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    if (state.hasChangedProperty(ScrollingStateScrollingNode::ScrollPosition))
+        m_scrollPosition = state.scrollPosition();
+
</ins><span class="cx">     if (state.hasChangedProperty(ScrollingStateScrollingNode::ScrollOrigin))
</span><span class="cx">         m_scrollOrigin = state.scrollOrigin();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingTreeScrollingNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -47,10 +47,10 @@
</span><span class="cx">     virtual void updateBeforeChildren(const ScrollingStateNode&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: We should implement this when we support ScrollingTreeScrollingNodes as children.
</span><del>-    virtual void parentScrollPositionDidChange(const IntRect&amp; /*viewportRect*/, const FloatSize&amp; /*cumulativeDelta*/) override { }
</del><ins>+    virtual void parentScrollPositionDidChange(const FloatRect&amp; /*viewportRect*/, const FloatSize&amp; /*cumulativeDelta*/) override { }
</ins><span class="cx"> 
</span><span class="cx">     virtual void handleWheelEvent(const PlatformWheelEvent&amp;) = 0;
</span><del>-    virtual void setScrollPosition(const IntPoint&amp;) = 0;
</del><ins>+    virtual void setScrollPosition(const FloatPoint&amp;) = 0;
</ins><span class="cx"> 
</span><span class="cx">     SynchronousScrollingReasons synchronousScrollingReasons() const { return m_synchronousScrollingReasons; }
</span><span class="cx">     bool shouldUpdateScrollLayerPositionSynchronously() const { return m_synchronousScrollingReasons; }
</span><span class="lines">@@ -58,7 +58,8 @@
</span><span class="cx"> protected:
</span><span class="cx">     ScrollingTreeScrollingNode(ScrollingTree&amp;, ScrollingNodeID);
</span><span class="cx"> 
</span><del>-    const IntRect&amp; viewportRect() const { return m_viewportRect; }
</del><ins>+    const FloatPoint&amp; scrollPosition() const { return m_scrollPosition; }
+    const FloatRect&amp; viewportConstrainedObjectRect() const { return m_viewportConstrainedObjectRect; }
</ins><span class="cx">     const IntSize&amp; totalContentsSize() const { return m_totalContentsSize; }
</span><span class="cx">     const IntPoint&amp; scrollOrigin() const { return m_scrollOrigin; }
</span><span class="cx"> 
</span><span class="lines">@@ -84,9 +85,10 @@
</span><span class="cx">     ScrollBehaviorForFixedElements scrollBehaviorForFixedElements() const { return m_behaviorForFixed; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    IntRect m_viewportRect;
</del><ins>+    FloatRect m_viewportConstrainedObjectRect;
</ins><span class="cx">     IntSize m_totalContentsSize;
</span><span class="cx">     IntSize m_totalContentsSizeForRubberBand;
</span><ins>+    FloatPoint m_scrollPosition;
</ins><span class="cx">     IntPoint m_scrollOrigin;
</span><span class="cx">     
</span><span class="cx">     ScrollableAreaParameters m_scrollableAreaParameters;
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingThreadedScrollingTreecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx">     ScrollingTree::commitNewTreeState(scrollingStateTree);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ThreadedScrollingTree::scrollingTreeNodeDidScroll(ScrollingNodeID nodeID, const IntPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition scrollingLayerPositionAction)
</del><ins>+void ThreadedScrollingTree::scrollingTreeNodeDidScroll(ScrollingNodeID nodeID, const FloatPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition scrollingLayerPositionAction)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_scrollingCoordinator)
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingThreadedScrollingTreeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual PassOwnPtr&lt;ScrollingTreeNode&gt; createNode(ScrollingNodeType, ScrollingNodeID) override;
</span><span class="cx"> 
</span><del>-    virtual void scrollingTreeNodeDidScroll(ScrollingNodeID, const IntPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition = SyncScrollingLayerPosition) override;
</del><ins>+    virtual void scrollingTreeNodeDidScroll(ScrollingNodeID, const FloatPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition = SyncScrollingLayerPosition) override;
</ins><span class="cx"> #if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS)
</span><span class="cx">     virtual void handleWheelEventPhase(PlatformWheelEventPhase) override;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingiosScrollingTreeIOScpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.cpp (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.cpp        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.cpp        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx">     ScrollingTree::commitNewTreeState(scrollingStateTree);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTreeIOS::scrollingTreeNodeDidScroll(ScrollingNodeID nodeID, const IntPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition scrollingLayerPositionAction)
</del><ins>+void ScrollingTreeIOS::scrollingTreeNodeDidScroll(ScrollingNodeID nodeID, const FloatPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition scrollingLayerPositionAction)
</ins><span class="cx"> {
</span><span class="cx">     if (!m_scrollingCoordinator)
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingiosScrollingTreeIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual PassOwnPtr&lt;ScrollingTreeNode&gt; createNode(ScrollingNodeType, ScrollingNodeID) override;
</span><span class="cx"> 
</span><del>-    virtual void scrollingTreeNodeDidScroll(ScrollingNodeID, const IntPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition = SyncScrollingLayerPosition) override;
</del><ins>+    virtual void scrollingTreeNodeDidScroll(ScrollingNodeID, const FloatPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition = SyncScrollingLayerPosition) override;
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;AsyncScrollingCoordinator&gt; m_scrollingCoordinator;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingiosScrollingTreeScrollingNodeIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeScrollingNodeIOS.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeScrollingNodeIOS.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeScrollingNodeIOS.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -48,14 +48,14 @@
</span><span class="cx">     virtual void updateAfterChildren(const ScrollingStateNode&amp;) override;
</span><span class="cx">     virtual void handleWheelEvent(const PlatformWheelEvent&amp;) override { }
</span><span class="cx"> 
</span><del>-    IntPoint scrollPosition() const;
-    void setScrollPosition(const IntPoint&amp;);
-    void setScrollPositionWithoutContentEdgeConstraints(const IntPoint&amp;);
</del><ins>+    FloatPoint scrollPosition() const;
+    virtual void setScrollPosition(const FloatPoint&amp;) override;
+    void setScrollPositionWithoutContentEdgeConstraints(const FloatPoint&amp;);
</ins><span class="cx"> 
</span><del>-    void setScrollLayerPosition(const IntPoint&amp;);
</del><ins>+    void setScrollLayerPosition(const FloatPoint&amp;);
</ins><span class="cx"> 
</span><del>-    IntPoint minimumScrollPosition() const;
-    IntPoint maximumScrollPosition() const;
</del><ins>+    FloatPoint minimumScrollPosition() const;
+    FloatPoint maximumScrollPosition() const;
</ins><span class="cx"> 
</span><span class="cx">     void scrollBy(const IntSize&amp;);
</span><span class="cx">     void scrollByWithoutContentEdgeConstraints(const IntSize&amp;);
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">     RetainPtr&lt;CALayer&gt; m_counterScrollingLayer;
</span><span class="cx">     RetainPtr&lt;CALayer&gt; m_headerLayer;
</span><span class="cx">     RetainPtr&lt;CALayer&gt; m_footerLayer;
</span><del>-    IntPoint m_probableMainThreadScrollPosition;
</del><ins>+    FloatPoint m_probableMainThreadScrollPosition;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingiosScrollingTreeScrollingNodeIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">         setScrollPosition(scrollingStateNode.requestedScrollPosition());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-IntPoint ScrollingTreeScrollingNodeIOS::scrollPosition() const
</del><ins>+FloatPoint ScrollingTreeScrollingNodeIOS::scrollPosition() const
</ins><span class="cx"> {
</span><span class="cx">     if (shouldUpdateScrollLayerPositionSynchronously())
</span><span class="cx">         return m_probableMainThreadScrollPosition;
</span><span class="lines">@@ -105,16 +105,16 @@
</span><span class="cx">     return IntPoint(-scrollLayerPosition.x + scrollOrigin().x(), -scrollLayerPosition.y + scrollOrigin().y());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTreeScrollingNodeIOS::setScrollPosition(const IntPoint&amp; scrollPosition)
</del><ins>+void ScrollingTreeScrollingNodeIOS::setScrollPosition(const FloatPoint&amp; scrollPosition)
</ins><span class="cx"> {
</span><del>-    IntPoint newScrollPosition = scrollPosition;
</del><ins>+    FloatPoint newScrollPosition = scrollPosition;
</ins><span class="cx">     newScrollPosition = newScrollPosition.shrunkTo(maximumScrollPosition());
</span><span class="cx">     newScrollPosition = newScrollPosition.expandedTo(minimumScrollPosition());
</span><span class="cx"> 
</span><span class="cx">     setScrollPositionWithoutContentEdgeConstraints(newScrollPosition);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTreeScrollingNodeIOS::setScrollPositionWithoutContentEdgeConstraints(const IntPoint&amp; scrollPosition)
</del><ins>+void ScrollingTreeScrollingNodeIOS::setScrollPositionWithoutContentEdgeConstraints(const FloatPoint&amp; scrollPosition)
</ins><span class="cx"> {
</span><span class="cx">     if (shouldUpdateScrollLayerPositionSynchronously()) {
</span><span class="cx">         m_probableMainThreadScrollPosition = scrollPosition;
</span><span class="lines">@@ -126,14 +126,15 @@
</span><span class="cx">     scrollingTree().scrollingTreeNodeDidScroll(scrollingNodeID(), scrollPosition);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTreeScrollingNodeIOS::setScrollLayerPosition(const IntPoint&amp; position)
</del><ins>+void ScrollingTreeScrollingNodeIOS::setScrollLayerPosition(const FloatPoint&amp; position)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!shouldUpdateScrollLayerPositionSynchronously());
</span><span class="cx">     m_scrollLayer.get().position = CGPointMake(-position.x() + scrollOrigin().x(), -position.y() + scrollOrigin().y());
</span><span class="cx"> 
</span><span class="cx">     ScrollBehaviorForFixedElements behaviorForFixed = scrollBehaviorForFixedElements();
</span><del>-    IntPoint scrollOffset = position - toIntSize(scrollOrigin());
-    IntSize scrollOffsetForFixedChildren = FrameView::scrollOffsetForFixedPosition(viewportRect(), totalContentsSize(), scrollOffset, scrollOrigin(), frameScaleFactor(), false, behaviorForFixed, headerHeight(), footerHeight());
</del><ins>+    FloatPoint scrollOffset = position - toIntSize(scrollOrigin());
+    // FIXME: scrollOffsetForFixedPosition() needs to do float math.
+    FloatSize scrollOffsetForFixedChildren = FrameView::scrollOffsetForFixedPosition(enclosingIntRect(viewportConstrainedObjectRect()), totalContentsSize(), flooredIntPoint(scrollOffset), scrollOrigin(), frameScaleFactor(), false, behaviorForFixed, headerHeight(), footerHeight());
</ins><span class="cx">     if (m_counterScrollingLayer)
</span><span class="cx">         m_counterScrollingLayer.get().position = FloatPoint(scrollOffsetForFixedChildren);
</span><span class="cx"> 
</span><span class="lines">@@ -142,7 +143,7 @@
</span><span class="cx">     // then we should recompute scrollOffsetForFixedChildren for the banner with a scale factor of 1.
</span><span class="cx">     float horizontalScrollOffsetForBanner = scrollOffsetForFixedChildren.width();
</span><span class="cx">     if (frameScaleFactor() != 1)
</span><del>-        horizontalScrollOffsetForBanner = FrameView::scrollOffsetForFixedPosition(viewportRect(), totalContentsSize(), scrollOffset, scrollOrigin(), 1, false, behaviorForFixed, headerHeight(), footerHeight()).width();
</del><ins>+        horizontalScrollOffsetForBanner = FrameView::scrollOffsetForFixedPosition(enclosingIntRect(viewportConstrainedObjectRect()), totalContentsSize(), flooredIntPoint(scrollOffset), scrollOrigin(), 1, false, behaviorForFixed, headerHeight(), footerHeight()).width();
</ins><span class="cx"> 
</span><span class="cx">     if (m_headerLayer)
</span><span class="cx">         m_headerLayer.get().position = FloatPoint(horizontalScrollOffsetForBanner, 0);
</span><span class="lines">@@ -153,17 +154,17 @@
</span><span class="cx">     if (!m_children)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    IntRect viewportRect = this-&gt;viewportRect();
-    viewportRect.setLocation(IntPoint(scrollOffsetForFixedChildren));
</del><ins>+    FloatRect viewportRect = viewportConstrainedObjectRect();
+    viewportRect.setLocation(FloatPoint() + scrollOffsetForFixedChildren);
</ins><span class="cx"> 
</span><span class="cx">     size_t size = m_children-&gt;size();
</span><span class="cx">     for (size_t i = 0; i &lt; size; ++i)
</span><span class="cx">         m_children-&gt;at(i)-&gt;parentScrollPositionDidChange(viewportRect, FloatSize());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-IntPoint ScrollingTreeScrollingNodeIOS::minimumScrollPosition() const
</del><ins>+FloatPoint ScrollingTreeScrollingNodeIOS::minimumScrollPosition() const
</ins><span class="cx"> {
</span><del>-    IntPoint position;
</del><ins>+    FloatPoint position;
</ins><span class="cx">     
</span><span class="cx">     if (scrollingTree().rootNode() == this &amp;&amp; scrollingTree().scrollPinningBehavior() == PinToBottom)
</span><span class="cx">         position.setY(maximumScrollPosition().y());
</span><span class="lines">@@ -171,12 +172,12 @@
</span><span class="cx">     return position;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-IntPoint ScrollingTreeScrollingNodeIOS::maximumScrollPosition() const
</del><ins>+FloatPoint ScrollingTreeScrollingNodeIOS::maximumScrollPosition() const
</ins><span class="cx"> {
</span><del>-    IntPoint position(totalContentsSizeForRubberBand().width() - viewportRect().width(),
-                      totalContentsSizeForRubberBand().height() - viewportRect().height());
</del><ins>+    FloatPoint position(totalContentsSizeForRubberBand().width() - viewportConstrainedObjectRect().width(),
+        totalContentsSizeForRubberBand().height() - viewportConstrainedObjectRect().height());
</ins><span class="cx"> 
</span><del>-    position.clampNegativeToZero();
</del><ins>+    position = position.expandedTo(FloatPoint());
</ins><span class="cx"> 
</span><span class="cx">     if (scrollingTree().rootNode() == this &amp;&amp; scrollingTree().scrollPinningBehavior() == PinToTop)
</span><span class="cx">         position.setY(minimumScrollPosition().y());
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingmacScrollingTreeFixedNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     ScrollingTreeFixedNode(ScrollingTree&amp;, ScrollingNodeID);
</span><span class="cx"> 
</span><span class="cx">     virtual void updateBeforeChildren(const ScrollingStateNode&amp;) override;
</span><del>-    virtual void parentScrollPositionDidChange(const IntRect&amp; viewportRect, const FloatSize&amp; cumulativeDelta) override;
</del><ins>+    virtual void parentScrollPositionDidChange(const FloatRect&amp; viewportRect, const FloatSize&amp; cumulativeDelta) override;
</ins><span class="cx"> 
</span><span class="cx">     FixedPositionViewportConstraints m_constraints;
</span><span class="cx">     RetainPtr&lt;CALayer&gt; m_layer;
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingmacScrollingTreeFixedNodemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">     return CGPointMake(a.x * b.width, a.y * b.height);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTreeFixedNode::parentScrollPositionDidChange(const IntRect&amp; viewportRect, const FloatSize&amp; cumulativeDelta)
</del><ins>+void ScrollingTreeFixedNode::parentScrollPositionDidChange(const FloatRect&amp; viewportRect, const FloatSize&amp; cumulativeDelta)
</ins><span class="cx"> {
</span><span class="cx">     FloatPoint layerPosition = m_constraints.layerPositionForViewportRect(viewportRect);
</span><span class="cx">     layerPosition -= cumulativeDelta;
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingmacScrollingTreeScrollingNodeMach"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -65,19 +65,19 @@
</span><span class="cx">     virtual void stopSnapRubberbandTimer() override;
</span><span class="cx">     virtual void adjustScrollPositionToBoundsIfNecessary() override;
</span><span class="cx"> 
</span><del>-    IntPoint scrollPosition() const;
-    void setScrollPosition(const IntPoint&amp;);
-    void setScrollPositionWithoutContentEdgeConstraints(const IntPoint&amp;);
</del><ins>+    FloatPoint scrollPosition() const;
+    virtual void setScrollPosition(const FloatPoint&amp;) override;
+    void setScrollPositionWithoutContentEdgeConstraints(const FloatPoint&amp;);
</ins><span class="cx"> 
</span><del>-    void setScrollLayerPosition(const IntPoint&amp;);
</del><ins>+    void setScrollLayerPosition(const FloatPoint&amp;);
</ins><span class="cx"> 
</span><del>-    IntPoint minimumScrollPosition() const;
-    IntPoint maximumScrollPosition() const;
</del><ins>+    FloatPoint minimumScrollPosition() const;
+    FloatPoint maximumScrollPosition() const;
</ins><span class="cx"> 
</span><span class="cx">     void scrollBy(const IntSize&amp;);
</span><span class="cx">     void scrollByWithoutContentEdgeConstraints(const IntSize&amp;);
</span><span class="cx"> 
</span><del>-    void updateMainFramePinState(const IntPoint&amp; scrollPosition);
</del><ins>+    void updateMainFramePinState(const FloatPoint&amp; scrollPosition);
</ins><span class="cx"> 
</span><span class="cx">     void logExposedUnfilledArea();
</span><span class="cx"> 
</span><span class="lines">@@ -90,7 +90,7 @@
</span><span class="cx">     RetainPtr&lt;CALayer&gt; m_footerLayer;
</span><span class="cx">     RetainPtr&lt;ScrollbarPainter&gt; m_verticalScrollbarPainter;
</span><span class="cx">     RetainPtr&lt;ScrollbarPainter&gt; m_horizontalScrollbarPainter;
</span><del>-    IntPoint m_probableMainThreadScrollPosition;
</del><ins>+    FloatPoint m_probableMainThreadScrollPosition;
</ins><span class="cx">     bool m_lastScrollHadUnfilledPixels;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingmacScrollingTreeScrollingNodeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx">     if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::RequestedScrollPosition))
</span><span class="cx">         setScrollPosition(scrollingStateNode.requestedScrollPosition());
</span><span class="cx"> 
</span><del>-    if (scrollingStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer) || scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::TotalContentsSize) || scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ViewportRect))
</del><ins>+    if (scrollingStateNode.hasChangedProperty(ScrollingStateNode::ScrollLayer) || scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::TotalContentsSize) || scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::ViewportConstrainedObjectRect))
</ins><span class="cx">         updateMainFramePinState(scrollPosition());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -237,7 +237,7 @@
</span><span class="cx"> 
</span><span class="cx"> IntPoint ScrollingTreeScrollingNodeMac::absoluteScrollPosition()
</span><span class="cx"> {
</span><del>-    return scrollPosition();
</del><ins>+    return roundedIntPoint(scrollPosition());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ScrollingTreeScrollingNodeMac::immediateScrollBy(const FloatSize&amp; offset)
</span><span class="lines">@@ -278,18 +278,18 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollingTreeScrollingNodeMac::adjustScrollPositionToBoundsIfNecessary()
</span><span class="cx"> {
</span><del>-    IntPoint currentScrollPosition = absoluteScrollPosition();
-    IntPoint minPosition = minimumScrollPosition();
-    IntPoint maxPosition = maximumScrollPosition();
</del><ins>+    FloatPoint currentScrollPosition = absoluteScrollPosition();
+    FloatPoint minPosition = minimumScrollPosition();
+    FloatPoint maxPosition = maximumScrollPosition();
</ins><span class="cx"> 
</span><del>-    int nearestXWithinBounds = std::max&lt;int&gt;(std::min&lt;int&gt;(currentScrollPosition.x(), maxPosition.x()), minPosition.x());
-    int nearestYWithinBounds = std::max&lt;int&gt;(std::min&lt;int&gt;(currentScrollPosition.y(), maxPosition.y()), minPosition.y());
</del><ins>+    float nearestXWithinBounds = std::max(std::min(currentScrollPosition.x(), maxPosition.x()), minPosition.x());
+    float nearestYWithinBounds = std::max(std::min(currentScrollPosition.y(), maxPosition.y()), minPosition.y());
</ins><span class="cx"> 
</span><del>-    IntPoint nearestPointWithinBounds(nearestXWithinBounds, nearestYWithinBounds);
</del><ins>+    FloatPoint nearestPointWithinBounds(nearestXWithinBounds, nearestYWithinBounds);
</ins><span class="cx">     immediateScrollBy(nearestPointWithinBounds - currentScrollPosition);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-IntPoint ScrollingTreeScrollingNodeMac::scrollPosition() const
</del><ins>+FloatPoint ScrollingTreeScrollingNodeMac::scrollPosition() const
</ins><span class="cx"> {
</span><span class="cx">     if (shouldUpdateScrollLayerPositionSynchronously())
</span><span class="cx">         return m_probableMainThreadScrollPosition;
</span><span class="lines">@@ -298,9 +298,9 @@
</span><span class="cx">     return IntPoint(-scrollLayerPosition.x + scrollOrigin().x(), -scrollLayerPosition.y + scrollOrigin().y());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTreeScrollingNodeMac::setScrollPosition(const IntPoint&amp; scrollPosition)
</del><ins>+void ScrollingTreeScrollingNodeMac::setScrollPosition(const FloatPoint&amp; scrollPosition)
</ins><span class="cx"> {
</span><del>-    IntPoint newScrollPosition = scrollPosition;
</del><ins>+    FloatPoint newScrollPosition = scrollPosition;
</ins><span class="cx">     newScrollPosition = newScrollPosition.shrunkTo(maximumScrollPosition());
</span><span class="cx">     newScrollPosition = newScrollPosition.expandedTo(minimumScrollPosition());
</span><span class="cx"> 
</span><span class="lines">@@ -310,7 +310,7 @@
</span><span class="cx">         logExposedUnfilledArea();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTreeScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints(const IntPoint&amp; scrollPosition)
</del><ins>+void ScrollingTreeScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints(const FloatPoint&amp; scrollPosition)
</ins><span class="cx"> {
</span><span class="cx">     updateMainFramePinState(scrollPosition);
</span><span class="cx"> 
</span><span class="lines">@@ -324,14 +324,15 @@
</span><span class="cx">     scrollingTree().scrollingTreeNodeDidScroll(scrollingNodeID(), scrollPosition);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTreeScrollingNodeMac::setScrollLayerPosition(const IntPoint&amp; position)
</del><ins>+void ScrollingTreeScrollingNodeMac::setScrollLayerPosition(const FloatPoint&amp; position)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!shouldUpdateScrollLayerPositionSynchronously());
</span><span class="cx">     m_scrollLayer.get().position = CGPointMake(-position.x() + scrollOrigin().x(), -position.y() + scrollOrigin().y());
</span><span class="cx"> 
</span><span class="cx">     ScrollBehaviorForFixedElements behaviorForFixed = scrollBehaviorForFixedElements();
</span><del>-    IntPoint scrollOffset = position - toIntSize(scrollOrigin());
-    IntSize scrollOffsetForFixedChildren = FrameView::scrollOffsetForFixedPosition(viewportRect(), totalContentsSize(), scrollOffset, scrollOrigin(), frameScaleFactor(), false, behaviorForFixed, headerHeight(), footerHeight());
</del><ins>+    FloatPoint scrollOffset = position - toFloatSize(scrollOrigin());
+    // FIXME: scrollOffsetForFixedPosition() needs to do float math.
+    FloatSize scrollOffsetForFixedChildren = FrameView::scrollOffsetForFixedPosition(enclosingIntRect(viewportConstrainedObjectRect()), totalContentsSize(), flooredIntPoint(scrollOffset), scrollOrigin(), frameScaleFactor(), false, behaviorForFixed, headerHeight(), footerHeight());
</ins><span class="cx">     if (m_counterScrollingLayer)
</span><span class="cx">         m_counterScrollingLayer.get().position = FloatPoint(scrollOffsetForFixedChildren);
</span><span class="cx"> 
</span><span class="lines">@@ -340,7 +341,7 @@
</span><span class="cx">     // then we should recompute scrollOffsetForFixedChildren for the banner with a scale factor of 1.
</span><span class="cx">     float horizontalScrollOffsetForBanner = scrollOffsetForFixedChildren.width();
</span><span class="cx">     if (frameScaleFactor() != 1)
</span><del>-        horizontalScrollOffsetForBanner = FrameView::scrollOffsetForFixedPosition(viewportRect(), totalContentsSize(), scrollOffset, scrollOrigin(), 1, false, behaviorForFixed, headerHeight(), footerHeight()).width();
</del><ins>+        horizontalScrollOffsetForBanner = FrameView::scrollOffsetForFixedPosition(enclosingIntRect(viewportConstrainedObjectRect()), totalContentsSize(), flooredIntPoint(scrollOffset), scrollOrigin(), 1, false, behaviorForFixed, headerHeight(), footerHeight()).width();
</ins><span class="cx"> 
</span><span class="cx">     if (m_headerLayer)
</span><span class="cx">         m_headerLayer.get().position = FloatPoint(horizontalScrollOffsetForBanner, 0);
</span><span class="lines">@@ -348,7 +349,7 @@
</span><span class="cx">     if (m_footerLayer)
</span><span class="cx">         m_footerLayer.get().position = FloatPoint(horizontalScrollOffsetForBanner, totalContentsSize().height() - footerHeight());
</span><span class="cx"> 
</span><del>-    IntRect viewportRect = this-&gt;viewportRect();
</del><ins>+    FloatRect viewportRect = viewportConstrainedObjectRect();
</ins><span class="cx"> 
</span><span class="cx">     if (m_verticalScrollbarPainter || m_horizontalScrollbarPainter) {
</span><span class="cx">         [CATransaction begin];
</span><span class="lines">@@ -376,14 +377,14 @@
</span><span class="cx">     if (!m_children)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    viewportRect.setLocation(IntPoint(scrollOffsetForFixedChildren));
</del><ins>+    viewportRect.setLocation(FloatPoint() + scrollOffsetForFixedChildren);
</ins><span class="cx"> 
</span><span class="cx">     size_t size = m_children-&gt;size();
</span><span class="cx">     for (size_t i = 0; i &lt; size; ++i)
</span><span class="cx">         m_children-&gt;at(i)-&gt;parentScrollPositionDidChange(viewportRect, FloatSize());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-IntPoint ScrollingTreeScrollingNodeMac::minimumScrollPosition() const
</del><ins>+FloatPoint ScrollingTreeScrollingNodeMac::minimumScrollPosition() const
</ins><span class="cx"> {
</span><span class="cx">     IntPoint position;
</span><span class="cx">     
</span><span class="lines">@@ -393,12 +394,12 @@
</span><span class="cx">     return position;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-IntPoint ScrollingTreeScrollingNodeMac::maximumScrollPosition() const
</del><ins>+FloatPoint ScrollingTreeScrollingNodeMac::maximumScrollPosition() const
</ins><span class="cx"> {
</span><del>-    IntPoint position(totalContentsSizeForRubberBand().width() - viewportRect().width(),
-                      totalContentsSizeForRubberBand().height() - viewportRect().height());
</del><ins>+    FloatPoint position(totalContentsSizeForRubberBand().width() - viewportConstrainedObjectRect().width(),
+        totalContentsSizeForRubberBand().height() - viewportConstrainedObjectRect().height());
</ins><span class="cx"> 
</span><del>-    position.clampNegativeToZero();
</del><ins>+    position = position.expandedTo(FloatPoint());
</ins><span class="cx"> 
</span><span class="cx">     if (scrollingTree().rootNode() == this &amp;&amp; scrollingTree().scrollPinningBehavior() == PinToTop)
</span><span class="cx">         position.setY(minimumScrollPosition().y());
</span><span class="lines">@@ -416,7 +417,7 @@
</span><span class="cx">     setScrollPositionWithoutContentEdgeConstraints(scrollPosition() + offset);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTreeScrollingNodeMac::updateMainFramePinState(const IntPoint&amp; scrollPosition)
</del><ins>+void ScrollingTreeScrollingNodeMac::updateMainFramePinState(const FloatPoint&amp; scrollPosition)
</ins><span class="cx"> {
</span><span class="cx">     bool pinnedToTheLeft = scrollPosition.x() &lt;= minimumScrollPosition().x();
</span><span class="cx">     bool pinnedToTheRight = scrollPosition.x() &gt;= maximumScrollPosition().x();
</span><span class="lines">@@ -450,8 +451,8 @@
</span><span class="cx">         [sublayers release];
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    IntPoint scrollPosition = this-&gt;scrollPosition();
-    unsigned unfilledArea = TileController::blankPixelCountForTiles(tiles, viewportRect(), IntPoint(-scrollPosition.x(), -scrollPosition.y()));
</del><ins>+    FloatPoint scrollPosition = this-&gt;scrollPosition();
+    unsigned unfilledArea = TileController::blankPixelCountForTiles(tiles, viewportConstrainedObjectRect(), IntPoint(-scrollPosition.x(), -scrollPosition.y()));
</ins><span class="cx"> 
</span><span class="cx">     if (unfilledArea || m_lastScrollHadUnfilledPixels)
</span><span class="cx">         WTFLogAlways(&quot;SCROLLING: Exposed tileless area. Time: %f Unfilled Pixels: %u\n&quot;, WTF::monotonicallyIncreasingTime(), unfilledArea);
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingmacScrollingTreeStickyNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     ScrollingTreeStickyNode(ScrollingTree&amp;, ScrollingNodeID);
</span><span class="cx"> 
</span><span class="cx">     virtual void updateBeforeChildren(const ScrollingStateNode&amp;) override;
</span><del>-    virtual void parentScrollPositionDidChange(const IntRect&amp; viewportRect, const FloatSize&amp; cumulativeDelta) override;
</del><ins>+    virtual void parentScrollPositionDidChange(const FloatRect&amp; viewportRect, const FloatSize&amp; cumulativeDelta) override;
</ins><span class="cx"> 
</span><span class="cx">     StickyPositionViewportConstraints m_constraints;
</span><span class="cx">     RetainPtr&lt;CALayer&gt; m_layer;
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingmacScrollingTreeStickyNodemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">     return CGPointMake(a.x * b.width, a.y * b.height);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ScrollingTreeStickyNode::parentScrollPositionDidChange(const IntRect&amp; viewportRect, const FloatSize&amp; cumulativeDelta)
</del><ins>+void ScrollingTreeStickyNode::parentScrollPositionDidChange(const FloatRect&amp; viewportRect, const FloatSize&amp; cumulativeDelta)
</ins><span class="cx"> {
</span><span class="cx">     FloatPoint layerPosition = m_constraints.layerPositionForConstrainingRect(viewportRect);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFloatPointh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FloatPoint.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FloatPoint.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebCore/platform/graphics/FloatPoint.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -116,6 +116,11 @@
</span><span class="cx">         return m_x * m_x + m_y * m_y;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    FloatPoint shrunkTo(const FloatPoint&amp; other) const
+    {
+        return FloatPoint(std::min(m_x, other.m_x), std::min(m_y, other.m_y));
+    }
+
</ins><span class="cx">     FloatPoint expandedTo(const FloatPoint&amp; other) const
</span><span class="cx">     {
</span><span class="cx">         return FloatPoint(std::max(m_x, other.m_x), std::max(m_y, other.m_y));
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebKit2/ChangeLog        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2014-01-31  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        Pass the viewport rect and scroll origin independently into the scrolling tree, and make things floats
+        https://bugs.webkit.org/show_bug.cgi?id=128032
+
+        Reviewed by Tim Horton.
+
+        Pass the viewport rect and scroll offset independently into the ScrollingTree
+        via the ScrollingStateScrollingNode, since on iOS the scroll offset doesn't
+        always correspond to the viewport rect.
+        
+        Make the viewport rect and the scroll origin be float-based, since on
+        Retina screens and with zooming these can both be non-integral.
+
+        * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:
+        (ArgumentCoder&lt;ScrollingStateScrollingNode&gt;::encode):
+        (ArgumentCoder&lt;ScrollingStateScrollingNode&gt;::decode):
+        * UIProcess/Scrolling/RemoteScrollingTree.cpp:
+        (WebKit::RemoteScrollingTree::scrollingTreeNodeDidScroll):
+        * UIProcess/Scrolling/RemoteScrollingTree.h:
+
</ins><span class="cx"> 2014-01-31  Tim Horton  &lt;timothy_horton@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         WebKit2 View Gestures: Crash when pinch-zooming on a page that is just a frameset
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedScrollingRemoteScrollingCoordinatorTransactioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebKit2/Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -108,8 +108,9 @@
</span><span class="cx"> {
</span><span class="cx">     encoder &lt;&lt; static_cast&lt;const ScrollingStateNode&amp;&gt;(node);
</span><span class="cx">     
</span><del>-    SCROLLING_NODE_ENCODE(ViewportRect, viewportRect)
</del><ins>+    SCROLLING_NODE_ENCODE(ViewportConstrainedObjectRect, viewportConstrainedObjectRect)
</ins><span class="cx">     SCROLLING_NODE_ENCODE(TotalContentsSize, totalContentsSize)
</span><ins>+    SCROLLING_NODE_ENCODE(ScrollPosition, scrollPosition)
</ins><span class="cx">     SCROLLING_NODE_ENCODE(ScrollOrigin, scrollOrigin)
</span><span class="cx">     SCROLLING_NODE_ENCODE(FrameScaleFactor, frameScaleFactor)
</span><span class="cx"> //    SCROLLING_NODE_ENCODE(NonFastScrollableRegion, nonFastScrollableRegion) // FIXME: no encoder support for Region
</span><span class="lines">@@ -143,8 +144,9 @@
</span><span class="cx">     if (!decoder.decode(static_cast&lt;ScrollingStateNode&amp;&gt;(node)))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    SCROLLING_NODE_DECODE(ViewportRect, IntRect, setViewportRect);
</del><ins>+    SCROLLING_NODE_DECODE(ViewportConstrainedObjectRect, FloatRect, setViewportConstrainedObjectRect);
</ins><span class="cx">     SCROLLING_NODE_DECODE(TotalContentsSize, IntSize, setTotalContentsSize);
</span><ins>+    SCROLLING_NODE_DECODE(ScrollPosition, FloatPoint, setScrollPosition);
</ins><span class="cx">     SCROLLING_NODE_DECODE(ScrollOrigin, IntPoint, setScrollOrigin);
</span><span class="cx">     SCROLLING_NODE_DECODE(FrameScaleFactor, float, setFrameScaleFactor);
</span><span class="cx"> //    SCROLLING_NODE_DECODE(NonFastScrollableRegion, Region, setNonFastScrollableRegion); // FIXME: no decoder support for Region.
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessScrollingRemoteScrollingTreecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingTree.cpp (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingTree.cpp        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingTree.cpp        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void RemoteScrollingTree::scrollingTreeNodeDidScroll(ScrollingNodeID nodeID, const IntPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition)
</del><ins>+void RemoteScrollingTree::scrollingTreeNodeDidScroll(ScrollingNodeID nodeID, const FloatPoint&amp; scrollPosition, SetOrSyncScrollingLayerPosition)
</ins><span class="cx"> {
</span><span class="cx">     m_scrollingCoordinatorProxy.scrollPositionChanged(nodeID, scrollPosition);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessScrollingRemoteScrollingTreeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingTree.h (163230 => 163231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingTree.h        2014-02-01 02:59:55 UTC (rev 163230)
+++ trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingTree.h        2014-02-01 03:57:48 UTC (rev 163231)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> #if PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS)
</span><span class="cx">     virtual void handleWheelEventPhase(WebCore::PlatformWheelEventPhase) override;
</span><span class="cx"> #endif
</span><del>-    virtual void scrollingTreeNodeDidScroll(WebCore::ScrollingNodeID, const WebCore::IntPoint&amp; scrollPosition, WebCore::SetOrSyncScrollingLayerPosition = WebCore::SyncScrollingLayerPosition) override;
</del><ins>+    virtual void scrollingTreeNodeDidScroll(WebCore::ScrollingNodeID, const WebCore::FloatPoint&amp; scrollPosition, WebCore::SetOrSyncScrollingLayerPosition = WebCore::SyncScrollingLayerPosition) override;
</ins><span class="cx"> 
</span><span class="cx">     virtual PassOwnPtr&lt;WebCore::ScrollingTreeNode&gt; createNode(WebCore::ScrollingNodeType, WebCore::ScrollingNodeID);
</span><span class="cx">     
</span></span></pre>
</div>
</div>

</body>
</html>