<!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>[166997] trunk/Source/WebCore</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/166997">166997</a></dd>
<dt>Author</dt> <dd>antti@apple.com</dd>
<dt>Date</dt> <dd>2014-04-08 22:01:54 -0700 (Tue, 08 Apr 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Factor tile coverage map into a class
https://bugs.webkit.org/show_bug.cgi?id=131417

Reviewed by Tim Horton.

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/ca/PlatformCALayerClient.h:
(WebCore::PlatformCALayerClient::platformCALayerLayoutSublayersOfLayer):
(WebCore::PlatformCALayerClient::platformCALayerRespondsToLayoutChanges):
(WebCore::PlatformCALayerClient::platformCALayerAnimationStarted):
(WebCore::PlatformCALayerClient::platformCALayerContentsOrientation):
(WebCore::PlatformCALayerClient::platformCALayerShowDebugBorders):
(WebCore::PlatformCALayerClient::platformCALayerShowRepaintCounter):
(WebCore::PlatformCALayerClient::platformCALayerIncrementRepaintCount):
(WebCore::PlatformCALayerClient::platformCALayerLayerDidDisplay):
        
    Added default implementation to some of these to make clients less messy.

* platform/graphics/ca/mac/TileController.h:
* platform/graphics/ca/mac/TileController.mm:
(WebCore::TileController::~TileController):
(WebCore::TileController::platformCALayerPaintContents):
(WebCore::TileController::setTiledScrollingIndicatorPosition):
(WebCore::TileController::updateTileCoverageMap):
(WebCore::TileController::tiledScrollingIndicatorLayer):
* platform/graphics/ca/mac/TileCoverageMap.h: Added.
(WebCore::TileCoverageMap::setPosition):
(WebCore::TileCoverageMap::layer):
* platform/graphics/ca/mac/TileCoverageMap.mm: Added.
        
    The new class.

(WebCore::TileCoverageMap::TileCoverageMap):
(WebCore::TileCoverageMap::~TileCoverageMap):
(WebCore::TileCoverageMap::update):
(WebCore::TileCoverageMap::platformCALayerPaintContents):
(WebCore::TileCoverageMap::platformCALayerDeviceScaleFactor):
* platform/graphics/ca/mac/TileGrid.h:
* platform/graphics/ca/mac/TileGrid.mm:
(WebCore::TileGrid::drawTileMapContents):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</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="#trunkSourceWebCoreplatformgraphicscamacTileGridh">trunk/Source/WebCore/platform/graphics/ca/mac/TileGrid.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscamacTileGridmm">trunk/Source/WebCore/platform/graphics/ca/mac/TileGrid.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformgraphicscamacTileCoverageMaph">trunk/Source/WebCore/platform/graphics/ca/mac/TileCoverageMap.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscamacTileCoverageMapmm">trunk/Source/WebCore/platform/graphics/ca/mac/TileCoverageMap.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (166996 => 166997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-04-09 03:52:53 UTC (rev 166996)
+++ trunk/Source/WebCore/ChangeLog        2014-04-09 05:01:54 UTC (rev 166997)
</span><span class="lines">@@ -1,3 +1,46 @@
</span><ins>+2014-04-08  Antti Koivisto  &lt;antti@apple.com&gt;
+
+        Factor tile coverage map into a class
+        https://bugs.webkit.org/show_bug.cgi?id=131417
+
+        Reviewed by Tim Horton.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/ca/PlatformCALayerClient.h:
+        (WebCore::PlatformCALayerClient::platformCALayerLayoutSublayersOfLayer):
+        (WebCore::PlatformCALayerClient::platformCALayerRespondsToLayoutChanges):
+        (WebCore::PlatformCALayerClient::platformCALayerAnimationStarted):
+        (WebCore::PlatformCALayerClient::platformCALayerContentsOrientation):
+        (WebCore::PlatformCALayerClient::platformCALayerShowDebugBorders):
+        (WebCore::PlatformCALayerClient::platformCALayerShowRepaintCounter):
+        (WebCore::PlatformCALayerClient::platformCALayerIncrementRepaintCount):
+        (WebCore::PlatformCALayerClient::platformCALayerLayerDidDisplay):
+        
+            Added default implementation to some of these to make clients less messy.
+
+        * platform/graphics/ca/mac/TileController.h:
+        * platform/graphics/ca/mac/TileController.mm:
+        (WebCore::TileController::~TileController):
+        (WebCore::TileController::platformCALayerPaintContents):
+        (WebCore::TileController::setTiledScrollingIndicatorPosition):
+        (WebCore::TileController::updateTileCoverageMap):
+        (WebCore::TileController::tiledScrollingIndicatorLayer):
+        * platform/graphics/ca/mac/TileCoverageMap.h: Added.
+        (WebCore::TileCoverageMap::setPosition):
+        (WebCore::TileCoverageMap::layer):
+        * platform/graphics/ca/mac/TileCoverageMap.mm: Added.
+        
+            The new class.
+
+        (WebCore::TileCoverageMap::TileCoverageMap):
+        (WebCore::TileCoverageMap::~TileCoverageMap):
+        (WebCore::TileCoverageMap::update):
+        (WebCore::TileCoverageMap::platformCALayerPaintContents):
+        (WebCore::TileCoverageMap::platformCALayerDeviceScaleFactor):
+        * platform/graphics/ca/mac/TileGrid.h:
+        * platform/graphics/ca/mac/TileGrid.mm:
+        (WebCore::TileGrid::drawTileMapContents):
+
</ins><span class="cx"> 2014-04-08  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Subpixel rendering: Clip outer rounded border rect on device pixel boundaries.
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (166996 => 166997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-04-09 03:52:53 UTC (rev 166996)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-04-09 05:01:54 UTC (rev 166997)
</span><span class="lines">@@ -6050,6 +6050,8 @@
</span><span class="cx">                 E47B4BE90E71241600038854 /* CachedResourceHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E47B4BE70E71241600038854 /* CachedResourceHandle.cpp */; };
</span><span class="cx">                 E47E276516036ED200EE2AFB /* DocumentStyleSheetCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = E47E276416036ED200EE2AFB /* DocumentStyleSheetCollection.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 E47E276816036EDC00EE2AFB /* DocumentStyleSheetCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E47E276716036EDC00EE2AFB /* DocumentStyleSheetCollection.cpp */; };
</span><ins>+                E4830A3918F4C59400154A1B /* TileCoverageMap.mm in Sources */ = {isa = PBXBuildFile; fileRef = E4830A3818F4C59400154A1B /* TileCoverageMap.mm */; };
+                E4830A3D18F4C5B700154A1B /* TileCoverageMap.h in Headers */ = {isa = PBXBuildFile; fileRef = E4830A3C18F4C5B700154A1B /* TileCoverageMap.h */; };
</ins><span class="cx">                 E48944A2180B57D800F165D8 /* SimpleLineLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E48944A0180B57D800F165D8 /* SimpleLineLayout.cpp */; };
</span><span class="cx">                 E48944A3180B57D800F165D8 /* SimpleLineLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = E48944A1180B57D800F165D8 /* SimpleLineLayout.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 E4946EAE156E64DD00D3297F /* StyleRuleImport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4946EAC156E64DD00D3297F /* StyleRuleImport.cpp */; };
</span><span class="lines">@@ -13435,6 +13437,8 @@
</span><span class="cx">                 E47B4BE70E71241600038854 /* CachedResourceHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedResourceHandle.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E47E276416036ED200EE2AFB /* DocumentStyleSheetCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentStyleSheetCollection.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E47E276716036EDC00EE2AFB /* DocumentStyleSheetCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentStyleSheetCollection.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                E4830A3818F4C59400154A1B /* TileCoverageMap.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = TileCoverageMap.mm; path = ca/mac/TileCoverageMap.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E4830A3C18F4C5B700154A1B /* TileCoverageMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TileCoverageMap.h; path = ca/mac/TileCoverageMap.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 E48944A0180B57D800F165D8 /* SimpleLineLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimpleLineLayout.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E48944A1180B57D800F165D8 /* SimpleLineLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleLineLayout.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E4946EAC156E64DD00D3297F /* StyleRuleImport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleRuleImport.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -15619,6 +15623,8 @@
</span><span class="cx">                                 4958782012A57DDF007238AC /* PlatformCALayerMac.mm */,
</span><span class="cx">                                 1AA71609149BC4DB0016EC19 /* TileController.h */,
</span><span class="cx">                                 1AA71608149BC4DA0016EC19 /* TileController.mm */,
</span><ins>+                                E4830A3C18F4C5B700154A1B /* TileCoverageMap.h */,
+                                E4830A3818F4C59400154A1B /* TileCoverageMap.mm */,
</ins><span class="cx">                                 E4C274CB18E988F500602C76 /* TileGrid.h */,
</span><span class="cx">                                 E4C274C918E988EA00602C76 /* TileGrid.mm */,
</span><span class="cx">                                 0F580FA11496939100FB5BD8 /* WebTiledBackingLayer.h */,
</span><span class="lines">@@ -24684,6 +24690,7 @@
</span><span class="cx">                                 B2FA3DB70AB75A6F000E5AC4 /* JSSVGPathSeg.h in Headers */,
</span><span class="cx">                                 B2FA3DB90AB75A6F000E5AC4 /* JSSVGPathSegArcAbs.h in Headers */,
</span><span class="cx">                                 B2FA3DBB0AB75A6F000E5AC4 /* JSSVGPathSegArcRel.h in Headers */,
</span><ins>+                                E4830A3D18F4C5B700154A1B /* TileCoverageMap.h in Headers */,
</ins><span class="cx">                                 B2FA3DBD0AB75A6F000E5AC4 /* JSSVGPathSegClosePath.h in Headers */,
</span><span class="cx">                                 B2FA3DBF0AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicAbs.h in Headers */,
</span><span class="cx">                                 B2FA3DC10AB75A6F000E5AC4 /* JSSVGPathSegCurvetoCubicRel.h in Headers */,
</span><span class="lines">@@ -26866,6 +26873,7 @@
</span><span class="cx">                                 E125F8351822F18A00D84CD9 /* CryptoKeyHMAC.cpp in Sources */,
</span><span class="cx">                                 E19AC3F9182566F700349426 /* CryptoKeyMac.cpp in Sources */,
</span><span class="cx">                                 E1F80B8718317252007885C3 /* CryptoKeyPair.cpp in Sources */,
</span><ins>+                                E4830A3918F4C59400154A1B /* TileCoverageMap.mm in Sources */,
</ins><span class="cx">                                 E164FAA518315E1A00DB4E61 /* CryptoKeyRSAMac.cpp in Sources */,
</span><span class="cx">                                 E125F859182C1AA600D84CD9 /* CryptoKeySerializationRaw.cpp in Sources */,
</span><span class="cx">                                 CAE9F90F146441F000C245B0 /* CSSAspectRatioValue.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscaPlatformCALayerClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h (166996 => 166997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h        2014-04-09 03:52:53 UTC (rev 166996)
+++ trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h        2014-04-09 05:01:54 UTC (rev 166997)
</span><span class="lines">@@ -36,19 +36,19 @@
</span><span class="cx"> 
</span><span class="cx"> class PlatformCALayerClient {
</span><span class="cx"> public:
</span><del>-    virtual void platformCALayerLayoutSublayersOfLayer(PlatformCALayer*) = 0;
-    virtual bool platformCALayerRespondsToLayoutChanges() const = 0;
</del><ins>+    virtual void platformCALayerLayoutSublayersOfLayer(PlatformCALayer*) { }
+    virtual bool platformCALayerRespondsToLayoutChanges() const { return false; }
</ins><span class="cx"> 
</span><del>-    virtual void platformCALayerAnimationStarted(CFTimeInterval beginTime) = 0;
-    virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const = 0;
</del><ins>+    virtual void platformCALayerAnimationStarted(CFTimeInterval) { }
+    virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const { return GraphicsLayer::CompositingCoordinatesTopDown; }
</ins><span class="cx">     virtual void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&amp;, const FloatRect&amp; inClip) = 0;
</span><del>-    virtual bool platformCALayerShowDebugBorders() const = 0;
-    virtual bool platformCALayerShowRepaintCounter(PlatformCALayer*) const = 0;
-    virtual int platformCALayerIncrementRepaintCount(PlatformCALayer*) = 0;
</del><ins>+    virtual bool platformCALayerShowDebugBorders() const { return false; }
+    virtual bool platformCALayerShowRepaintCounter(PlatformCALayer*) const { return false; }
+    virtual int platformCALayerIncrementRepaintCount(PlatformCALayer*) { return 0; }
</ins><span class="cx">     
</span><span class="cx">     virtual bool platformCALayerContentsOpaque() const = 0;
</span><span class="cx">     virtual bool platformCALayerDrawsContent() const = 0;
</span><del>-    virtual void platformCALayerLayerDidDisplay(PlatformLayer*) = 0;
</del><ins>+    virtual void platformCALayerLayerDidDisplay(PlatformLayer*)  { }
</ins><span class="cx"> 
</span><span class="cx">     virtual void platformCALayerSetNeedsToRevalidateTiles() { }
</span><span class="cx">     virtual float platformCALayerDeviceScaleFactor() const = 0;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscamacTileControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileController.h (166996 => 166997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/mac/TileController.h        2014-04-09 03:52:53 UTC (rev 166996)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileController.h        2014-04-09 05:01:54 UTC (rev 166997)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> class FloatRect;
</span><span class="cx"> class IntPoint;
</span><span class="cx"> class IntRect;
</span><ins>+class TileCoverageMap;
</ins><span class="cx"> class TileGrid;
</span><span class="cx"> 
</span><span class="cx"> typedef Vector&lt;RetainPtr&lt;PlatformLayer&gt;&gt; PlatformLayerList;
</span><span class="lines">@@ -69,6 +70,7 @@
</span><span class="cx">     bool tilesAreOpaque() const { return m_tilesAreOpaque; }
</span><span class="cx"> 
</span><span class="cx">     PlatformCALayer&amp; rootLayer() { return *m_tileCacheLayer; }
</span><ins>+    const PlatformCALayer&amp; rootLayer() const { return *m_tileCacheLayer; }
</ins><span class="cx"> 
</span><span class="cx">     void setTileDebugBorderWidth(float);
</span><span class="cx">     void setTileDebugBorderColor(Color);
</span><span class="lines">@@ -84,13 +86,14 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> public:
</span><del>-    // Public for TileGrid
</del><ins>+    // Public for TileGrid and TileCoverageMap
</ins><span class="cx">     bool isInWindow() const { return m_isInWindow; }
</span><span class="cx"> 
</span><span class="cx">     float deviceScaleFactor() const { return m_deviceScaleFactor; }
</span><span class="cx"> 
</span><span class="cx">     Color tileDebugBorderColor() const { return m_tileDebugBorderColor; }
</span><span class="cx">     float tileDebugBorderWidth() const { return m_tileDebugBorderWidth; }
</span><ins>+    ScrollingModeIndication indicatorMode() const { return m_indicatorMode; }
</ins><span class="cx"> 
</span><span class="cx">     virtual IntSize tileSize() const override { return m_tileSize; }
</span><span class="cx">     virtual IntRect bounds() const override;
</span><span class="lines">@@ -121,13 +124,14 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;PlatformCALayer&gt; createTileLayer(const IntRect&amp;);
</span><span class="cx"> 
</span><ins>+    const TileGrid&amp; tileGrid() const { return *m_tileGrid; }
+
</ins><span class="cx">     Vector&lt;RefPtr&lt;PlatformCALayer&gt;&gt; containerLayers();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     TileController(PlatformCALayer*);
</span><span class="cx"> 
</span><span class="cx">     TileGrid&amp; tileGrid() { return *m_tileGrid; }
</span><del>-    const TileGrid&amp; tileGrid() const { return *m_tileGrid; }
</del><span class="cx"> 
</span><span class="cx">     // TiledBacking member functions.
</span><span class="cx">     virtual void setVisibleRect(const FloatRect&amp;) override;
</span><span class="lines">@@ -149,20 +153,12 @@
</span><span class="cx">     virtual void setTileMargins(int marginTop, int marginBottom, int marginLeft, int marginRight) override;
</span><span class="cx"> 
</span><span class="cx">     // PlatformCALayerClient
</span><del>-    virtual void platformCALayerLayoutSublayersOfLayer(PlatformCALayer*) override { }
-    virtual bool platformCALayerRespondsToLayoutChanges() const override { return false; }
-    virtual void platformCALayerAnimationStarted(CFTimeInterval) override { }
-    virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const override { return GraphicsLayer::CompositingCoordinatesTopDown; }
</del><span class="cx">     virtual void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&amp;, const FloatRect&amp;) override;
</span><span class="cx">     virtual bool platformCALayerShowDebugBorders() const override;
</span><span class="cx">     virtual bool platformCALayerShowRepaintCounter(PlatformCALayer*) const override;
</span><span class="cx">     virtual int platformCALayerIncrementRepaintCount(PlatformCALayer*) override;
</span><del>-
</del><span class="cx">     virtual bool platformCALayerContentsOpaque() const override { return m_tilesAreOpaque; }
</span><span class="cx">     virtual bool platformCALayerDrawsContent() const override { return true; }
</span><del>-    virtual void platformCALayerLayerDidDisplay(PlatformLayer*) override { }
-
-    virtual void platformCALayerSetNeedsToRevalidateTiles() override { }
</del><span class="cx">     virtual float platformCALayerDeviceScaleFactor() const override;
</span><span class="cx"> 
</span><span class="cx">     void scheduleTileRevalidation(double interval);
</span><span class="lines">@@ -170,20 +166,17 @@
</span><span class="cx"> 
</span><span class="cx">     void setNeedsRevalidateTiles();
</span><span class="cx"> 
</span><del>-    void drawTileMapContents(CGContextRef, CGRect);
-
</del><span class="cx">     PlatformCALayerClient* owningGraphicsLayer() const { return m_tileCacheLayer-&gt;owner(); }
</span><span class="cx"> 
</span><span class="cx">     PlatformCALayer* m_tileCacheLayer;
</span><del>-    RefPtr&lt;PlatformCALayer&gt; m_tiledScrollingIndicatorLayer; // Used for coverage visualization.
-    RefPtr&lt;PlatformCALayer&gt; m_visibleRectIndicatorLayer;
</del><span class="cx"> 
</span><ins>+    std::unique_ptr&lt;TileCoverageMap&gt; m_coverageMap;
+
</ins><span class="cx">     std::unique_ptr&lt;TileGrid&gt; m_tileGrid;
</span><span class="cx"> 
</span><span class="cx">     IntSize m_tileSize;
</span><span class="cx">     FloatRect m_visibleRect;
</span><span class="cx">     FloatRect m_visibleRectAtLastRevalidate;
</span><del>-    FloatPoint m_tiledScrollingIndicatorPosition;
</del><span class="cx">     IntRect m_boundsAtLastRevalidate;
</span><span class="cx"> 
</span><span class="cx">     Timer&lt;TileController&gt; m_tileRevalidationTimer;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscamacTileControllermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileController.mm (166996 => 166997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/mac/TileController.mm        2014-04-09 03:52:53 UTC (rev 166996)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileController.mm        2014-04-09 05:01:54 UTC (rev 166997)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #import &quot;IntRect.h&quot;
</span><span class="cx"> #import &quot;PlatformCALayer.h&quot;
</span><span class="cx"> #import &quot;Region.h&quot;
</span><ins>+#import &quot;TileCoverageMap.h&quot;
</ins><span class="cx"> #import &quot;TileGrid.h&quot;
</span><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx"> #import &quot;LayerPool.h&quot;
</span><span class="lines">@@ -84,9 +85,6 @@
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     tileControllerMemoryHandler().removeTileController(this);
</span><span class="cx"> #endif
</span><del>-
-    if (m_tiledScrollingIndicatorLayer)
-        m_tiledScrollingIndicatorLayer-&gt;setOwner(nullptr);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TileController::tileCacheLayerBoundsChanged()
</span><span class="lines">@@ -112,11 +110,6 @@
</span><span class="cx">         WebThreadLock();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    if (platformCALayer == m_tiledScrollingIndicatorLayer.get()) {
-        tileGrid().drawTileMapContents(context.platformContext(), m_tiledScrollingIndicatorLayer-&gt;bounds());
-        return;
-    }
-
</del><span class="cx">     {
</span><span class="cx">         GraphicsContextStateSaver stateSaver(context);
</span><span class="cx"> 
</span><span class="lines">@@ -214,10 +207,10 @@
</span><span class="cx"> 
</span><span class="cx"> void TileController::setTiledScrollingIndicatorPosition(const FloatPoint&amp; position)
</span><span class="cx"> {
</span><del>-    if (m_tiledScrollingIndicatorPosition == position)
</del><ins>+    if (!m_coverageMap)
</ins><span class="cx">         return;
</span><del>-    m_tiledScrollingIndicatorPosition = position;
-    updateTileCoverageMap();
</del><ins>+    m_coverageMap-&gt;setPosition(position);
+    m_coverageMap-&gt;update();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TileController::prepopulateRect(const FloatRect&amp; rect)
</span><span class="lines">@@ -412,46 +405,8 @@
</span><span class="cx"> 
</span><span class="cx"> void TileController::updateTileCoverageMap()
</span><span class="cx"> {
</span><del>-    if (!m_tiledScrollingIndicatorLayer)
-        return;
-    FloatRect containerBounds = bounds();
-    FloatRect visibleRect = this-&gt;visibleRect();
-    visibleRect.contract(4, 4); // Layer is positioned 2px from top and left edges.
-
-    float widthScale = 1;
-    float scale = 1;
-    if (!containerBounds.isEmpty()) {
-        widthScale = std::min&lt;float&gt;(visibleRect.width() / containerBounds.width(), 0.1);
-        scale = std::min(widthScale, visibleRect.height() / containerBounds.height());
-    }
-    
-    float indicatorScale = scale * tileGrid().scale();
-    FloatRect mapBounds = containerBounds;
-    mapBounds.scale(indicatorScale, indicatorScale);
-
-    m_tiledScrollingIndicatorLayer-&gt;setPosition(m_tiledScrollingIndicatorPosition + FloatPoint(2, 2));
-    m_tiledScrollingIndicatorLayer-&gt;setBounds(mapBounds);
-    m_tiledScrollingIndicatorLayer-&gt;setNeedsDisplay();
-
-    visibleRect.scale(indicatorScale, indicatorScale);
-    visibleRect.expand(2, 2);
-    m_visibleRectIndicatorLayer-&gt;setPosition(visibleRect.location());
-    m_visibleRectIndicatorLayer-&gt;setBounds(FloatRect(FloatPoint(), visibleRect.size()));
-
-    Color visibleRectIndicatorColor;
-    switch (m_indicatorMode) {
-    case SynchronousScrollingBecauseOfStyleIndication:
-        visibleRectIndicatorColor = Color(255, 0, 0);
-        break;
-    case SynchronousScrollingBecauseOfEventHandlersIndication:
-        visibleRectIndicatorColor = Color(255, 255, 0);
-        break;
-    case AsyncScrollingIndication:
-        visibleRectIndicatorColor = Color(0, 200, 0);
-        break;
-    }
-
-    m_visibleRectIndicatorLayer-&gt;setBorderColor(visibleRectIndicatorColor);
</del><ins>+    if (m_coverageMap)
+        m_coverageMap-&gt;update();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> IntRect TileController::tileGridExtent() const
</span><span class="lines">@@ -472,25 +427,10 @@
</span><span class="cx"> 
</span><span class="cx"> PlatformCALayer* TileController::tiledScrollingIndicatorLayer()
</span><span class="cx"> {
</span><del>-    if (!m_tiledScrollingIndicatorLayer) {
-        m_tiledScrollingIndicatorLayer = m_tileCacheLayer-&gt;createCompatibleLayer(PlatformCALayer::LayerTypeSimpleLayer, this);
-        m_tiledScrollingIndicatorLayer-&gt;setOpacity(0.75);
-        m_tiledScrollingIndicatorLayer-&gt;setAnchorPoint(FloatPoint3D());
-        m_tiledScrollingIndicatorLayer-&gt;setBorderColor(Color::black);
-        m_tiledScrollingIndicatorLayer-&gt;setBorderWidth(1);
-        m_tiledScrollingIndicatorLayer-&gt;setPosition(FloatPoint(2, 2));
</del><ins>+    if (!m_coverageMap)
+        m_coverageMap = std::make_unique&lt;TileCoverageMap&gt;(*this);
</ins><span class="cx"> 
</span><del>-        m_visibleRectIndicatorLayer = m_tileCacheLayer-&gt;createCompatibleLayer(PlatformCALayer::LayerTypeLayer, nullptr);
-        m_visibleRectIndicatorLayer-&gt;setBorderWidth(2);
-        m_visibleRectIndicatorLayer-&gt;setAnchorPoint(FloatPoint3D());
-        m_visibleRectIndicatorLayer-&gt;setBorderColor(Color(255, 0, 0));
-
-        m_tiledScrollingIndicatorLayer-&gt;appendSublayer(m_visibleRectIndicatorLayer.get());
-
-        updateTileCoverageMap();
-    }
-
-    return m_tiledScrollingIndicatorLayer.get();
</del><ins>+    return &amp;m_coverageMap-&gt;layer();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void TileController::setScrollingModeIndication(ScrollingModeIndication scrollingMode)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscamacTileCoverageMaph"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/ca/mac/TileCoverageMap.h (0 => 166997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/mac/TileCoverageMap.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileCoverageMap.h        2014-04-09 05:01:54 UTC (rev 166997)
</span><span class="lines">@@ -0,0 +1,73 @@
</span><ins>+/*
+ * Copyright (C) 2011-2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef TileCoverageMap_h
+#define TileCoverageMap_h
+
+#include &quot;FloatRect.h&quot;
+#include &quot;IntRect.h&quot;
+#include &quot;PlatformCALayer.h&quot;
+#include &quot;PlatformCALayerClient.h&quot;
+#include &lt;wtf/Noncopyable.h&gt;
+#include &lt;wtf/PassOwnPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+namespace WebCore {
+
+class FloatRect;
+class IntPoint;
+class IntRect;
+class TileController;
+
+class TileCoverageMap : public PlatformCALayerClient {
+    WTF_MAKE_NONCOPYABLE(TileCoverageMap); WTF_MAKE_FAST_ALLOCATED;
+public:
+    TileCoverageMap(const TileController&amp;);
+    ~TileCoverageMap();
+
+    void update();
+    void setPosition(const FloatPoint&amp; position) { m_position = position; }
+
+    PlatformCALayer&amp; layer() { return m_layer.get(); }
+
+private:
+    // PlatformCALayerClient
+    virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const override { return GraphicsLayer::CompositingCoordinatesTopDown; }
+    virtual bool platformCALayerContentsOpaque() const override { return true; }
+    virtual bool platformCALayerDrawsContent() const override { return true; }
+    virtual void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&amp;, const FloatRect&amp;) override;
+    virtual float platformCALayerDeviceScaleFactor() const override;
+
+    const TileController&amp; m_controller;
+
+    Ref&lt;PlatformCALayer&gt; m_layer;
+    Ref&lt;PlatformCALayer&gt; m_visibleRectIndicatorLayer;
+
+    FloatPoint m_position;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscamacTileCoverageMapmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/ca/mac/TileCoverageMap.mm (0 => 166997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/mac/TileCoverageMap.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileCoverageMap.mm        2014-04-09 05:01:54 UTC (rev 166997)
</span><span class="lines">@@ -0,0 +1,112 @@
</span><ins>+/*
+ * Copyright (C) 2011-2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;TileCoverageMap.h&quot;
+
+#import &quot;GraphicsContext.h&quot;
+#import &quot;TileController.h&quot;
+#import &quot;TileGrid.h&quot;
+
+namespace WebCore {
+
+TileCoverageMap::TileCoverageMap(const TileController&amp; controller)
+    : m_controller(controller)
+    , m_layer(*controller.rootLayer().createCompatibleLayer(PlatformCALayer::LayerTypeSimpleLayer, this))
+    , m_visibleRectIndicatorLayer(*controller.rootLayer().createCompatibleLayer(PlatformCALayer::LayerTypeLayer, nullptr))
+{
+    m_layer.get().setOpacity(0.75);
+    m_layer.get().setAnchorPoint(FloatPoint3D());
+    m_layer.get().setBorderColor(Color::black);
+    m_layer.get().setBorderWidth(1);
+    m_layer.get().setPosition(FloatPoint(2, 2));
+    m_visibleRectIndicatorLayer.get().setBorderWidth(2);
+    m_visibleRectIndicatorLayer.get().setAnchorPoint(FloatPoint3D());
+    m_visibleRectIndicatorLayer.get().setBorderColor(Color(255, 0, 0));
+
+    m_layer.get().appendSublayer(&amp;m_visibleRectIndicatorLayer.get());
+
+    update();
+}
+
+TileCoverageMap::~TileCoverageMap()
+{
+    m_layer.get().setOwner(nullptr);
+}
+
+void TileCoverageMap::update()
+{
+    FloatRect containerBounds = m_controller.bounds();
+    FloatRect visibleRect = m_controller.visibleRect();
+    visibleRect.contract(4, 4); // Layer is positioned 2px from top and left edges.
+
+    float widthScale = 1;
+    float scale = 1;
+    if (!containerBounds.isEmpty()) {
+        widthScale = std::min&lt;float&gt;(visibleRect.width() / containerBounds.width(), 0.1);
+        scale = std::min(widthScale, visibleRect.height() / containerBounds.height());
+    }
+
+    float indicatorScale = scale * m_controller.tileGrid().scale();
+    FloatRect mapBounds = containerBounds;
+    mapBounds.scale(indicatorScale, indicatorScale);
+
+    m_layer.get().setPosition(m_position + FloatPoint(2, 2));
+    m_layer.get().setBounds(mapBounds);
+    m_layer.get().setNeedsDisplay();
+
+    visibleRect.scale(indicatorScale, indicatorScale);
+    visibleRect.expand(2, 2);
+    m_visibleRectIndicatorLayer-&gt;setPosition(visibleRect.location());
+    m_visibleRectIndicatorLayer-&gt;setBounds(FloatRect(FloatPoint(), visibleRect.size()));
+
+    Color visibleRectIndicatorColor;
+    switch (m_controller.indicatorMode()) {
+    case SynchronousScrollingBecauseOfStyleIndication:
+        visibleRectIndicatorColor = Color(255, 0, 0);
+        break;
+    case SynchronousScrollingBecauseOfEventHandlersIndication:
+        visibleRectIndicatorColor = Color(255, 255, 0);
+        break;
+    case AsyncScrollingIndication:
+        visibleRectIndicatorColor = Color(0, 200, 0);
+        break;
+    }
+
+    m_visibleRectIndicatorLayer.get().setBorderColor(visibleRectIndicatorColor);
+}
+
+void TileCoverageMap::platformCALayerPaintContents(PlatformCALayer* platformCALayer, GraphicsContext&amp; context, const FloatRect&amp;)
+{
+    ASSERT_UNUSED(platformCALayer, platformCALayer == &amp;m_layer.get());
+    m_controller.tileGrid().drawTileMapContents(context.platformContext(), m_layer.get().bounds());
+}
+
+float TileCoverageMap::platformCALayerDeviceScaleFactor() const
+{
+    return m_controller.rootLayer().owner()-&gt;platformCALayerDeviceScaleFactor();
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscamacTileGridh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileGrid.h (166996 => 166997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/mac/TileGrid.h        2014-04-09 03:52:53 UTC (rev 166996)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileGrid.h        2014-04-09 05:01:54 UTC (rev 166997)
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx">     double retainedTileBackingStoreMemory() const;
</span><span class="cx">     unsigned blankPixelCount() const;
</span><span class="cx"> 
</span><del>-    void drawTileMapContents(CGContextRef, CGRect layerBounds);
</del><ins>+    void drawTileMapContents(CGContextRef, CGRect layerBounds) const;
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     unsigned numberOfUnparentedTiles() const { return m_cohortList.size(); }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscamacTileGridmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/mac/TileGrid.mm (166996 => 166997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/mac/TileGrid.mm        2014-04-09 03:52:53 UTC (rev 166996)
+++ trunk/Source/WebCore/platform/graphics/ca/mac/TileGrid.mm        2014-04-09 05:01:54 UTC (rev 166997)
</span><span class="lines">@@ -598,7 +598,7 @@
</span><span class="cx">     return coverageRectInLayerCoords;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void TileGrid::drawTileMapContents(CGContextRef context, CGRect layerBounds)
</del><ins>+void TileGrid::drawTileMapContents(CGContextRef context, CGRect layerBounds) const
</ins><span class="cx"> {
</span><span class="cx">     CGContextSetRGBFillColor(context, 0.3, 0.3, 0.3, 1);
</span><span class="cx">     CGContextFillRect(context, layerBounds);
</span></span></pre>
</div>
</div>

</body>
</html>