<!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>[166516] 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/166516">166516</a></dd>
<dt>Author</dt> <dd>timothy_horton@apple.com</dd>
<dt>Date</dt> <dd>2014-03-31 12:37:30 -0700 (Mon, 31 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iOS WebKit2] Disable tile cohort retention for now
https://bugs.webkit.org/show_bug.cgi?id=130926
&lt;rdar://problem/16465413&gt;

Reviewed by Simon Fraser.

* WebCore.exp.in:
* page/Settings.cpp:
(WebCore::Settings::Settings):
(WebCore::Settings::setScrollingPerformanceLoggingEnabled):
(WebCore::Settings::setAggressiveTileRetentionEnabled): Deleted.
* page/Settings.h:
(WebCore::Settings::aggressiveTileRetentionEnabled): Deleted.
* page/Settings.in:
Use Settings.in for these simple settings.

* platform/graphics/GraphicsLayerClient.h:
(WebCore::GraphicsLayerClient::shouldAggressivelyRetainTiles):
(WebCore::GraphicsLayerClient::shouldTemporarilyRetainTileCohorts):
* platform/graphics/TiledBacking.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::platformCALayerShouldAggressivelyRetainTiles):
(WebCore::GraphicsLayerCA::platformCALayerShouldTemporarilyRetainTileCohorts):
* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/ca/PlatformCALayerClient.h:
(WebCore::PlatformCALayerClient::platformCALayerShouldAggressivelyRetainTiles):
(WebCore::PlatformCALayerClient::platformCALayerShouldTemporarilyRetainTileCohorts):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::shouldAggressivelyRetainTiles):
(WebCore::RenderLayerBacking::shouldTemporarilyRetainTileCohorts):
* rendering/RenderLayerBacking.h:
Plumb the two tile-retention settings through to TileController in a pull manner
instead of a push manner, as there were some cases (especially on iOS) where
the settings weren't always getting pushed down.

* platform/graphics/ca/mac/TileController.h:
* platform/graphics/ca/mac/TileController.mm:
(WebCore::TileController::TileController):
(WebCore::TileController::tileRevalidationTimerFired):
(WebCore::TileController::revalidateTiles):
(WebCore::TileController::drawTileMapContents):
Aggressive tile retention wins over temporary retention. If we aren't
using temporary (cohort) retention, throw away the cohort as soon as it
is created.

* Shared/WebPreferencesStore.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
Add a preference for temporary tile cohort retention (essentially, provide a setting
that means that we will never retain tiles at all once they leave the tile coverage rect).
Defaults to true to maintain existing behavior, except for iOS WebKit2, where
it defaults to false because we don't have the requisite support for purgeable tiles yet.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::updatePreferences):
(WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):</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="#trunkSourceWebCorepageSettingscpp">trunk/Source/WebCore/page/Settings.cpp</a></li>
<li><a href="#trunkSourceWebCorepageSettingsh">trunk/Source/WebCore/page/Settings.h</a></li>
<li><a href="#trunkSourceWebCorepageSettingsin">trunk/Source/WebCore/page/Settings.in</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGraphicsLayerClienth">trunk/Source/WebCore/platform/graphics/GraphicsLayerClient.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsTiledBackingh">trunk/Source/WebCore/platform/graphics/TiledBacking.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscaGraphicsLayerCAcpp">trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscaGraphicsLayerCAh">trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscaPlatformCALayerClienth">trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscamacTileControllerh">trunk/Source/WebCore/platform/graphics/ca/mac/TileController.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscamacTileControllermm">trunk/Source/WebCore/platform/graphics/ca/mac/TileController.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerBackingcpp">trunk/Source/WebCore/rendering/RenderLayerBacking.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerBackingh">trunk/Source/WebCore/rendering/RenderLayerBacking.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedWebPreferencesStoreh">trunk/Source/WebKit2/Shared/WebPreferencesStore.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPagemacTiledCoreAnimationDrawingAreamm">trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/ChangeLog        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -1,3 +1,50 @@
</span><ins>+2014-03-31  Tim Horton  &lt;timothy_horton@apple.com&gt;
+
+        [iOS WebKit2] Disable tile cohort retention for now
+        https://bugs.webkit.org/show_bug.cgi?id=130926
+        &lt;rdar://problem/16465413&gt;
+
+        Reviewed by Simon Fraser.
+
+        * WebCore.exp.in:
+        * page/Settings.cpp:
+        (WebCore::Settings::Settings):
+        (WebCore::Settings::setScrollingPerformanceLoggingEnabled):
+        (WebCore::Settings::setAggressiveTileRetentionEnabled): Deleted.
+        * page/Settings.h:
+        (WebCore::Settings::aggressiveTileRetentionEnabled): Deleted.
+        * page/Settings.in:
+        Use Settings.in for these simple settings.
+
+        * platform/graphics/GraphicsLayerClient.h:
+        (WebCore::GraphicsLayerClient::shouldAggressivelyRetainTiles):
+        (WebCore::GraphicsLayerClient::shouldTemporarilyRetainTileCohorts):
+        * platform/graphics/TiledBacking.h:
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::GraphicsLayerCA::platformCALayerShouldAggressivelyRetainTiles):
+        (WebCore::GraphicsLayerCA::platformCALayerShouldTemporarilyRetainTileCohorts):
+        * platform/graphics/ca/GraphicsLayerCA.h:
+        * platform/graphics/ca/PlatformCALayerClient.h:
+        (WebCore::PlatformCALayerClient::platformCALayerShouldAggressivelyRetainTiles):
+        (WebCore::PlatformCALayerClient::platformCALayerShouldTemporarilyRetainTileCohorts):
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::shouldAggressivelyRetainTiles):
+        (WebCore::RenderLayerBacking::shouldTemporarilyRetainTileCohorts):
+        * rendering/RenderLayerBacking.h:
+        Plumb the two tile-retention settings through to TileController in a pull manner
+        instead of a push manner, as there were some cases (especially on iOS) where
+        the settings weren't always getting pushed down.
+
+        * platform/graphics/ca/mac/TileController.h:
+        * platform/graphics/ca/mac/TileController.mm:
+        (WebCore::TileController::TileController):
+        (WebCore::TileController::tileRevalidationTimerFired):
+        (WebCore::TileController::revalidateTiles):
+        (WebCore::TileController::drawTileMapContents):
+        Aggressive tile retention wins over temporary retention. If we aren't
+        using temporary (cohort) retention, throw away the cohort as soon as it
+        is created.
+
</ins><span class="cx"> 2014-03-31  Beth Dakin  &lt;bdakin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Radio buttons and checkboxes should share code
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/WebCore.exp.in        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -1282,7 +1282,6 @@
</span><span class="cx"> __ZN7WebCore8Settings32setAcceleratedCompositingEnabledEb
</span><span class="cx"> __ZN7WebCore8Settings32setNeedsAdobeFrameReloadingQuirkEb
</span><span class="cx"> __ZN7WebCore8Settings32setScreenFontSubstitutionEnabledEb
</span><del>-__ZN7WebCore8Settings33setAggressiveTileRetentionEnabledEb
</del><span class="cx"> __ZN7WebCore8Settings33setFontFallbackPrefersPictographsEb
</span><span class="cx"> __ZN7WebCore8Settings35setBackgroundShouldExtendBeyondPageEb
</span><span class="cx"> __ZN7WebCore8Settings37setScrollingPerformanceLoggingEnabledEb
</span><span class="lines">@@ -1650,7 +1649,9 @@
</span><span class="cx"> __ZNK7WebCore15GraphicsLayerCA30visibleRectChangeRequiresFlushERKNS_9FloatRectE
</span><span class="cx"> __ZNK7WebCore15GraphicsLayerCA32platformCALayerDeviceScaleFactorEv
</span><span class="cx"> __ZNK7WebCore15GraphicsLayerCA33platformCALayerShowRepaintCounterEPNS_15PlatformCALayerE
</span><ins>+__ZNK7WebCore15GraphicsLayerCA44platformCALayerShouldAggressivelyRetainTilesEPNS_15PlatformCALayerE
</ins><span class="cx"> __ZNK7WebCore15GraphicsLayerCA49platformCALayerContentsScaleMultiplierForNewTilesEPNS_15PlatformCALayerE
</span><ins>+__ZNK7WebCore15GraphicsLayerCA49platformCALayerShouldTemporarilyRetainTileCohortsEPNS_15PlatformCALayerE
</ins><span class="cx"> __ZNK7WebCore15ProgressTracker17estimatedProgressEv
</span><span class="cx"> __ZNK7WebCore15ProtectionSpace10serverTypeEv
</span><span class="cx"> __ZNK7WebCore15ProtectionSpace26receivesCredentialSecurelyEv
</span><span class="lines">@@ -1960,7 +1961,9 @@
</span><span class="cx"> __ZThn???_NK7WebCore15GraphicsLayerCA26platformCALayerExposedRectEv
</span><span class="cx"> __ZThn???_NK7WebCore15GraphicsLayerCA32platformCALayerDeviceScaleFactorEv
</span><span class="cx"> __ZThn???_NK7WebCore15GraphicsLayerCA33platformCALayerShowRepaintCounterEPNS_15PlatformCALayerE
</span><ins>+__ZThn???_NK7WebCore15GraphicsLayerCA44platformCALayerShouldAggressivelyRetainTilesEPNS_15PlatformCALayerE
</ins><span class="cx"> __ZThn???_NK7WebCore15GraphicsLayerCA49platformCALayerContentsScaleMultiplierForNewTilesEPNS_15PlatformCALayerE
</span><ins>+__ZThn???_NK7WebCore15GraphicsLayerCA49platformCALayerShouldTemporarilyRetainTileCohortsEPNS_15PlatformCALayerE
</ins><span class="cx"> _filenameByFixingIllegalCharacters
</span><span class="cx"> _hasCaseInsensitivePrefix
</span><span class="cx"> _hasCaseInsensitiveSubstring
</span></span></pre></div>
<a id="trunkSourceWebCorepageSettingscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Settings.cpp (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Settings.cpp        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/page/Settings.cpp        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -186,7 +186,6 @@
</span><span class="cx">     , m_touchEventEmulationEnabled(false)
</span><span class="cx"> #endif
</span><span class="cx">     , m_scrollingPerformanceLoggingEnabled(false)
</span><del>-    , m_aggressiveTileRetentionEnabled(false)
</del><span class="cx">     , m_timeWithoutMouseMovementBeforeHidingControls(3)
</span><span class="cx">     , m_setImageLoadingSettingsTimer(this, &amp;Settings::imageLoadingSettingsTimerFired)
</span><span class="cx"> #if ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING)
</span><span class="lines">@@ -628,11 +627,6 @@
</span><span class="cx">     if (m_page-&gt;mainFrame().view())
</span><span class="cx">         m_page-&gt;mainFrame().view()-&gt;setScrollingPerformanceLoggingEnabled(enabled);
</span><span class="cx"> }
</span><del>-    
-void Settings::setAggressiveTileRetentionEnabled(bool enabled)
-{
-    m_aggressiveTileRetentionEnabled = enabled;
-}
</del><span class="cx"> 
</span><span class="cx"> void Settings::setMockScrollbarsEnabled(bool flag)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorepageSettingsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Settings.h (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Settings.h        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/page/Settings.h        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -233,9 +233,6 @@
</span><span class="cx"> 
</span><span class="cx">     void setScrollingPerformanceLoggingEnabled(bool);
</span><span class="cx">     bool scrollingPerformanceLoggingEnabled() { return m_scrollingPerformanceLoggingEnabled; }
</span><del>-        
-    void setAggressiveTileRetentionEnabled(bool);
-    bool aggressiveTileRetentionEnabled() { return m_aggressiveTileRetentionEnabled; }
</del><span class="cx"> 
</span><span class="cx">     static void setShouldRespectPriorityInCSSAttributeSetters(bool);
</span><span class="cx">     static bool shouldRespectPriorityInCSSAttributeSetters();
</span><span class="lines">@@ -317,7 +314,6 @@
</span><span class="cx">     bool m_touchEventEmulationEnabled : 1;
</span><span class="cx"> #endif
</span><span class="cx">     bool m_scrollingPerformanceLoggingEnabled : 1;
</span><del>-    bool m_aggressiveTileRetentionEnabled : 1;
</del><span class="cx"> 
</span><span class="cx">     double m_timeWithoutMouseMovementBeforeHidingControls;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageSettingsin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Settings.in (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Settings.in        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/page/Settings.in        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -220,3 +220,6 @@
</span><span class="cx"> alwaysUseBaselineOfPrimaryFont initial=false
</span><span class="cx"> 
</span><span class="cx"> enableInheritURIQueryComponent initial=false
</span><ins>+
+aggressiveTileRetentionEnabled initial=false
+temporaryTileCohortRetentionEnabled initial=true
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGraphicsLayerClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/GraphicsLayerClient.h (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/GraphicsLayerClient.h        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/platform/graphics/GraphicsLayerClient.h        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -95,6 +95,9 @@
</span><span class="cx">     virtual bool shouldSkipLayerInDump(const GraphicsLayer*) const { return false; }
</span><span class="cx">     virtual bool shouldDumpPropertyForLayer(const GraphicsLayer*, const char*) const { return true; }
</span><span class="cx"> 
</span><ins>+    virtual bool shouldAggressivelyRetainTiles(const GraphicsLayer*) const { return false; }
+    virtual bool shouldTemporarilyRetainTileCohorts(const GraphicsLayer*) const { return true; }
+
</ins><span class="cx"> #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
</span><span class="cx">     virtual bool mediaLayerMustBeUpdatedOnMainThread() const { return false; }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsTiledBackingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/TiledBacking.h (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/TiledBacking.h        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/platform/graphics/TiledBacking.h        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -75,9 +75,6 @@
</span><span class="cx">     virtual void setScrollingPerformanceLoggingEnabled(bool) = 0;
</span><span class="cx">     virtual bool scrollingPerformanceLoggingEnabled() const = 0;
</span><span class="cx">     
</span><del>-    virtual void setAggressivelyRetainsTiles(bool) = 0;
-    virtual bool aggressivelyRetainsTiles() const = 0;
-    
</del><span class="cx">     virtual void setUnparentsOffscreenTiles(bool) = 0;
</span><span class="cx">     virtual bool unparentsOffscreenTiles() const = 0;
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscaGraphicsLayerCAcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -1294,6 +1294,20 @@
</span><span class="cx">     return client() ? client()-&gt;contentsScaleMultiplierForNewTiles(this) : 1;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool GraphicsLayerCA::platformCALayerShouldAggressivelyRetainTiles(PlatformCALayer*) const
+{
+    if (GraphicsLayerClient* layerClient = client())
+        return layerClient-&gt;shouldAggressivelyRetainTiles(this);
+    return false;
+}
+
+bool GraphicsLayerCA::platformCALayerShouldTemporarilyRetainTileCohorts(PlatformCALayer*) const
+{
+    if (GraphicsLayerClient* layerClient = client())
+        return layerClient-&gt;shouldTemporarilyRetainTileCohorts(this);
+    return true;
+}
+
</ins><span class="cx"> void GraphicsLayerCA::commitLayerChangesBeforeSublayers(CommitState&amp; commitState, float pageScaleFactor, const FloatPoint&amp; positionRelativeToBase, const FloatRect&amp; oldVisibleRect, TransformationMatrix* transformFromRoot)
</span><span class="cx"> {
</span><span class="cx">     ++commitState.treeDepth;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscaGraphicsLayerCAh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -193,6 +193,8 @@
</span><span class="cx">     virtual void platformCALayerSetNeedsToRevalidateTiles() override;
</span><span class="cx">     virtual float platformCALayerDeviceScaleFactor() const override;
</span><span class="cx">     virtual float platformCALayerContentsScaleMultiplierForNewTiles(PlatformCALayer*) const override;
</span><ins>+    virtual bool platformCALayerShouldAggressivelyRetainTiles(PlatformCALayer*) const override;
+    virtual bool platformCALayerShouldTemporarilyRetainTileCohorts(PlatformCALayer*) const override;
</ins><span class="cx"> 
</span><span class="cx">     virtual bool isCommittingChanges() const override { return m_isCommittingChanges; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscaPlatformCALayerClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -54,6 +54,9 @@
</span><span class="cx">     virtual float platformCALayerDeviceScaleFactor() const = 0;
</span><span class="cx">     virtual float platformCALayerContentsScaleMultiplierForNewTiles(PlatformCALayer*) const { return 1; }
</span><span class="cx"> 
</span><ins>+    virtual bool platformCALayerShouldAggressivelyRetainTiles(PlatformCALayer*) const { return false; }
+    virtual bool platformCALayerShouldTemporarilyRetainTileCohorts(PlatformCALayer*) const { return true; }
+
</ins><span class="cx">     virtual bool isCommittingChanges() const { return false; }
</span><span class="cx"> 
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscamacTileControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileController.h (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/mac/TileController.h        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileController.h        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -118,8 +118,6 @@
</span><span class="cx">     virtual IntRect tileGridExtent() const override;
</span><span class="cx">     virtual void setScrollingPerformanceLoggingEnabled(bool flag) override { m_scrollingPerformanceLoggingEnabled = flag; }
</span><span class="cx">     virtual bool scrollingPerformanceLoggingEnabled() const override { return m_scrollingPerformanceLoggingEnabled; }
</span><del>-    virtual void setAggressivelyRetainsTiles(bool flag) override { m_aggressivelyRetainsTiles = flag; }
-    virtual bool aggressivelyRetainsTiles() const override { return m_aggressivelyRetainsTiles; }
</del><span class="cx">     virtual void setUnparentsOffscreenTiles(bool flag) override { m_unparentsOffscreenTiles = flag; }
</span><span class="cx">     virtual bool unparentsOffscreenTiles() const override { return m_unparentsOffscreenTiles; }
</span><span class="cx">     virtual double retainedTileBackingStoreMemory() const override;
</span><span class="lines">@@ -245,7 +243,6 @@
</span><span class="cx"> 
</span><span class="cx">     bool m_isInWindow;
</span><span class="cx">     bool m_scrollingPerformanceLoggingEnabled;
</span><del>-    bool m_aggressivelyRetainsTiles;
</del><span class="cx">     bool m_unparentsOffscreenTiles;
</span><span class="cx">     bool m_acceleratesDrawing;
</span><span class="cx">     bool m_tilesAreOpaque;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscamacTileControllermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileController.mm (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/mac/TileController.mm        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileController.mm        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -67,7 +67,6 @@
</span><span class="cx">     , m_marginRight(0)
</span><span class="cx">     , m_isInWindow(false)
</span><span class="cx">     , m_scrollingPerformanceLoggingEnabled(false)
</span><del>-    , m_aggressivelyRetainsTiles(false)
</del><span class="cx">     , m_unparentsOffscreenTiles(false)
</span><span class="cx">     , m_acceleratesDrawing(false)
</span><span class="cx">     , m_tilesAreOpaque(false)
</span><span class="lines">@@ -543,7 +542,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    TileValidationPolicyFlags foregroundValidationPolicy = m_aggressivelyRetainsTiles ? 0 : PruneSecondaryTiles;
</del><ins>+    TileValidationPolicyFlags foregroundValidationPolicy = owningGraphicsLayer()-&gt;platformCALayerShouldAggressivelyRetainTiles(m_tileCacheLayer) ? 0 : PruneSecondaryTiles;
</ins><span class="cx">     TileValidationPolicyFlags backgroundValidationPolicy = foregroundValidationPolicy | UnparentAllTiles;
</span><span class="cx"> 
</span><span class="cx">     revalidateTiles(foregroundValidationPolicy, backgroundValidationPolicy);
</span><span class="lines">@@ -698,8 +697,12 @@
</span><span class="cx">     if (tilesInCohort)
</span><span class="cx">         startedNewCohort(currCohort);
</span><span class="cx"> 
</span><del>-    if (!m_aggressivelyRetainsTiles)
-        scheduleCohortRemoval();
</del><ins>+    if (!owningGraphicsLayer()-&gt;platformCALayerShouldAggressivelyRetainTiles(m_tileCacheLayer)) {
+        if (owningGraphicsLayer()-&gt;platformCALayerShouldTemporarilyRetainTileCohorts(m_tileCacheLayer))
+            scheduleCohortRemoval();
+        else if (tilesInCohort)
+            removeTilesInCohort(currCohort);
+    }
</ins><span class="cx"> 
</span><span class="cx">     // Ensure primary tile coverage tiles.
</span><span class="cx">     m_primaryTileCoverageRect = ensureTilesForRect(tileCoverageRect, CoverageType::PrimaryTiles);
</span><span class="lines">@@ -1114,7 +1117,7 @@
</span><span class="cx">         TileCohort newestCohort = newestTileCohort();
</span><span class="cx">         TileCohort oldestCohort = oldestTileCohort();
</span><span class="cx"> 
</span><del>-        if (!m_aggressivelyRetainsTiles &amp;&amp; tileInfo.cohort != VisibleTileCohort &amp;&amp; newestCohort &gt; oldestCohort) {
</del><ins>+        if (!owningGraphicsLayer()-&gt;platformCALayerShouldAggressivelyRetainTiles(m_tileCacheLayer) &amp;&amp; tileInfo.cohort != VisibleTileCohort &amp;&amp; newestCohort &gt; oldestCohort) {
</ins><span class="cx">             float cohortProportion = static_cast&lt;float&gt;((newestCohort - tileInfo.cohort)) / (newestCohort - oldestCohort);
</span><span class="cx">             CGContextSetRGBFillColor(context, red, green, blue, 1 - cohortProportion);
</span><span class="cx">         } else
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerBackingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -2315,6 +2315,25 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool RenderLayerBacking::shouldAggressivelyRetainTiles(const GraphicsLayer*) const
+{
+    // Only the main frame TileController has enough information about in-window state to
+    // correctly implement aggressive tile retention.
+    if (!m_isMainFrameRenderViewLayer)
+        return false;
+
+    if (Page* page = renderer().frame().page())
+        return page-&gt;settings().aggressiveTileRetentionEnabled();
+    return false;
+}
+
+bool RenderLayerBacking::shouldTemporarilyRetainTileCohorts(const GraphicsLayer*) const
+{
+    if (Page* page = renderer().frame().page())
+        return page-&gt;settings().temporaryTileCohortRetentionEnabled();
+    return true;
+}
+
</ins><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> void RenderLayerBacking::verifyNotPainting()
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerBackingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.h (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerBacking.h        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.h        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -187,6 +187,9 @@
</span><span class="cx">     virtual bool shouldSkipLayerInDump(const GraphicsLayer*) const override;
</span><span class="cx">     virtual bool shouldDumpPropertyForLayer(const GraphicsLayer*, const char* propertyName) const override;
</span><span class="cx"> 
</span><ins>+    virtual bool shouldAggressivelyRetainTiles(const GraphicsLayer*) const override;
+    virtual bool shouldTemporarilyRetainTileCohorts(const GraphicsLayer*) const override;
+
</ins><span class="cx"> #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
</span><span class="cx">     virtual bool mediaLayerMustBeUpdatedOnMainThread() const override;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebKit2/ChangeLog        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2014-03-31  Tim Horton  &lt;timothy_horton@apple.com&gt;
+
+        [iOS WebKit2] Disable tile cohort retention for now
+        https://bugs.webkit.org/show_bug.cgi?id=130926
+        &lt;rdar://problem/16465413&gt;
+
+        Reviewed by Simon Fraser.
+
+        * Shared/WebPreferencesStore.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::updatePreferences):
+        Add a preference for temporary tile cohort retention (essentially, provide a setting
+        that means that we will never retain tiles at all once they leave the tile coverage rect).
+        Defaults to true to maintain existing behavior, except for iOS WebKit2, where
+        it defaults to false because we don't have the requisite support for purgeable tiles yet.
+
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+        (WebKit::TiledCoreAnimationDrawingArea::updatePreferences):
+        (WebKit::TiledCoreAnimationDrawingArea::setRootCompositingLayer):
+
</ins><span class="cx"> 2014-03-31  Peter Molnar  &lt;pmolnar.u-szeged@partner.samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Buildfix after r166497.
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebPreferencesStoreh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebPreferencesStore.h (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebPreferencesStore.h        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebKit2/Shared/WebPreferencesStore.h        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -74,6 +74,7 @@
</span><span class="cx"> #define DEFAULT_PASSWORD_ECHO_ENABLED true
</span><span class="cx"> #define DEFAULT_MEDIA_PLAYBACK_ALLOWS_INLINE false
</span><span class="cx"> #define DEFAULT_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE true
</span><ins>+#define DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED false
</ins><span class="cx"> #else
</span><span class="cx"> #define DEFAULT_FRAME_FLATTENING_ENABLED false
</span><span class="cx"> #define DEFAULT_SHOULD_PRINT_BACKGROUNDS false
</span><span class="lines">@@ -84,6 +85,7 @@
</span><span class="cx"> #define DEFAULT_PASSWORD_ECHO_ENABLED false
</span><span class="cx"> #define DEFAULT_MEDIA_PLAYBACK_ALLOWS_INLINE true
</span><span class="cx"> #define DEFAULT_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE false
</span><ins>+#define DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED true
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS) &amp;&amp; !PLATFORM(IOS_SIMULATOR)
</span><span class="lines">@@ -187,6 +189,7 @@
</span><span class="cx">     macro(UsesEncodingDetector, usesEncodingDetector, Bool, bool, false) \
</span><span class="cx">     macro(TextAutosizingEnabled, textAutosizingEnabled, Bool, bool, false) \
</span><span class="cx">     macro(AggressiveTileRetentionEnabled, aggressiveTileRetentionEnabled, Bool, bool, false) \
</span><ins>+    macro(TemporaryTileCohortRetentionEnabled, temporaryTileCohortRetentionEnabled, Bool, bool, DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED) \
</ins><span class="cx">     macro(QTKitEnabled, isQTKitEnabled, Bool, bool, true) \
</span><span class="cx">     macro(LogsPageMessagesToSystemConsoleEnabled, logsPageMessagesToSystemConsoleEnabled, Bool, bool, false) \
</span><span class="cx">     macro(PageVisibilityBasedProcessSuppressionEnabled, pageVisibilityBasedProcessSuppressionEnabled, Bool, bool, true) \
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -2551,6 +2551,7 @@
</span><span class="cx">     settings.setShowRepaintCounter(store.getBoolValueForKey(WebPreferencesKey::compositingRepaintCountersVisibleKey()));
</span><span class="cx">     settings.setShowTiledScrollingIndicator(store.getBoolValueForKey(WebPreferencesKey::tiledScrollingIndicatorVisibleKey()));
</span><span class="cx">     settings.setAggressiveTileRetentionEnabled(store.getBoolValueForKey(WebPreferencesKey::aggressiveTileRetentionEnabledKey()));
</span><ins>+    settings.setTemporaryTileCohortRetentionEnabled(store.getBoolValueForKey(WebPreferencesKey::temporaryTileCohortRetentionEnabledKey()));
</ins><span class="cx">     RuntimeEnabledFeatures::sharedFeatures().setCSSRegionsEnabled(store.getBoolValueForKey(WebPreferencesKey::cssRegionsEnabledKey()));
</span><span class="cx">     RuntimeEnabledFeatures::sharedFeatures().setCSSCompositingEnabled(store.getBoolValueForKey(WebPreferencesKey::cssCompositingEnabledKey()));
</span><span class="cx"> #if ENABLE(CSS_GRID_LAYOUT)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPagemacTiledCoreAnimationDrawingAreamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (166515 => 166516)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm        2014-03-31 18:15:27 UTC (rev 166515)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm        2014-03-31 19:37:30 UTC (rev 166516)
</span><span class="lines">@@ -260,9 +260,6 @@
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    if (TiledBacking* tiledBacking = mainFrameTiledBacking())
-        tiledBacking-&gt;setAggressivelyRetainsTiles(settings.aggressiveTileRetentionEnabled());
-
</del><span class="cx">     for (PageOverlayLayerMap::iterator it = m_pageOverlayLayers.begin(), end = m_pageOverlayLayers.end(); it != end; ++it) {
</span><span class="cx">         it-&gt;value-&gt;setAcceleratesDrawing(settings.acceleratedDrawingEnabled());
</span><span class="cx">         it-&gt;value-&gt;setShowDebugBorder(settings.showDebugBorders());
</span><span class="lines">@@ -583,9 +580,6 @@
</span><span class="cx">     for (PageOverlayLayerMap::iterator it = m_pageOverlayLayers.begin(), end = m_pageOverlayLayers.end(); it != end; ++it)
</span><span class="cx">         [m_hostingLayer addSublayer:it-&gt;value-&gt;platformLayer()];
</span><span class="cx"> 
</span><del>-    if (TiledBacking* tiledBacking = mainFrameTiledBacking())
-        tiledBacking-&gt;setAggressivelyRetainsTiles(m_webPage-&gt;corePage()-&gt;settings().aggressiveTileRetentionEnabled());
-
</del><span class="cx">     updateDebugInfoLayer(m_webPage-&gt;corePage()-&gt;settings().showTiledScrollingIndicator());
</span><span class="cx"> 
</span><span class="cx">     [CATransaction commit];
</span></span></pre>
</div>
</div>

</body>
</html>