<!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>[165279] trunk/Source/WebKit2</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/165279">165279</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2014-03-07 12:52:09 -0800 (Fri, 07 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iOS] Add an updateID to visibleContentRect updates which is passed back in layer transactions, so we know whether transactions are stale
https://bugs.webkit.org/show_bug.cgi?id=129897

Reviewed by Benjamin Poulain.

In WebKit2 on iOS we need to know when layer updates from the web process
are stale with respect to visible rect updates from the UI process. Do so
by adding an updateID to VisibleContentRectUpdateInfo, and storing it
on each side, returning it in RemoteLayerTreeTransaction.

Did some re-ordering of members and encoding order in RemoteLayerTreeTransaction
to group like data members together.

* Shared/VisibleContentRectUpdateInfo.cpp:
(WebKit::VisibleContentRectUpdateInfo::encode):
(WebKit::VisibleContentRectUpdateInfo::decode):
* Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::updateID):
(WebKit::operator==):
* Shared/mac/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::setLastVisibleContentRectUpdateID):
(WebKit::RemoteLayerTreeTransaction::lastVisibleContentRectUpdateID):
* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::encode):
(WebKit::RemoteLayerTreeTransaction::decode):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::nextVisibleContentRectUpdateID):
(WebKit::WebPageProxy::lastVisibleContentRectUpdateID):
* UIProcess/ios/WKContentView.mm:
(-[WKContentView didUpdateVisibleRect:unobscuredRect:scale:inStableState:]):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
(WebKit::WebPage::willCommitLayerTree):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::updateVisibleContentRects):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedVisibleContentRectUpdateInfocpp">trunk/Source/WebKit2/Shared/VisibleContentRectUpdateInfo.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedVisibleContentRectUpdateInfoh">trunk/Source/WebKit2/Shared/VisibleContentRectUpdateInfo.h</a></li>
<li><a href="#trunkSourceWebKit2SharedmacRemoteLayerTreeTransactionh">trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h</a></li>
<li><a href="#trunkSourceWebKit2SharedmacRemoteLayerTreeTransactionmm">trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKContentViewmm">trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm">trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (165278 => 165279)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-03-07 20:39:13 UTC (rev 165278)
+++ trunk/Source/WebKit2/ChangeLog        2014-03-07 20:52:09 UTC (rev 165279)
</span><span class="lines">@@ -1,3 +1,43 @@
</span><ins>+2014-03-07  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        [iOS] Add an updateID to visibleContentRect updates which is passed back in layer transactions, so we know whether transactions are stale
+        https://bugs.webkit.org/show_bug.cgi?id=129897
+
+        Reviewed by Benjamin Poulain.
+
+        In WebKit2 on iOS we need to know when layer updates from the web process
+        are stale with respect to visible rect updates from the UI process. Do so
+        by adding an updateID to VisibleContentRectUpdateInfo, and storing it
+        on each side, returning it in RemoteLayerTreeTransaction.
+        
+        Did some re-ordering of members and encoding order in RemoteLayerTreeTransaction
+        to group like data members together.
+        
+        * Shared/VisibleContentRectUpdateInfo.cpp:
+        (WebKit::VisibleContentRectUpdateInfo::encode):
+        (WebKit::VisibleContentRectUpdateInfo::decode):
+        * Shared/VisibleContentRectUpdateInfo.h:
+        (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
+        (WebKit::VisibleContentRectUpdateInfo::updateID):
+        (WebKit::operator==):
+        * Shared/mac/RemoteLayerTreeTransaction.h:
+        (WebKit::RemoteLayerTreeTransaction::setLastVisibleContentRectUpdateID):
+        (WebKit::RemoteLayerTreeTransaction::lastVisibleContentRectUpdateID):
+        * Shared/mac/RemoteLayerTreeTransaction.mm:
+        (WebKit::RemoteLayerTreeTransaction::encode):
+        (WebKit::RemoteLayerTreeTransaction::decode):
+        * UIProcess/WebPageProxy.h:
+        (WebKit::WebPageProxy::nextVisibleContentRectUpdateID):
+        (WebKit::WebPageProxy::lastVisibleContentRectUpdateID):
+        * UIProcess/ios/WKContentView.mm:
+        (-[WKContentView didUpdateVisibleRect:unobscuredRect:scale:inStableState:]):
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::WebPage):
+        (WebKit::WebPage::willCommitLayerTree):
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::updateVisibleContentRects):
+
</ins><span class="cx"> 2014-03-07  Roger Fong  &lt;roger_fong@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Replace setSystemWebGLLoadPolicy API with methods to query for WebGL blocking policy.
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedVisibleContentRectUpdateInfocpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/VisibleContentRectUpdateInfo.cpp (165278 => 165279)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/VisibleContentRectUpdateInfo.cpp        2014-03-07 20:39:13 UTC (rev 165278)
+++ trunk/Source/WebKit2/Shared/VisibleContentRectUpdateInfo.cpp        2014-03-07 20:52:09 UTC (rev 165279)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx">     encoder &lt;&lt; m_unobscuredRect;
</span><span class="cx">     encoder &lt;&lt; m_customFixedPositionRect;
</span><span class="cx">     encoder &lt;&lt; m_scale;
</span><ins>+    encoder &lt;&lt; m_updateID;
</ins><span class="cx">     encoder &lt;&lt; m_inStableState;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -49,6 +50,8 @@
</span><span class="cx">         return false;
</span><span class="cx">     if (!decoder.decode(result.m_scale))
</span><span class="cx">         return false;
</span><ins>+    if (!decoder.decode(result.m_updateID))
+        return false;
</ins><span class="cx">     if (!decoder.decode(result.m_inStableState))
</span><span class="cx">         return false;
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedVisibleContentRectUpdateInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/VisibleContentRectUpdateInfo.h (165278 => 165279)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/VisibleContentRectUpdateInfo.h        2014-03-07 20:39:13 UTC (rev 165278)
+++ trunk/Source/WebKit2/Shared/VisibleContentRectUpdateInfo.h        2014-03-07 20:52:09 UTC (rev 165279)
</span><span class="lines">@@ -39,14 +39,17 @@
</span><span class="cx"> public:
</span><span class="cx">     VisibleContentRectUpdateInfo()
</span><span class="cx">         : m_scale(-1)
</span><ins>+        , m_updateID(0)
+        , m_inStableState(false)
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    VisibleContentRectUpdateInfo(const WebCore::FloatRect&amp; exposedRect, const WebCore::FloatRect&amp; unobscuredRect, const WebCore::FloatRect&amp; customFixedPositionRect, double scale, bool inStableState)
</del><ins>+    VisibleContentRectUpdateInfo(uint64_t updateID, const WebCore::FloatRect&amp; exposedRect, const WebCore::FloatRect&amp; unobscuredRect, const WebCore::FloatRect&amp; customFixedPositionRect, double scale, bool inStableState)
</ins><span class="cx">         : m_exposedRect(exposedRect)
</span><span class="cx">         , m_unobscuredRect(unobscuredRect)
</span><span class="cx">         , m_customFixedPositionRect(customFixedPositionRect)
</span><span class="cx">         , m_scale(scale)
</span><ins>+        , m_updateID(updateID)
</ins><span class="cx">         , m_inStableState(inStableState)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="lines">@@ -55,6 +58,7 @@
</span><span class="cx">     const WebCore::FloatRect&amp; unobscuredRect() const { return m_unobscuredRect; }
</span><span class="cx">     const WebCore::FloatRect&amp; customFixedPositionRect() const { return m_customFixedPositionRect; }
</span><span class="cx">     double scale() const { return m_scale; }
</span><ins>+    uint64_t updateID() const { return m_updateID; }
</ins><span class="cx">     bool inStableState() const { return m_inStableState; }
</span><span class="cx"> 
</span><span class="cx">     void encode(IPC::ArgumentEncoder&amp;) const;
</span><span class="lines">@@ -65,11 +69,13 @@
</span><span class="cx">     WebCore::FloatRect m_unobscuredRect;
</span><span class="cx">     WebCore::FloatRect m_customFixedPositionRect;
</span><span class="cx">     double m_scale;
</span><ins>+    uint64_t m_updateID;
</ins><span class="cx">     bool m_inStableState;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> inline bool operator==(const VisibleContentRectUpdateInfo&amp; a, const VisibleContentRectUpdateInfo&amp; b)
</span><span class="cx"> {
</span><ins>+    // Note: the comparison doesn't include updateID since we care about equality based on the other data.
</ins><span class="cx">     return a.scale() == b.scale()
</span><span class="cx">         &amp;&amp; a.exposedRect() == b.exposedRect()
</span><span class="cx">         &amp;&amp; a.unobscuredRect() == b.unobscuredRect()
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedmacRemoteLayerTreeTransactionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h (165278 => 165279)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h        2014-03-07 20:39:13 UTC (rev 165278)
+++ trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h        2014-03-07 20:52:09 UTC (rev 165279)
</span><span class="lines">@@ -164,6 +164,9 @@
</span><span class="cx"> 
</span><span class="cx">     double pageScaleFactor() const { return m_pageScaleFactor; }
</span><span class="cx">     void setPageScaleFactor(double pageScaleFactor) { m_pageScaleFactor = pageScaleFactor; }
</span><ins>+    
+    void setLastVisibleContentRectUpdateID(uint64_t lastVisibleContentRectUpdateID) { m_lastVisibleContentRectUpdateID = lastVisibleContentRectUpdateID; }
+    uint64_t lastVisibleContentRectUpdateID() const { return m_lastVisibleContentRectUpdateID; }
</ins><span class="cx"> 
</span><span class="cx">     bool scaleWasSetByUIProcess() const { return m_scaleWasSetByUIProcess; }
</span><span class="cx">     void setScaleWasSetByUIProcess(bool scaleWasSetByUIProcess) { m_scaleWasSetByUIProcess = scaleWasSetByUIProcess; }
</span><span class="lines">@@ -188,14 +191,16 @@
</span><span class="cx">     LayerPropertiesMap m_changedLayerProperties;
</span><span class="cx">     Vector&lt;LayerCreationProperties&gt; m_createdLayers;
</span><span class="cx">     Vector&lt;WebCore::GraphicsLayer::PlatformLayerID&gt; m_destroyedLayerIDs;
</span><ins>+    Vector&lt;WebCore::GraphicsLayer::PlatformLayerID&gt; m_videoLayerIDsPendingFullscreen;
+
</ins><span class="cx">     WebCore::IntSize m_contentsSize;
</span><span class="cx">     double m_pageScaleFactor;
</span><del>-    bool m_scaleWasSetByUIProcess;
-    uint64_t m_renderTreeSize;
</del><span class="cx">     double m_minimumScaleFactor;
</span><span class="cx">     double m_maximumScaleFactor;
</span><ins>+    uint64_t m_lastVisibleContentRectUpdateID;
+    uint64_t m_renderTreeSize;
+    bool m_scaleWasSetByUIProcess;
</ins><span class="cx">     bool m_allowsUserScaling;
</span><del>-    Vector&lt;WebCore::GraphicsLayer::PlatformLayerID&gt; m_videoLayerIDsPendingFullscreen;
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedmacRemoteLayerTreeTransactionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm (165278 => 165279)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm        2014-03-07 20:39:13 UTC (rev 165278)
+++ trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm        2014-03-07 20:52:09 UTC (rev 165279)
</span><span class="lines">@@ -411,14 +411,18 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     encoder &lt;&lt; m_destroyedLayerIDs;
</span><ins>+    encoder &lt;&lt; m_videoLayerIDsPendingFullscreen;
+
</ins><span class="cx">     encoder &lt;&lt; m_contentsSize;
</span><span class="cx">     encoder &lt;&lt; m_pageScaleFactor;
</span><del>-    encoder &lt;&lt; m_scaleWasSetByUIProcess;
</del><span class="cx">     encoder &lt;&lt; m_minimumScaleFactor;
</span><span class="cx">     encoder &lt;&lt; m_maximumScaleFactor;
</span><ins>+
+    encoder &lt;&lt; m_lastVisibleContentRectUpdateID;
+    encoder &lt;&lt; m_renderTreeSize;
+
+    encoder &lt;&lt; m_scaleWasSetByUIProcess;
</ins><span class="cx">     encoder &lt;&lt; m_allowsUserScaling;
</span><del>-    encoder &lt;&lt; m_renderTreeSize;
-    encoder &lt;&lt; m_videoLayerIDsPendingFullscreen;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RemoteLayerTreeTransaction::decode(IPC::ArgumentDecoder&amp; decoder, RemoteLayerTreeTransaction&amp; result)
</span><span class="lines">@@ -455,30 +459,33 @@
</span><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    if (!decoder.decode(result.m_videoLayerIDsPendingFullscreen))
+        return false;
+
</ins><span class="cx">     if (!decoder.decode(result.m_contentsSize))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     if (!decoder.decode(result.m_pageScaleFactor))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (!decoder.decode(result.m_scaleWasSetByUIProcess))
-        return false;
-
</del><span class="cx">     if (!decoder.decode(result.m_minimumScaleFactor))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     if (!decoder.decode(result.m_maximumScaleFactor))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (!decoder.decode(result.m_allowsUserScaling))
</del><ins>+    if (!decoder.decode(result.m_lastVisibleContentRectUpdateID))
</ins><span class="cx">         return false;
</span><del>-    
</del><ins>+
</ins><span class="cx">     if (!decoder.decode(result.m_renderTreeSize))
</span><span class="cx">         return false;
</span><del>-    
-    if (!decoder.decode(result.m_videoLayerIDsPendingFullscreen))
</del><ins>+
+    if (!decoder.decode(result.m_scaleWasSetByUIProcess))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><ins>+    if (!decoder.decode(result.m_allowsUserScaling))
+        return false;
+
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (165278 => 165279)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-03-07 20:39:13 UTC (rev 165278)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-03-07 20:52:09 UTC (rev 165279)
</span><span class="lines">@@ -459,6 +459,9 @@
</span><span class="cx">     const WebCore::FloatRect&amp; unobscuredContentRect() const { return m_lastVisibleContentRectUpdate.unobscuredRect(); }
</span><span class="cx"> 
</span><span class="cx">     bool updateVisibleContentRects(const VisibleContentRectUpdateInfo&amp;);
</span><ins>+    uint64_t nextVisibleContentRectUpdateID() const { return m_lastVisibleContentRectUpdate.updateID() + 1; }
+    uint64_t lastVisibleContentRectUpdateID() const { return m_lastVisibleContentRectUpdate.updateID(); }
+    
</ins><span class="cx">     void setViewportConfigurationMinimumLayoutSize(const WebCore::IntSize&amp;);
</span><span class="cx">     void didCommitLayerTree(const WebKit::RemoteLayerTreeTransaction&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm (165278 => 165279)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm        2014-03-07 20:39:13 UTC (rev 165278)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm        2014-03-07 20:52:09 UTC (rev 165279)
</span><span class="lines">@@ -173,7 +173,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     FloatRect fixedPosRect = [self fixedPositionRectFromExposedRect:unobscuredRect scale:scale];
</span><del>-    _page-&gt;updateVisibleContentRects(VisibleContentRectUpdateInfo(visibleRect, unobscuredRect, fixedPosRect, scale, isStableState));
</del><ins>+    _page-&gt;updateVisibleContentRects(VisibleContentRectUpdateInfo(_page-&gt;nextVisibleContentRectUpdateID(), visibleRect, unobscuredRect, fixedPosRect, scale, isStableState));
</ins><span class="cx"> 
</span><span class="cx">     RemoteScrollingCoordinatorProxy* scrollingCoordinator = _page-&gt;scrollingCoordinatorProxy();
</span><span class="cx">     scrollingCoordinator-&gt;scrollPositionChangedViaDelegatedScrolling(scrollingCoordinator-&gt;rootScrollingNodeID(), unobscuredRect.origin);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (165278 => 165279)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2014-03-07 20:39:13 UTC (rev 165278)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2014-03-07 20:52:09 UTC (rev 165279)
</span><span class="lines">@@ -283,6 +283,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     , m_shouldReturnWordAtSelection(false)
</span><ins>+    , m_lastVisibleContentRectUpdateID(0)
</ins><span class="cx">     , m_scaleWasSetByUIProcess(false)
</span><span class="cx">     , m_userHasChangedPageScaleFactor(false)
</span><span class="cx"> #endif
</span><span class="lines">@@ -2632,6 +2633,7 @@
</span><span class="cx">     layerTransaction.setPageScaleFactor(corePage()-&gt;pageScaleFactor());
</span><span class="cx">     layerTransaction.setRenderTreeSize(corePage()-&gt;renderTreeSize());
</span><span class="cx"> #if PLATFORM(IOS)
</span><ins>+    layerTransaction.setLastVisibleContentRectUpdateID(m_lastVisibleContentRectUpdateID);
</ins><span class="cx">     layerTransaction.setScaleWasSetByUIProcess(scaleWasSetByUIProcess());
</span><span class="cx">     layerTransaction.setMinimumScaleFactor(minimumPageScaleFactor());
</span><span class="cx">     layerTransaction.setMaximumScaleFactor(maximumPageScaleFactor());
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (165278 => 165279)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2014-03-07 20:39:13 UTC (rev 165278)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2014-03-07 20:52:09 UTC (rev 165279)
</span><span class="lines">@@ -1100,6 +1100,7 @@
</span><span class="cx">     bool m_shouldReturnWordAtSelection;
</span><span class="cx"> 
</span><span class="cx">     WebCore::ViewportConfiguration m_viewportConfiguration;
</span><ins>+    uint64_t m_lastVisibleContentRectUpdateID;
</ins><span class="cx">     bool m_scaleWasSetByUIProcess;
</span><span class="cx">     bool m_userHasChangedPageScaleFactor;
</span><span class="cx">     WebCore::IntSize m_blockSelectionDesiredSize;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (165278 => 165279)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-03-07 20:39:13 UTC (rev 165278)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-03-07 20:52:09 UTC (rev 165279)
</span><span class="lines">@@ -1729,6 +1729,8 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPage::updateVisibleContentRects(const VisibleContentRectUpdateInfo&amp; visibleContentRectUpdateInfo)
</span><span class="cx"> {
</span><ins>+    m_lastVisibleContentRectUpdateID = visibleContentRectUpdateInfo.updateID();
+
</ins><span class="cx">     FloatRect exposedRect = visibleContentRectUpdateInfo.exposedRect();
</span><span class="cx">     m_drawingArea-&gt;setExposedContentRect(enclosingIntRect(exposedRect));
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>