Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Side by Side Diff: cc/tiled_layer_unittest.cc

Issue 11583005: cc: Make occlusion tracker always work in target space. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase+nits Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/test/occlusion_tracker_test_common.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/tiled_layer.h" 5 #include "cc/tiled_layer.h"
6 6
7 #include "cc/bitmap_content_layer_updater.h" 7 #include "cc/bitmap_content_layer_updater.h"
8 #include "cc/layer_painter.h" 8 #include "cc/layer_painter.h"
9 #include "cc/overdraw_metrics.h" 9 #include "cc/overdraw_metrics.h"
10 #include "cc/rendering_stats.h" 10 #include "cc/rendering_stats.h"
(...skipping 12 matching lines...) Expand all
23 23
24 namespace cc { 24 namespace cc {
25 namespace { 25 namespace {
26 26
27 class TestOcclusionTracker : public OcclusionTracker { 27 class TestOcclusionTracker : public OcclusionTracker {
28 public: 28 public:
29 TestOcclusionTracker() 29 TestOcclusionTracker()
30 : OcclusionTracker(gfx::Rect(0, 0, 1000, 1000), true) 30 : OcclusionTracker(gfx::Rect(0, 0, 1000, 1000), true)
31 , m_layerClipRectInTarget(gfx::Rect(0, 0, 1000, 1000)) 31 , m_layerClipRectInTarget(gfx::Rect(0, 0, 1000, 1000))
32 { 32 {
33 // Pretend we have visited a render surface.
34 m_stack.push_back(StackObject()); 33 m_stack.push_back(StackObject());
35 } 34 }
36 35
37 void setOcclusion(const Region& occlusion) { m_stack.back().occlusionInTarge t = occlusion; } 36 void setRenderTarget(Layer* renderTarget)
37 {
38 m_stack.back().target = renderTarget;
39 }
40
41 void setOcclusion(const Region& occlusion) { m_stack.back().occlusionFromIns ideTarget = occlusion; }
38 42
39 protected: 43 protected:
40 virtual gfx::Rect layerClipRectInTarget(const Layer* layer) const OVERRIDE { return m_layerClipRectInTarget; } 44 virtual gfx::Rect layerClipRectInTarget(const Layer* layer) const OVERRIDE { return m_layerClipRectInTarget; }
41 45
42 private: 46 private:
43 gfx::Rect m_layerClipRectInTarget; 47 gfx::Rect m_layerClipRectInTarget;
44 }; 48 };
45 49
46 class TiledLayerTest : public testing::Test { 50 class TiledLayerTest : public testing::Test {
47 public: 51 public:
48 TiledLayerTest() 52 TiledLayerTest()
49 : m_proxy(NULL) 53 : m_proxy(NULL)
50 , m_outputSurface(createFakeOutputSurface()) 54 , m_outputSurface(createFakeOutputSurface())
51 , m_queue(make_scoped_ptr(new ResourceUpdateQueue)) 55 , m_queue(make_scoped_ptr(new ResourceUpdateQueue))
52 , m_occlusion(0) 56 , m_occlusion(0)
53 { 57 {
54 } 58 }
55 59
56 virtual void SetUp() 60 virtual void SetUp()
57 { 61 {
58 m_layerTreeHost = LayerTreeHost::create(&m_fakeLayerImplTreeHostClient, m_settings, scoped_ptr<Thread>(NULL)); 62 m_layerTreeHost = LayerTreeHost::create(&m_fakeLayerImplTreeHostClient, m_settings, scoped_ptr<Thread>(NULL));
59 m_proxy = m_layerTreeHost->proxy(); 63 m_proxy = m_layerTreeHost->proxy();
60 m_resourceManager = PrioritizedResourceManager::create(m_proxy); 64 m_resourceManager = PrioritizedResourceManager::create(m_proxy);
61 m_layerTreeHost->initializeRendererIfNeeded(); 65 m_layerTreeHost->initializeRendererIfNeeded();
66 m_layerTreeHost->setRootLayer(Layer::create());
67
62 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(m_proxy); 68 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(m_proxy);
63 m_resourceProvider = ResourceProvider::create(m_outputSurface.get()); 69 m_resourceProvider = ResourceProvider::create(m_outputSurface.get());
64 m_hostImpl = make_scoped_ptr(new FakeLayerTreeHostImpl(m_proxy)); 70 m_hostImpl = make_scoped_ptr(new FakeLayerTreeHostImpl(m_proxy));
65 } 71 }
66 72
67 virtual ~TiledLayerTest() 73 virtual ~TiledLayerTest()
68 { 74 {
69 resourceManagerClearAllMemory(m_resourceManager.get(), m_resourceProvide r.get()); 75 resourceManagerClearAllMemory(m_resourceManager.get(), m_resourceProvide r.get());
76
70 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(m_proxy); 77 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(m_proxy);
71 m_resourceProvider.reset(); 78 m_resourceProvider.reset();
72 m_hostImpl.reset(); 79 m_hostImpl.reset();
73 } 80 }
74 81
75 class ScopedFakeTiledLayerImpl {
76 public:
77 ScopedFakeTiledLayerImpl(LayerTreeImpl* treeImpl, int id)
78 {
79 m_layerImpl = new FakeTiledLayerImpl(treeImpl, id);
80 }
81 ~ScopedFakeTiledLayerImpl()
82 {
83 delete m_layerImpl;
84 }
85 FakeTiledLayerImpl* get()
86 {
87 return m_layerImpl;
88 }
89 FakeTiledLayerImpl* operator->()
90 {
91 return m_layerImpl;
92 }
93 private:
94 FakeTiledLayerImpl* m_layerImpl;
95 };
96 void resourceManagerClearAllMemory(PrioritizedResourceManager* resourceManag er, ResourceProvider* resourceProvider) 82 void resourceManagerClearAllMemory(PrioritizedResourceManager* resourceManag er, ResourceProvider* resourceProvider)
97 { 83 {
98 { 84 {
99 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThread Blocked(m_proxy); 85 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThread Blocked(m_proxy);
100 resourceManager->clearAllMemory(resourceProvider); 86 resourceManager->clearAllMemory(resourceProvider);
101 resourceManager->reduceMemory(resourceProvider); 87 resourceManager->reduceMemory(resourceProvider);
102 } 88 }
103 resourceManager->unlinkAndClearEvictedBackings(); 89 resourceManager->unlinkAndClearEvictedBackings();
104 } 90 }
105 void updateTextures() 91 void updateTextures()
(...skipping 14 matching lines...) Expand all
120 { 106 {
121 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(m_proxy); 107 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(m_proxy);
122 layer->pushPropertiesTo(layerImpl); 108 layer->pushPropertiesTo(layerImpl);
123 } 109 }
124 void layerUpdate(FakeTiledLayer* layer, TestOcclusionTracker* occluded) 110 void layerUpdate(FakeTiledLayer* layer, TestOcclusionTracker* occluded)
125 { 111 {
126 DebugScopedSetMainThread mainThread(m_proxy); 112 DebugScopedSetMainThread mainThread(m_proxy);
127 layer->update(*m_queue.get(), occluded, m_stats); 113 layer->update(*m_queue.get(), occluded, m_stats);
128 } 114 }
129 115
130 bool updateAndPush(FakeTiledLayer* layer1, 116 void calcDrawProps(const scoped_refptr<FakeTiledLayer>& layer1)
131 FakeTiledLayerImpl* layerImpl1, 117 {
132 FakeTiledLayer* layer2 = 0, 118 scoped_refptr<FakeTiledLayer> layer2;
133 FakeTiledLayerImpl* layerImpl2 = 0) 119 calcDrawProps(layer1, layer2);
120 }
121
122 void calcDrawProps(const scoped_refptr<FakeTiledLayer>& layer1,
123 const scoped_refptr<FakeTiledLayer>& layer2)
124 {
125 if (layer1 && !layer1->parent())
126 m_layerTreeHost->rootLayer()->addChild(layer1);
127 if (layer2 && !layer1->parent())
128 m_layerTreeHost->rootLayer()->addChild(layer2);
129 if (m_occlusion)
130 m_occlusion->setRenderTarget(m_layerTreeHost->rootLayer());
131
132 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
133 LayerTreeHostCommon::calculateDrawProperties(
134 m_layerTreeHost->rootLayer(),
135 m_layerTreeHost->deviceViewportSize(),
136 m_layerTreeHost->deviceScaleFactor(),
137 1, // page_scale_factor
138 m_layerTreeHost->rendererCapabilities().maxTextureSize,
139 false, // can_use_lcd_text
140 renderSurfaceLayerList);
141 }
142
143 bool updateAndPush(const scoped_refptr<FakeTiledLayer>& layer1,
144 const scoped_ptr<FakeTiledLayerImpl>& layerImpl1)
145 {
146 scoped_refptr<FakeTiledLayer> layer2;
147 scoped_ptr<FakeTiledLayerImpl> layerImpl2;
148 return updateAndPush(layer1, layerImpl1, layer2, layerImpl2);
149 }
150
151 bool updateAndPush(const scoped_refptr<FakeTiledLayer>& layer1,
152 const scoped_ptr<FakeTiledLayerImpl>& layerImpl1,
153 const scoped_refptr<FakeTiledLayer>& layer2,
154 const scoped_ptr<FakeTiledLayerImpl>& layerImpl2)
134 { 155 {
135 // Get textures 156 // Get textures
136 m_resourceManager->clearPriorities(); 157 m_resourceManager->clearPriorities();
137 if (layer1) 158 if (layer1)
138 layer1->setTexturePriorities(m_priorityCalculator); 159 layer1->setTexturePriorities(m_priorityCalculator);
139 if (layer2) 160 if (layer2)
140 layer2->setTexturePriorities(m_priorityCalculator); 161 layer2->setTexturePriorities(m_priorityCalculator);
141 m_resourceManager->prioritizeTextures(); 162 m_resourceManager->prioritizeTextures();
142 163
143 // Update content 164 // Update content
144 if (layer1) 165 if (layer1)
145 layer1->update(*m_queue.get(), m_occlusion, m_stats); 166 layer1->update(*m_queue.get(), m_occlusion, m_stats);
146 if (layer2) 167 if (layer2)
147 layer2->update(*m_queue.get(), m_occlusion, m_stats); 168 layer2->update(*m_queue.get(), m_occlusion, m_stats);
148 169
149 bool needsUpdate = false; 170 bool needsUpdate = false;
150 if (layer1) 171 if (layer1)
151 needsUpdate |= layer1->needsIdlePaint(); 172 needsUpdate |= layer1->needsIdlePaint();
152 if (layer2) 173 if (layer2)
153 needsUpdate |= layer2->needsIdlePaint(); 174 needsUpdate |= layer2->needsIdlePaint();
154 175
155 // Update textures and push. 176 // Update textures and push.
156 updateTextures(); 177 updateTextures();
157 if (layer1) 178 if (layer1)
158 layerPushPropertiesTo(layer1, layerImpl1); 179 layerPushPropertiesTo(layer1.get(), layerImpl1.get());
159 if (layer2) 180 if (layer2)
160 layerPushPropertiesTo(layer2, layerImpl2); 181 layerPushPropertiesTo(layer2.get(), layerImpl2.get());
161 182
162 return needsUpdate; 183 return needsUpdate;
163 } 184 }
164 185
165 public: 186 public:
166 Proxy* m_proxy; 187 Proxy* m_proxy;
167 LayerTreeSettings m_settings; 188 LayerTreeSettings m_settings;
168 scoped_ptr<OutputSurface> m_outputSurface; 189 scoped_ptr<OutputSurface> m_outputSurface;
169 scoped_ptr<ResourceProvider> m_resourceProvider; 190 scoped_ptr<ResourceProvider> m_resourceProvider;
170 scoped_ptr<ResourceUpdateQueue> m_queue; 191 scoped_ptr<ResourceUpdateQueue> m_queue;
171 RenderingStats m_stats; 192 RenderingStats m_stats;
172 PriorityCalculator m_priorityCalculator; 193 PriorityCalculator m_priorityCalculator;
173 FakeLayerImplTreeHostClient m_fakeLayerImplTreeHostClient; 194 FakeLayerImplTreeHostClient m_fakeLayerImplTreeHostClient;
174 scoped_ptr<LayerTreeHost> m_layerTreeHost; 195 scoped_ptr<LayerTreeHost> m_layerTreeHost;
175 scoped_ptr<FakeLayerTreeHostImpl> m_hostImpl; 196 scoped_ptr<FakeLayerTreeHostImpl> m_hostImpl;
176 scoped_ptr<PrioritizedResourceManager> m_resourceManager; 197 scoped_ptr<PrioritizedResourceManager> m_resourceManager;
177 TestOcclusionTracker* m_occlusion; 198 TestOcclusionTracker* m_occlusion;
178 }; 199 };
179 200
180 TEST_F(TiledLayerTest, pushDirtyTiles) 201 TEST_F(TiledLayerTest, pushDirtyTiles)
181 { 202 {
182 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 203 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
183 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 204 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
184 205
185 // The tile size is 100x100, so this invalidates and then paints two tiles. 206 // The tile size is 100x100, so this invalidates and then paints two tiles.
186 layer->setBounds(gfx::Size(100, 200)); 207 layer->setBounds(gfx::Size(100, 200));
187 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200); 208 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200);
188 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 200)); 209 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 200));
189 updateAndPush(layer.get(), layerImpl.get()); 210 updateAndPush(layer, layerImpl);
190 211
191 // We should have both tiles on the impl side. 212 // We should have both tiles on the impl side.
192 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 213 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
193 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1)); 214 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1));
194 215
195 // Invalidates both tiles, but then only update one of them. 216 // Invalidates both tiles, but then only update one of them.
196 layer->setBounds(gfx::Size(100, 200)); 217 layer->setBounds(gfx::Size(100, 200));
197 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100); 218 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100);
198 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 200)); 219 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 200));
199 updateAndPush(layer.get(), layerImpl.get()); 220 updateAndPush(layer, layerImpl);
200 221
201 // We should only have the first tile since the other tile was invalidated b ut not painted. 222 // We should only have the first tile since the other tile was invalidated b ut not painted.
202 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 223 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
203 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1)); 224 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1));
204 } 225 }
205 226
206 TEST_F(TiledLayerTest, pushOccludedDirtyTiles) 227 TEST_F(TiledLayerTest, pushOccludedDirtyTiles)
207 { 228 {
208 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 229 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
209 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 230 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
210 TestOcclusionTracker occluded; 231 TestOcclusionTracker occluded;
211 m_occlusion = &occluded; 232 m_occlusion = &occluded;
212 233
213 // The tile size is 100x100, so this invalidates and then paints two tiles. 234 // The tile size is 100x100, so this invalidates and then paints two tiles.
214 layer->setBounds(gfx::Size(100, 200)); 235 layer->setBounds(gfx::Size(100, 200));
215 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200); 236 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200);
216 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 100, 200); 237 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 100, 200);
217 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 200)); 238 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 200));
218 updateAndPush(layer.get(), layerImpl.get()); 239 updateAndPush(layer, layerImpl);
219 240
220 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 241 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
221 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000, 1 ); 242 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000, 1 );
222 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 243 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
223 244
224 // We should have both tiles on the impl side. 245 // We should have both tiles on the impl side.
225 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 246 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
226 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1)); 247 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1));
227 248
228 // Invalidates part of the top tile... 249 // Invalidates part of the top tile...
229 layer->invalidateContentRect(gfx::Rect(0, 0, 50, 50)); 250 layer->invalidateContentRect(gfx::Rect(0, 0, 50, 50));
230 // ....but the area is occluded. 251 // ....but the area is occluded.
231 occluded.setOcclusion(gfx::Rect(0, 0, 50, 50)); 252 occluded.setOcclusion(gfx::Rect(0, 0, 50, 50));
232 updateAndPush(layer.get(), layerImpl.get()); 253 updateAndPush(layer, layerImpl);
233 254
234 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 255 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
235 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 2500, 1); 256 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 2500, 1);
236 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 257 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
237 258
238 // We should still have both tiles, as part of the top tile is still unocclu ded. 259 // We should still have both tiles, as part of the top tile is still unocclu ded.
239 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 260 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
240 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1)); 261 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1));
241 } 262 }
242 263
243 TEST_F(TiledLayerTest, pushDeletedTiles) 264 TEST_F(TiledLayerTest, pushDeletedTiles)
244 { 265 {
245 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 266 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
246 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 267 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
247 268
248 // The tile size is 100x100, so this invalidates and then paints two tiles. 269 // The tile size is 100x100, so this invalidates and then paints two tiles.
249 layer->setBounds(gfx::Size(100, 200)); 270 layer->setBounds(gfx::Size(100, 200));
250 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200); 271 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200);
251 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 200)); 272 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 200));
252 updateAndPush(layer.get(), layerImpl.get()); 273 updateAndPush(layer, layerImpl);
253 274
254 // We should have both tiles on the impl side. 275 // We should have both tiles on the impl side.
255 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 276 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
256 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1)); 277 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1));
257 278
258 m_resourceManager->clearPriorities(); 279 m_resourceManager->clearPriorities();
259 resourceManagerClearAllMemory(m_resourceManager.get(), m_resourceProvider.ge t()); 280 resourceManagerClearAllMemory(m_resourceManager.get(), m_resourceProvider.ge t());
260 m_resourceManager->setMaxMemoryLimitBytes(4*1024*1024); 281 m_resourceManager->setMaxMemoryLimitBytes(4*1024*1024);
261 282
262 // This should drop the tiles on the impl thread. 283 // This should drop the tiles on the impl thread.
263 layerPushPropertiesTo(layer.get(), layerImpl.get()); 284 layerPushPropertiesTo(layer.get(), layerImpl.get());
264 285
265 // We should now have no textures on the impl thread. 286 // We should now have no textures on the impl thread.
266 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 0)); 287 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 0));
267 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1)); 288 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1));
268 289
269 // This should recreate and update one of the deleted textures. 290 // This should recreate and update one of the deleted textures.
270 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100); 291 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100);
271 updateAndPush(layer.get(), layerImpl.get()); 292 updateAndPush(layer, layerImpl);
272 293
273 // We should have one tiles on the impl side. 294 // We should have one tiles on the impl side.
274 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 295 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
275 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1)); 296 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1));
276 } 297 }
277 298
278 TEST_F(TiledLayerTest, pushIdlePaintTiles) 299 TEST_F(TiledLayerTest, pushIdlePaintTiles)
279 { 300 {
280 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 301 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
281 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 302 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
282 303
283 // The tile size is 100x100. Setup 5x5 tiles with one visible tile in the ce nter. 304 // The tile size is 100x100. Setup 5x5 tiles with one visible tile in the ce nter.
284 // This paints 1 visible of the 25 invalid tiles. 305 // This paints 1 visible of the 25 invalid tiles.
285 layer->setBounds(gfx::Size(500, 500)); 306 layer->setBounds(gfx::Size(500, 500));
286 layer->drawProperties().visible_content_rect = gfx::Rect(200, 200, 100, 100) ; 307 layer->drawProperties().visible_content_rect = gfx::Rect(200, 200, 100, 100) ;
287 layer->invalidateContentRect(gfx::Rect(0, 0, 500, 500)); 308 layer->invalidateContentRect(gfx::Rect(0, 0, 500, 500));
288 bool needsUpdate = updateAndPush(layer.get(), layerImpl.get()); 309 bool needsUpdate = updateAndPush(layer, layerImpl);
289 // We should need idle-painting for surrounding tiles. 310 // We should need idle-painting for surrounding tiles.
290 EXPECT_TRUE(needsUpdate); 311 EXPECT_TRUE(needsUpdate);
291 312
292 // We should have one tile on the impl side. 313 // We should have one tile on the impl side.
293 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(2, 2)); 314 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(2, 2));
294 315
295 // For the next four updates, we should detect we still need idle painting. 316 // For the next four updates, we should detect we still need idle painting.
296 for (int i = 0; i < 4; i++) { 317 for (int i = 0; i < 4; i++) {
297 needsUpdate = updateAndPush(layer.get(), layerImpl.get()); 318 needsUpdate = updateAndPush(layer, layerImpl);
298 EXPECT_TRUE(needsUpdate); 319 EXPECT_TRUE(needsUpdate);
299 } 320 }
300 321
301 // We should always finish painting eventually. 322 // We should always finish painting eventually.
302 for (int i = 0; i < 20; i++) 323 for (int i = 0; i < 20; i++)
303 needsUpdate = updateAndPush(layer.get(), layerImpl.get()); 324 needsUpdate = updateAndPush(layer, layerImpl);
304 325
305 // We should have pre-painted all of the surrounding tiles. 326 // We should have pre-painted all of the surrounding tiles.
306 for (int i = 0; i < 5; i++) { 327 for (int i = 0; i < 5; i++) {
307 for (int j = 0; j < 5; j++) 328 for (int j = 0; j < 5; j++)
308 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(i, j)); 329 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(i, j));
309 } 330 }
310 331
311 EXPECT_FALSE(needsUpdate); 332 EXPECT_FALSE(needsUpdate);
312 } 333 }
313 334
314 TEST_F(TiledLayerTest, predictivePainting) 335 TEST_F(TiledLayerTest, predictivePainting)
315 { 336 {
316 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 337 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
317 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 338 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
318 339
319 // Prepainting should occur in the scroll direction first, and the 340 // Prepainting should occur in the scroll direction first, and the
320 // visible rect should be extruded only along the dominant axis. 341 // visible rect should be extruded only along the dominant axis.
321 gfx::Vector2d directions[6] = { gfx::Vector2d(-10, 0), 342 gfx::Vector2d directions[6] = { gfx::Vector2d(-10, 0),
322 gfx::Vector2d(10, 0), 343 gfx::Vector2d(10, 0),
323 gfx::Vector2d(0, -10), 344 gfx::Vector2d(0, -10),
324 gfx::Vector2d(0, 10), 345 gfx::Vector2d(0, 10),
325 gfx::Vector2d(10, 20), 346 gfx::Vector2d(10, 20),
326 gfx::Vector2d(-20, 10) }; 347 gfx::Vector2d(-20, 10) };
327 // We should push all tiles that touch the extruded visible rect. 348 // We should push all tiles that touch the extruded visible rect.
(...skipping 17 matching lines...) Expand all
345 gfx::Size contentBounds = gfx::Size(500, 500); 366 gfx::Size contentBounds = gfx::Size(500, 500);
346 gfx::Rect contentRect = gfx::Rect(0, 0, 500, 500); 367 gfx::Rect contentRect = gfx::Rect(0, 0, 500, 500);
347 gfx::Rect visibleRect = gfx::Rect(200, 200, 100, 100); 368 gfx::Rect visibleRect = gfx::Rect(200, 200, 100, 100);
348 gfx::Rect previousVisibleRect = gfx::Rect(visibleRect.origin() + directi ons[k], visibleRect.size()); 369 gfx::Rect previousVisibleRect = gfx::Rect(visibleRect.origin() + directi ons[k], visibleRect.size());
349 gfx::Rect nextVisibleRect = gfx::Rect(visibleRect.origin() - directions[ k], visibleRect.size()); 370 gfx::Rect nextVisibleRect = gfx::Rect(visibleRect.origin() - directions[ k], visibleRect.size());
350 371
351 // Setup. Use the previousVisibleRect to setup the prediction for next f rame. 372 // Setup. Use the previousVisibleRect to setup the prediction for next f rame.
352 layer->setBounds(contentBounds); 373 layer->setBounds(contentBounds);
353 layer->drawProperties().visible_content_rect = previousVisibleRect; 374 layer->drawProperties().visible_content_rect = previousVisibleRect;
354 layer->invalidateContentRect(contentRect); 375 layer->invalidateContentRect(contentRect);
355 bool needsUpdate = updateAndPush(layer.get(), layerImpl.get()); 376 bool needsUpdate = updateAndPush(layer, layerImpl);
356 377
357 // Invalidate and move the visibleRect in the scroll direction. 378 // Invalidate and move the visibleRect in the scroll direction.
358 // Check that the correct tiles have been painted in the visible pass. 379 // Check that the correct tiles have been painted in the visible pass.
359 layer->invalidateContentRect(contentRect); 380 layer->invalidateContentRect(contentRect);
360 layer->drawProperties().visible_content_rect = visibleRect; 381 layer->drawProperties().visible_content_rect = visibleRect;
361 needsUpdate = updateAndPush(layer.get(), layerImpl.get()); 382 needsUpdate = updateAndPush(layer, layerImpl);
362 for (int i = 0; i < 5; i++) { 383 for (int i = 0; i < 5; i++) {
363 for (int j = 0; j < 5; j++) 384 for (int j = 0; j < 5; j++)
364 EXPECT_EQ(layerImpl->hasResourceIdForTileAt(i, j), pushedVisible Tiles[k].Contains(i, j)); 385 EXPECT_EQ(layerImpl->hasResourceIdForTileAt(i, j), pushedVisible Tiles[k].Contains(i, j));
365 } 386 }
366 387
367 // Move the transform in the same direction without invalidating. 388 // Move the transform in the same direction without invalidating.
368 // Check that non-visible pre-painting occured in the correct direction. 389 // Check that non-visible pre-painting occured in the correct direction.
369 // Ignore diagonal scrolls here (k > 3) as these have new visible conten t now. 390 // Ignore diagonal scrolls here (k > 3) as these have new visible conten t now.
370 if (k <= 3) { 391 if (k <= 3) {
371 layer->drawProperties().visible_content_rect = nextVisibleRect; 392 layer->drawProperties().visible_content_rect = nextVisibleRect;
372 needsUpdate = updateAndPush(layer.get(), layerImpl.get()); 393 needsUpdate = updateAndPush(layer, layerImpl);
373 for (int i = 0; i < 5; i++) { 394 for (int i = 0; i < 5; i++) {
374 for (int j = 0; j < 5; j++) 395 for (int j = 0; j < 5; j++)
375 EXPECT_EQ(layerImpl->hasResourceIdForTileAt(i, j), pushedPre paintTiles[k].Contains(i, j)); 396 EXPECT_EQ(layerImpl->hasResourceIdForTileAt(i, j), pushedPre paintTiles[k].Contains(i, j));
376 } 397 }
377 } 398 }
378 399
379 // We should always finish painting eventually. 400 // We should always finish painting eventually.
380 for (int i = 0; i < 20; i++) 401 for (int i = 0; i < 20; i++)
381 needsUpdate = updateAndPush(layer.get(), layerImpl.get()); 402 needsUpdate = updateAndPush(layer, layerImpl);
382 EXPECT_FALSE(needsUpdate); 403 EXPECT_FALSE(needsUpdate);
383 } 404 }
384 } 405 }
385 406
386 TEST_F(TiledLayerTest, pushTilesAfterIdlePaintFailed) 407 TEST_F(TiledLayerTest, pushTilesAfterIdlePaintFailed)
387 { 408 {
388 // Start with 2mb of memory, but the test is going to try to use just more t han 1mb, so we reduce to 1mb later. 409 // Start with 2mb of memory, but the test is going to try to use just more t han 1mb, so we reduce to 1mb later.
389 m_resourceManager->setMaxMemoryLimitBytes(2 * 1024 * 1024); 410 m_resourceManager->setMaxMemoryLimitBytes(2 * 1024 * 1024);
390 scoped_refptr<FakeTiledLayer> layer1 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get())); 411 scoped_refptr<FakeTiledLayer> layer1 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get()));
391 ScopedFakeTiledLayerImpl layerImpl1(m_hostImpl->activeTree(), 1); 412 scoped_ptr<FakeTiledLayerImpl> layerImpl1 = make_scoped_ptr(new FakeTiledLay erImpl(m_hostImpl->activeTree(), 1));
392 scoped_refptr<FakeTiledLayer> layer2 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get())); 413 scoped_refptr<FakeTiledLayer> layer2 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get()));
393 ScopedFakeTiledLayerImpl layerImpl2(m_hostImpl->activeTree(), 2); 414 scoped_ptr<FakeTiledLayerImpl> layerImpl2 = make_scoped_ptr(new FakeTiledLay erImpl(m_hostImpl->activeTree(), 2));
394 415
395 // For this test we have two layers. layer1 exhausts most texture memory, le aving room for 2 more tiles from 416 // For this test we have two layers. layer1 exhausts most texture memory, le aving room for 2 more tiles from
396 // layer2, but not all three tiles. First we paint layer1, and one tile from layer2. Then when we idle paint 417 // layer2, but not all three tiles. First we paint layer1, and one tile from layer2. Then when we idle paint
397 // layer2, we will fail on the third tile of layer2, and this should not lea ve the second tile in a bad state. 418 // layer2, we will fail on the third tile of layer2, and this should not lea ve the second tile in a bad state.
398 419
399 // This uses 960000 bytes, leaving 88576 bytes of memory left, which is enou gh for 2 tiles only in the other layer. 420 // This uses 960000 bytes, leaving 88576 bytes of memory left, which is enou gh for 2 tiles only in the other layer.
400 gfx::Rect layer1Rect(0, 0, 100, 2400); 421 gfx::Rect layer1Rect(0, 0, 100, 2400);
401 422
402 // This requires 4*30000 bytes of memory. 423 // This requires 4*30000 bytes of memory.
403 gfx::Rect layer2Rect(0, 0, 100, 300); 424 gfx::Rect layer2Rect(0, 0, 100, 300);
404 425
405 // Paint a single tile in layer2 so that it will idle paint. 426 // Paint a single tile in layer2 so that it will idle paint.
406 layer1->setBounds(layer1Rect.size()); 427 layer1->setBounds(layer1Rect.size());
407 layer1->drawProperties().visible_content_rect = layer1Rect; 428 layer1->drawProperties().visible_content_rect = layer1Rect;
408 layer2->setBounds(layer2Rect.size()); 429 layer2->setBounds(layer2Rect.size());
409 layer2->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100); 430 layer2->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100);
410 bool needsUpdate = updateAndPush(layer1.get(), layerImpl1.get(), 431 bool needsUpdate = updateAndPush(layer1, layerImpl1,
411 layer2.get(), layerImpl2.get()); 432 layer2, layerImpl2);
412 // We should need idle-painting for both remaining tiles in layer2. 433 // We should need idle-painting for both remaining tiles in layer2.
413 EXPECT_TRUE(needsUpdate); 434 EXPECT_TRUE(needsUpdate);
414 435
415 // Reduce our memory limits to 1mb. 436 // Reduce our memory limits to 1mb.
416 m_resourceManager->setMaxMemoryLimitBytes(1024 * 1024); 437 m_resourceManager->setMaxMemoryLimitBytes(1024 * 1024);
417 438
418 // Now idle paint layer2. We are going to run out of memory though! 439 // Now idle paint layer2. We are going to run out of memory though!
419 // Oh well, commit the frame and push. 440 // Oh well, commit the frame and push.
420 for (int i = 0; i < 4; i++) { 441 for (int i = 0; i < 4; i++) {
421 needsUpdate = updateAndPush(layer1.get(), layerImpl1.get(), 442 needsUpdate = updateAndPush(layer1, layerImpl1,
422 layer2.get(), layerImpl2.get()); 443 layer2, layerImpl2);
423 } 444 }
424 445
425 // Sanity check, we should have textures for the big layer. 446 // Sanity check, we should have textures for the big layer.
426 EXPECT_TRUE(layerImpl1->hasResourceIdForTileAt(0, 0)); 447 EXPECT_TRUE(layerImpl1->hasResourceIdForTileAt(0, 0));
427 EXPECT_TRUE(layerImpl1->hasResourceIdForTileAt(0, 23)); 448 EXPECT_TRUE(layerImpl1->hasResourceIdForTileAt(0, 23));
428 449
429 // We should only have the first two tiles from layer2 since 450 // We should only have the first two tiles from layer2 since
430 // it failed to idle update the last tile. 451 // it failed to idle update the last tile.
431 EXPECT_TRUE(layerImpl2->hasResourceIdForTileAt(0, 0)); 452 EXPECT_TRUE(layerImpl2->hasResourceIdForTileAt(0, 0));
432 EXPECT_TRUE(layerImpl2->hasResourceIdForTileAt(0, 0)); 453 EXPECT_TRUE(layerImpl2->hasResourceIdForTileAt(0, 0));
433 EXPECT_TRUE(layerImpl2->hasResourceIdForTileAt(0, 1)); 454 EXPECT_TRUE(layerImpl2->hasResourceIdForTileAt(0, 1));
434 EXPECT_TRUE(layerImpl2->hasResourceIdForTileAt(0, 1)); 455 EXPECT_TRUE(layerImpl2->hasResourceIdForTileAt(0, 1));
435 456
436 EXPECT_FALSE(needsUpdate); 457 EXPECT_FALSE(needsUpdate);
437 EXPECT_FALSE(layerImpl2->hasResourceIdForTileAt(0, 2)); 458 EXPECT_FALSE(layerImpl2->hasResourceIdForTileAt(0, 2));
438 } 459 }
439 460
440 TEST_F(TiledLayerTest, pushIdlePaintedOccludedTiles) 461 TEST_F(TiledLayerTest, pushIdlePaintedOccludedTiles)
441 { 462 {
442 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 463 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
443 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 464 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
444 TestOcclusionTracker occluded; 465 TestOcclusionTracker occluded;
445 m_occlusion = &occluded; 466 m_occlusion = &occluded;
446 467
447 // The tile size is 100x100, so this invalidates one occluded tile, culls it during paint, but prepaints it. 468 // The tile size is 100x100, so this invalidates one occluded tile, culls it during paint, but prepaints it.
448 occluded.setOcclusion(gfx::Rect(0, 0, 100, 100)); 469 occluded.setOcclusion(gfx::Rect(0, 0, 100, 100));
449 470
450 layer->setBounds(gfx::Size(100, 100)); 471 layer->setBounds(gfx::Size(100, 100));
472 calcDrawProps(layer);
451 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100); 473 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100);
452 updateAndPush(layer.get(), layerImpl.get()); 474 updateAndPush(layer, layerImpl);
453 475
454 // We should have the prepainted tile on the impl side, but culled it during paint. 476 // We should have the prepainted tile on the impl side, but culled it during paint.
455 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 477 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
456 EXPECT_EQ(1, occluded.overdrawMetrics().tilesCulledForUpload()); 478 EXPECT_EQ(1, occluded.overdrawMetrics().tilesCulledForUpload());
457 } 479 }
458 480
459 TEST_F(TiledLayerTest, pushTilesMarkedDirtyDuringPaint) 481 TEST_F(TiledLayerTest, pushTilesMarkedDirtyDuringPaint)
460 { 482 {
461 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 483 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
462 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 484 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
463 485
464 // The tile size is 100x100, so this invalidates and then paints two tiles. 486 // The tile size is 100x100, so this invalidates and then paints two tiles.
465 // However, during the paint, we invalidate one of the tiles. This should 487 // However, during the paint, we invalidate one of the tiles. This should
466 // not prevent the tile from being pushed. 488 // not prevent the tile from being pushed.
467 layer->fakeLayerUpdater()->setRectToInvalidate(gfx::Rect(0, 50, 100, 50), la yer.get()); 489 layer->fakeLayerUpdater()->setRectToInvalidate(gfx::Rect(0, 50, 100, 50), la yer.get());
468 layer->setBounds(gfx::Size(100, 200)); 490 layer->setBounds(gfx::Size(100, 200));
491 calcDrawProps(layer);
469 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200); 492 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200);
470 updateAndPush(layer.get(), layerImpl.get()); 493 updateAndPush(layer, layerImpl);
471 494
472 // We should have both tiles on the impl side. 495 // We should have both tiles on the impl side.
473 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 496 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
474 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1)); 497 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1));
475 } 498 }
476 499
477 TEST_F(TiledLayerTest, pushTilesLayerMarkedDirtyDuringPaintOnNextLayer) 500 TEST_F(TiledLayerTest, pushTilesLayerMarkedDirtyDuringPaintOnNextLayer)
478 { 501 {
479 scoped_refptr<FakeTiledLayer> layer1 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get())); 502 scoped_refptr<FakeTiledLayer> layer1 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get()));
480 scoped_refptr<FakeTiledLayer> layer2 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get())); 503 scoped_refptr<FakeTiledLayer> layer2 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get()));
481 ScopedFakeTiledLayerImpl layer1Impl(m_hostImpl->activeTree(), 1); 504 scoped_ptr<FakeTiledLayerImpl> layer1Impl = make_scoped_ptr(new FakeTiledLay erImpl(m_hostImpl->activeTree(), 1));
482 ScopedFakeTiledLayerImpl layer2Impl(m_hostImpl->activeTree(), 2); 505 scoped_ptr<FakeTiledLayerImpl> layer2Impl = make_scoped_ptr(new FakeTiledLay erImpl(m_hostImpl->activeTree(), 2));
483 506
484 // Invalidate a tile on layer1, during update of layer 2. 507 // Invalidate a tile on layer1, during update of layer 2.
485 layer2->fakeLayerUpdater()->setRectToInvalidate(gfx::Rect(0, 50, 100, 50), l ayer1.get()); 508 layer2->fakeLayerUpdater()->setRectToInvalidate(gfx::Rect(0, 50, 100, 50), l ayer1.get());
486 layer1->setBounds(gfx::Size(100, 200)); 509 layer1->setBounds(gfx::Size(100, 200));
510 layer2->setBounds(gfx::Size(100, 200));
511 calcDrawProps(layer1, layer2);
487 layer1->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200); 512 layer1->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200);
488 layer2->setBounds(gfx::Size(100, 200));
489 layer2->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200); 513 layer2->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200);
490 updateAndPush(layer1.get(), layer1Impl.get(), 514 updateAndPush(layer1, layer1Impl,
491 layer2.get(), layer2Impl.get()); 515 layer2, layer2Impl);
492 516
493 // We should have both tiles on the impl side for all layers. 517 // We should have both tiles on the impl side for all layers.
494 EXPECT_TRUE(layer1Impl->hasResourceIdForTileAt(0, 0)); 518 EXPECT_TRUE(layer1Impl->hasResourceIdForTileAt(0, 0));
495 EXPECT_TRUE(layer1Impl->hasResourceIdForTileAt(0, 1)); 519 EXPECT_TRUE(layer1Impl->hasResourceIdForTileAt(0, 1));
496 EXPECT_TRUE(layer2Impl->hasResourceIdForTileAt(0, 0)); 520 EXPECT_TRUE(layer2Impl->hasResourceIdForTileAt(0, 0));
497 EXPECT_TRUE(layer2Impl->hasResourceIdForTileAt(0, 1)); 521 EXPECT_TRUE(layer2Impl->hasResourceIdForTileAt(0, 1));
498 } 522 }
499 523
500 TEST_F(TiledLayerTest, pushTilesLayerMarkedDirtyDuringPaintOnPreviousLayer) 524 TEST_F(TiledLayerTest, pushTilesLayerMarkedDirtyDuringPaintOnPreviousLayer)
501 { 525 {
502 scoped_refptr<FakeTiledLayer> layer1 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get())); 526 scoped_refptr<FakeTiledLayer> layer1 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get()));
503 scoped_refptr<FakeTiledLayer> layer2 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get())); 527 scoped_refptr<FakeTiledLayer> layer2 = make_scoped_refptr(new FakeTiledLayer (m_resourceManager.get()));
504 ScopedFakeTiledLayerImpl layer1Impl(m_hostImpl->activeTree(), 1); 528 scoped_ptr<FakeTiledLayerImpl> layer1Impl = make_scoped_ptr(new FakeTiledLay erImpl(m_hostImpl->activeTree(), 1));
505 ScopedFakeTiledLayerImpl layer2Impl(m_hostImpl->activeTree(), 2); 529 scoped_ptr<FakeTiledLayerImpl> layer2Impl = make_scoped_ptr(new FakeTiledLay erImpl(m_hostImpl->activeTree(), 2));
506 530
507 layer1->fakeLayerUpdater()->setRectToInvalidate(gfx::Rect(0, 50, 100, 50), l ayer2.get()); 531 layer1->fakeLayerUpdater()->setRectToInvalidate(gfx::Rect(0, 50, 100, 50), l ayer2.get());
508 layer1->setBounds(gfx::Size(100, 200)); 532 layer1->setBounds(gfx::Size(100, 200));
533 layer2->setBounds(gfx::Size(100, 200));
534 calcDrawProps(layer1, layer2);
509 layer1->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200); 535 layer1->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200);
510 layer2->setBounds(gfx::Size(100, 200));
511 layer2->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200); 536 layer2->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200);
512 updateAndPush(layer1.get(), layer1Impl.get(), 537 updateAndPush(layer1, layer1Impl,
513 layer2.get(), layer2Impl.get()); 538 layer2, layer2Impl);
514 539
515 // We should have both tiles on the impl side for all layers. 540 // We should have both tiles on the impl side for all layers.
516 EXPECT_TRUE(layer1Impl->hasResourceIdForTileAt(0, 0)); 541 EXPECT_TRUE(layer1Impl->hasResourceIdForTileAt(0, 0));
517 EXPECT_TRUE(layer1Impl->hasResourceIdForTileAt(0, 1)); 542 EXPECT_TRUE(layer1Impl->hasResourceIdForTileAt(0, 1));
518 EXPECT_TRUE(layer2Impl->hasResourceIdForTileAt(0, 0)); 543 EXPECT_TRUE(layer2Impl->hasResourceIdForTileAt(0, 0));
519 EXPECT_TRUE(layer2Impl->hasResourceIdForTileAt(0, 1)); 544 EXPECT_TRUE(layer2Impl->hasResourceIdForTileAt(0, 1));
520 } 545 }
521 546
522 TEST_F(TiledLayerTest, paintSmallAnimatedLayersImmediately) 547 TEST_F(TiledLayerTest, paintSmallAnimatedLayersImmediately)
523 { 548 {
(...skipping 12 matching lines...) Expand all
536 int memoryForLayer = layerWidth * layerHeight * 4; 561 int memoryForLayer = layerWidth * layerHeight * 4;
537 layerTreeHost->setViewportSize(gfx::Size(layerWidth, layerHeight), gfx:: Size(layerWidth, layerHeight)); 562 layerTreeHost->setViewportSize(gfx::Size(layerWidth, layerHeight), gfx:: Size(layerWidth, layerHeight));
538 563
539 // Use 10x5 tiles to run out of memory. 564 // Use 10x5 tiles to run out of memory.
540 if (runOutOfMemory[i]) 565 if (runOutOfMemory[i])
541 layerWidth *= 2; 566 layerWidth *= 2;
542 567
543 m_resourceManager->setMaxMemoryLimitBytes(memoryForLayer); 568 m_resourceManager->setMaxMemoryLimitBytes(memoryForLayer);
544 569
545 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLa yer(m_resourceManager.get())); 570 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLa yer(m_resourceManager.get()));
546 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 571 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiled LayerImpl(m_hostImpl->activeTree(), 1));
547 572
548 // Full size layer with half being visible. 573 // Full size layer with half being visible.
549 gfx::Size contentBounds(layerWidth, layerHeight); 574 gfx::Size contentBounds(layerWidth, layerHeight);
550 gfx::Rect contentRect(gfx::Point(), contentBounds); 575 gfx::Rect contentRect(gfx::Point(), contentBounds);
551 gfx::Rect visibleRect(gfx::Point(), gfx::Size(layerWidth / 2, layerHeigh t)); 576 gfx::Rect visibleRect(gfx::Point(), gfx::Size(layerWidth / 2, layerHeigh t));
552 577
553 // Pretend the layer is animating. 578 // Pretend the layer is animating.
554 layer->drawProperties().target_space_transform_is_animating = true; 579 layer->drawProperties().target_space_transform_is_animating = true;
555 layer->setBounds(contentBounds); 580 layer->setBounds(contentBounds);
556 layer->drawProperties().visible_content_rect = visibleRect; 581 layer->drawProperties().visible_content_rect = visibleRect;
(...skipping 21 matching lines...) Expand all
578 for (int j = 0; j < 5; ++j) 603 for (int j = 0; j < 5; ++j)
579 EXPECT_EQ(layerImpl->hasResourceIdForTileAt(i, j), i < 5); 604 EXPECT_EQ(layerImpl->hasResourceIdForTileAt(i, j), i < 5);
580 } 605 }
581 } 606 }
582 } 607 }
583 } 608 }
584 609
585 TEST_F(TiledLayerTest, idlePaintOutOfMemory) 610 TEST_F(TiledLayerTest, idlePaintOutOfMemory)
586 { 611 {
587 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 612 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
588 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 613 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
589 614
590 // We have enough memory for only the visible rect, so we will run out of me mory in first idle paint. 615 // We have enough memory for only the visible rect, so we will run out of me mory in first idle paint.
591 int memoryLimit = 4 * 100 * 100; // 1 tiles, 4 bytes per pixel. 616 int memoryLimit = 4 * 100 * 100; // 1 tiles, 4 bytes per pixel.
592 m_resourceManager->setMaxMemoryLimitBytes(memoryLimit); 617 m_resourceManager->setMaxMemoryLimitBytes(memoryLimit);
593 618
594 // The tile size is 100x100, so this invalidates and then paints two tiles. 619 // The tile size is 100x100, so this invalidates and then paints two tiles.
595 bool needsUpdate = false; 620 bool needsUpdate = false;
596 layer->setBounds(gfx::Size(300, 300)); 621 layer->setBounds(gfx::Size(300, 300));
622 calcDrawProps(layer);
597 layer->drawProperties().visible_content_rect = gfx::Rect(100, 100, 100, 100) ; 623 layer->drawProperties().visible_content_rect = gfx::Rect(100, 100, 100, 100) ;
598 for (int i = 0; i < 2; i++) 624 for (int i = 0; i < 2; i++)
599 needsUpdate = updateAndPush(layer.get(), layerImpl.get()); 625 needsUpdate = updateAndPush(layer, layerImpl);
600 626
601 // Idle-painting should see no more priority tiles for painting. 627 // Idle-painting should see no more priority tiles for painting.
602 EXPECT_FALSE(needsUpdate); 628 EXPECT_FALSE(needsUpdate);
603 629
604 // We should have one tile on the impl side. 630 // We should have one tile on the impl side.
605 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(1, 1)); 631 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(1, 1));
606 } 632 }
607 633
608 TEST_F(TiledLayerTest, idlePaintZeroSizedLayer) 634 TEST_F(TiledLayerTest, idlePaintZeroSizedLayer)
609 { 635 {
610 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 636 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
611 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 637 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
612 638
613 bool animating[2] = {false, true}; 639 bool animating[2] = {false, true};
614 for (int i = 0; i < 2; i++) { 640 for (int i = 0; i < 2; i++) {
615 // Pretend the layer is animating. 641 // Pretend the layer is animating.
616 layer->drawProperties().target_space_transform_is_animating = animating[ i]; 642 layer->drawProperties().target_space_transform_is_animating = animating[ i];
617 643
618 // The layer's bounds are empty. 644 // The layer's bounds are empty.
619 // Empty layers don't paint or idle-paint. 645 // Empty layers don't paint or idle-paint.
620 layer->setBounds(gfx::Size()); 646 layer->setBounds(gfx::Size());
647 calcDrawProps(layer);
621 layer->drawProperties().visible_content_rect = gfx::Rect(); 648 layer->drawProperties().visible_content_rect = gfx::Rect();
622 bool needsUpdate = updateAndPush(layer.get(), layerImpl.get()); 649 bool needsUpdate = updateAndPush(layer, layerImpl);
623 650
624 // Empty layers don't have tiles. 651 // Empty layers don't have tiles.
625 EXPECT_EQ(0u, layer->numPaintedTiles()); 652 EXPECT_EQ(0u, layer->numPaintedTiles());
626 653
627 // Empty layers don't need prepaint. 654 // Empty layers don't need prepaint.
628 EXPECT_FALSE(needsUpdate); 655 EXPECT_FALSE(needsUpdate);
629 656
630 // Empty layers don't have tiles. 657 // Empty layers don't have tiles.
631 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 0)); 658 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 0));
632 } 659 }
633 } 660 }
634 661
635 TEST_F(TiledLayerTest, idlePaintNonVisibleLayers) 662 TEST_F(TiledLayerTest, idlePaintNonVisibleLayers)
636 { 663 {
637 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 664 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
638 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 665 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
639 666
640 // Alternate between not visible and visible. 667 // Alternate between not visible and visible.
641 gfx::Rect v(0, 0, 100, 100); 668 gfx::Rect v(0, 0, 100, 100);
642 gfx::Rect nv(0, 0, 0, 0); 669 gfx::Rect nv(0, 0, 0, 0);
643 gfx::Rect visibleRect[10] = {nv, nv, v, v, nv, nv, v, v, nv, nv}; 670 gfx::Rect visibleRect[10] = {nv, nv, v, v, nv, nv, v, v, nv, nv};
644 bool invalidate[10] = {true, true, true, true, true, true, true, true, fals e, false }; 671 bool invalidate[10] = {true, true, true, true, true, true, true, true, fals e, false };
645 672
646 // We should not have any tiles except for when the layer was visible 673 // We should not have any tiles except for when the layer was visible
647 // or after the layer was visible and we didn't invalidate. 674 // or after the layer was visible and we didn't invalidate.
648 bool haveTile[10] = { false, false, true, true, false, false, true, true, tr ue, true }; 675 bool haveTile[10] = { false, false, true, true, false, false, true, true, tr ue, true };
649 676
650 for (int i = 0; i < 10; i++) { 677 for (int i = 0; i < 10; i++) {
651 layer->setBounds(gfx::Size(100, 100)); 678 layer->setBounds(gfx::Size(100, 100));
679 calcDrawProps(layer);
652 layer->drawProperties().visible_content_rect = visibleRect[i]; 680 layer->drawProperties().visible_content_rect = visibleRect[i];
653 681
654 if (invalidate[i]) 682 if (invalidate[i])
655 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 100)); 683 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 100));
656 bool needsUpdate = updateAndPush(layer.get(), layerImpl.get()); 684 bool needsUpdate = updateAndPush(layer, layerImpl);
657 685
658 // We should never signal idle paint, as we painted the entire layer 686 // We should never signal idle paint, as we painted the entire layer
659 // or the layer was not visible. 687 // or the layer was not visible.
660 EXPECT_FALSE(needsUpdate); 688 EXPECT_FALSE(needsUpdate);
661 EXPECT_EQ(layerImpl->hasResourceIdForTileAt(0, 0), haveTile[i]); 689 EXPECT_EQ(layerImpl->hasResourceIdForTileAt(0, 0), haveTile[i]);
662 } 690 }
663 } 691 }
664 692
665 TEST_F(TiledLayerTest, invalidateFromPrepare) 693 TEST_F(TiledLayerTest, invalidateFromPrepare)
666 { 694 {
667 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 695 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
668 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 696 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
669 697
670 // The tile size is 100x100, so this invalidates and then paints two tiles. 698 // The tile size is 100x100, so this invalidates and then paints two tiles.
671 layer->setBounds(gfx::Size(100, 200)); 699 layer->setBounds(gfx::Size(100, 200));
700 calcDrawProps(layer);
672 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200); 701 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200);
673 updateAndPush(layer.get(), layerImpl.get()); 702 updateAndPush(layer, layerImpl);
674 703
675 // We should have both tiles on the impl side. 704 // We should have both tiles on the impl side.
676 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 705 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
677 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1)); 706 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1));
678 707
679 layer->fakeLayerUpdater()->clearPrepareCount(); 708 layer->fakeLayerUpdater()->clearPrepareCount();
680 // Invoke update again. As the layer is valid update shouldn't be invoked on 709 // Invoke update again. As the layer is valid update shouldn't be invoked on
681 // the LayerUpdater. 710 // the LayerUpdater.
682 updateAndPush(layer.get(), layerImpl.get()); 711 updateAndPush(layer, layerImpl);
683 EXPECT_EQ(0, layer->fakeLayerUpdater()->prepareCount()); 712 EXPECT_EQ(0, layer->fakeLayerUpdater()->prepareCount());
684 713
685 // setRectToInvalidate triggers invalidateContentRect() being invoked from u pdate. 714 // setRectToInvalidate triggers invalidateContentRect() being invoked from u pdate.
686 layer->fakeLayerUpdater()->setRectToInvalidate(gfx::Rect(25, 25, 50, 50), la yer.get()); 715 layer->fakeLayerUpdater()->setRectToInvalidate(gfx::Rect(25, 25, 50, 50), la yer.get());
687 layer->fakeLayerUpdater()->clearPrepareCount(); 716 layer->fakeLayerUpdater()->clearPrepareCount();
688 layer->invalidateContentRect(gfx::Rect(0, 0, 50, 50)); 717 layer->invalidateContentRect(gfx::Rect(0, 0, 50, 50));
689 updateAndPush(layer.get(), layerImpl.get()); 718 updateAndPush(layer, layerImpl);
690 EXPECT_EQ(1, layer->fakeLayerUpdater()->prepareCount()); 719 EXPECT_EQ(1, layer->fakeLayerUpdater()->prepareCount());
691 layer->fakeLayerUpdater()->clearPrepareCount(); 720 layer->fakeLayerUpdater()->clearPrepareCount();
692 721
693 // The layer should still be invalid as update invoked invalidate. 722 // The layer should still be invalid as update invoked invalidate.
694 updateAndPush(layer.get(), layerImpl.get()); // visible 723 updateAndPush(layer, layerImpl); // visible
695 EXPECT_EQ(1, layer->fakeLayerUpdater()->prepareCount()); 724 EXPECT_EQ(1, layer->fakeLayerUpdater()->prepareCount());
696 } 725 }
697 726
698 TEST_F(TiledLayerTest, verifyUpdateRectWhenContentBoundsAreScaled) 727 TEST_F(TiledLayerTest, verifyUpdateRectWhenContentBoundsAreScaled)
699 { 728 {
700 // The updateRect (that indicates what was actually painted) should be in 729 // The updateRect (that indicates what was actually painted) should be in
701 // layer space, not the content space. 730 // layer space, not the content space.
702 scoped_refptr<FakeTiledLayerWithScaledBounds> layer = make_scoped_refptr(new FakeTiledLayerWithScaledBounds(m_resourceManager.get())); 731 scoped_refptr<FakeTiledLayerWithScaledBounds> layer = make_scoped_refptr(new FakeTiledLayerWithScaledBounds(m_resourceManager.get()));
703 732
704 gfx::Rect layerBounds(0, 0, 300, 200); 733 gfx::Rect layerBounds(0, 0, 300, 200);
(...skipping 26 matching lines...) Expand all
731 layer->invalidateContentRect(partialDamage); 760 layer->invalidateContentRect(partialDamage);
732 layer->setTexturePriorities(m_priorityCalculator); 761 layer->setTexturePriorities(m_priorityCalculator);
733 m_resourceManager->prioritizeTextures(); 762 m_resourceManager->prioritizeTextures();
734 layer->update(*m_queue.get(), 0, m_stats); 763 layer->update(*m_queue.get(), 0, m_stats);
735 EXPECT_FLOAT_RECT_EQ(gfx::RectF(45, 80, 15, 8), layer->updateRect()); 764 EXPECT_FLOAT_RECT_EQ(gfx::RectF(45, 80, 15, 8), layer->updateRect());
736 } 765 }
737 766
738 TEST_F(TiledLayerTest, verifyInvalidationWhenContentsScaleChanges) 767 TEST_F(TiledLayerTest, verifyInvalidationWhenContentsScaleChanges)
739 { 768 {
740 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 769 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
741 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 770 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
742 771
743 // Create a layer with one tile. 772 // Create a layer with one tile.
744 layer->setBounds(gfx::Size(100, 100)); 773 layer->setBounds(gfx::Size(100, 100));
745 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100); 774 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100);
746 775
747 // Invalidate the entire layer. 776 // Invalidate the entire layer.
748 layer->setNeedsDisplay(); 777 layer->setNeedsDisplay();
749 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect ()); 778 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect ());
750 779
751 // Push the tiles to the impl side and check that there is exactly one. 780 // Push the tiles to the impl side and check that there is exactly one.
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 layer->drawProperties().visible_content_rect = contentRect; 912 layer->drawProperties().visible_content_rect = contentRect;
884 layer->invalidateContentRect(contentRect); 913 layer->invalidateContentRect(contentRect);
885 914
886 m_layerTreeHost->setRootLayer(layer); 915 m_layerTreeHost->setRootLayer(layer);
887 m_layerTreeHost->setViewportSize(gfx::Size(300, 200), gfx::Size(300, 200)); 916 m_layerTreeHost->setViewportSize(gfx::Size(300, 200), gfx::Size(300, 200));
888 917
889 // Full update of all 6 tiles. 918 // Full update of all 6 tiles.
890 m_layerTreeHost->updateLayers( 919 m_layerTreeHost->updateLayers(
891 *m_queue.get(), std::numeric_limits<size_t>::max()); 920 *m_queue.get(), std::numeric_limits<size_t>::max());
892 { 921 {
893 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 922 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiled LayerImpl(m_hostImpl->activeTree(), 1));
894 EXPECT_EQ(6, m_queue->fullUploadSize()); 923 EXPECT_EQ(6, m_queue->fullUploadSize());
895 EXPECT_EQ(0, m_queue->partialUploadSize()); 924 EXPECT_EQ(0, m_queue->partialUploadSize());
896 updateTextures(); 925 updateTextures();
897 EXPECT_EQ(6, layer->fakeLayerUpdater()->updateCount()); 926 EXPECT_EQ(6, layer->fakeLayerUpdater()->updateCount());
898 EXPECT_FALSE(m_queue->hasMoreUpdates()); 927 EXPECT_FALSE(m_queue->hasMoreUpdates());
899 layer->fakeLayerUpdater()->clearUpdateCount(); 928 layer->fakeLayerUpdater()->clearUpdateCount();
900 layerPushPropertiesTo(layer.get(), layerImpl.get()); 929 layerPushPropertiesTo(layer.get(), layerImpl.get());
901 } 930 }
902 m_layerTreeHost->commitComplete(); 931 m_layerTreeHost->commitComplete();
903 932
904 // Full update of 3 tiles and partial update of 3 tiles. 933 // Full update of 3 tiles and partial update of 3 tiles.
905 layer->invalidateContentRect(gfx::Rect(0, 0, 300, 150)); 934 layer->invalidateContentRect(gfx::Rect(0, 0, 300, 150));
906 m_layerTreeHost->updateLayers(*m_queue.get(), std::numeric_limits<size_t>::m ax()); 935 m_layerTreeHost->updateLayers(*m_queue.get(), std::numeric_limits<size_t>::m ax());
907 { 936 {
908 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 937 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiled LayerImpl(m_hostImpl->activeTree(), 1));
909 EXPECT_EQ(3, m_queue->fullUploadSize()); 938 EXPECT_EQ(3, m_queue->fullUploadSize());
910 EXPECT_EQ(3, m_queue->partialUploadSize()); 939 EXPECT_EQ(3, m_queue->partialUploadSize());
911 updateTextures(); 940 updateTextures();
912 EXPECT_EQ(6, layer->fakeLayerUpdater()->updateCount()); 941 EXPECT_EQ(6, layer->fakeLayerUpdater()->updateCount());
913 EXPECT_FALSE(m_queue->hasMoreUpdates()); 942 EXPECT_FALSE(m_queue->hasMoreUpdates());
914 layer->fakeLayerUpdater()->clearUpdateCount(); 943 layer->fakeLayerUpdater()->clearUpdateCount();
915 layerPushPropertiesTo(layer.get(), layerImpl.get()); 944 layerPushPropertiesTo(layer.get(), layerImpl.get());
916 } 945 }
917 m_layerTreeHost->commitComplete(); 946 m_layerTreeHost->commitComplete();
918 947
919 // Partial update of 6 tiles. 948 // Partial update of 6 tiles.
920 layer->invalidateContentRect(gfx::Rect(50, 50, 200, 100)); 949 layer->invalidateContentRect(gfx::Rect(50, 50, 200, 100));
921 { 950 {
922 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 951 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiled LayerImpl(m_hostImpl->activeTree(), 1));
923 m_layerTreeHost->updateLayers(*m_queue.get(), std::numeric_limits<size_t >::max()); 952 m_layerTreeHost->updateLayers(*m_queue.get(), std::numeric_limits<size_t >::max());
924 EXPECT_EQ(2, m_queue->fullUploadSize()); 953 EXPECT_EQ(2, m_queue->fullUploadSize());
925 EXPECT_EQ(4, m_queue->partialUploadSize()); 954 EXPECT_EQ(4, m_queue->partialUploadSize());
926 updateTextures(); 955 updateTextures();
927 EXPECT_EQ(6, layer->fakeLayerUpdater()->updateCount()); 956 EXPECT_EQ(6, layer->fakeLayerUpdater()->updateCount());
928 EXPECT_FALSE(m_queue->hasMoreUpdates()); 957 EXPECT_FALSE(m_queue->hasMoreUpdates());
929 layer->fakeLayerUpdater()->clearUpdateCount(); 958 layer->fakeLayerUpdater()->clearUpdateCount();
930 layerPushPropertiesTo(layer.get(), layerImpl.get()); 959 layerPushPropertiesTo(layer.get(), layerImpl.get());
931 } 960 }
932 m_layerTreeHost->commitComplete(); 961 m_layerTreeHost->commitComplete();
933 962
934 // Checkerboard all tiles. 963 // Checkerboard all tiles.
935 layer->invalidateContentRect(gfx::Rect(0, 0, 300, 200)); 964 layer->invalidateContentRect(gfx::Rect(0, 0, 300, 200));
936 { 965 {
937 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 966 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiled LayerImpl(m_hostImpl->activeTree(), 1));
938 layerPushPropertiesTo(layer.get(), layerImpl.get()); 967 layerPushPropertiesTo(layer.get(), layerImpl.get());
939 } 968 }
940 m_layerTreeHost->commitComplete(); 969 m_layerTreeHost->commitComplete();
941 970
942 // Partial update of 6 checkerboard tiles. 971 // Partial update of 6 checkerboard tiles.
943 layer->invalidateContentRect(gfx::Rect(50, 50, 200, 100)); 972 layer->invalidateContentRect(gfx::Rect(50, 50, 200, 100));
944 { 973 {
945 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 974 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiled LayerImpl(m_hostImpl->activeTree(), 1));
946 m_layerTreeHost->updateLayers(*m_queue.get(), std::numeric_limits<size_t >::max()); 975 m_layerTreeHost->updateLayers(*m_queue.get(), std::numeric_limits<size_t >::max());
947 EXPECT_EQ(6, m_queue->fullUploadSize()); 976 EXPECT_EQ(6, m_queue->fullUploadSize());
948 EXPECT_EQ(0, m_queue->partialUploadSize()); 977 EXPECT_EQ(0, m_queue->partialUploadSize());
949 updateTextures(); 978 updateTextures();
950 EXPECT_EQ(6, layer->fakeLayerUpdater()->updateCount()); 979 EXPECT_EQ(6, layer->fakeLayerUpdater()->updateCount());
951 EXPECT_FALSE(m_queue->hasMoreUpdates()); 980 EXPECT_FALSE(m_queue->hasMoreUpdates());
952 layer->fakeLayerUpdater()->clearUpdateCount(); 981 layer->fakeLayerUpdater()->clearUpdateCount();
953 layerPushPropertiesTo(layer.get(), layerImpl.get()); 982 layerPushPropertiesTo(layer.get(), layerImpl.get());
954 } 983 }
955 m_layerTreeHost->commitComplete(); 984 m_layerTreeHost->commitComplete();
956 985
957 // Partial update of 4 tiles. 986 // Partial update of 4 tiles.
958 layer->invalidateContentRect(gfx::Rect(50, 50, 100, 100)); 987 layer->invalidateContentRect(gfx::Rect(50, 50, 100, 100));
959 { 988 {
960 ScopedFakeTiledLayerImpl layerImpl(m_hostImpl->activeTree(), 1); 989 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiled LayerImpl(m_hostImpl->activeTree(), 1));
961 m_layerTreeHost->updateLayers(*m_queue.get(), std::numeric_limits<size_t >::max()); 990 m_layerTreeHost->updateLayers(*m_queue.get(), std::numeric_limits<size_t >::max());
962 EXPECT_EQ(0, m_queue->fullUploadSize()); 991 EXPECT_EQ(0, m_queue->fullUploadSize());
963 EXPECT_EQ(4, m_queue->partialUploadSize()); 992 EXPECT_EQ(4, m_queue->partialUploadSize());
964 updateTextures(); 993 updateTextures();
965 EXPECT_EQ(4, layer->fakeLayerUpdater()->updateCount()); 994 EXPECT_EQ(4, layer->fakeLayerUpdater()->updateCount());
966 EXPECT_FALSE(m_queue->hasMoreUpdates()); 995 EXPECT_FALSE(m_queue->hasMoreUpdates());
967 layer->fakeLayerUpdater()->clearUpdateCount(); 996 layer->fakeLayerUpdater()->clearUpdateCount();
968 layerPushPropertiesTo(layer.get(), layerImpl.get()); 997 layerPushPropertiesTo(layer.get(), layerImpl.get());
969 } 998 }
970 m_layerTreeHost->commitComplete(); 999 m_layerTreeHost->commitComplete();
(...skipping 15 matching lines...) Expand all
986 layer->setTexturePriorities(m_priorityCalculator); 1015 layer->setTexturePriorities(m_priorityCalculator);
987 m_resourceManager->prioritizeTextures(); 1016 m_resourceManager->prioritizeTextures();
988 layer->update(*m_queue.get(), 0, m_stats); 1017 layer->update(*m_queue.get(), 0, m_stats);
989 EXPECT_EQ(2, layer->fakeLayerUpdater()->updateCount()); 1018 EXPECT_EQ(2, layer->fakeLayerUpdater()->updateCount());
990 } 1019 }
991 1020
992 TEST_F(TiledLayerTest, tilesPaintedWithOcclusion) 1021 TEST_F(TiledLayerTest, tilesPaintedWithOcclusion)
993 { 1022 {
994 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1023 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
995 TestOcclusionTracker occluded; 1024 TestOcclusionTracker occluded;
1025 m_occlusion = &occluded;
996 1026
997 // The tile size is 100x100. 1027 // The tile size is 100x100.
998 1028
999 layer->setBounds(gfx::Size(600, 600)); 1029 layer->setBounds(gfx::Size(600, 600));
1030 calcDrawProps(layer);
1000 1031
1001 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1032 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1002 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds()); 1033 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds());
1003 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1034 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1004 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1035 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1005 1036
1006 layer->setTexturePriorities(m_priorityCalculator); 1037 layer->setTexturePriorities(m_priorityCalculator);
1007 m_resourceManager->prioritizeTextures(); 1038 m_resourceManager->prioritizeTextures();
1008 layer->update(*m_queue.get(), &occluded, m_stats); 1039 layer->update(*m_queue.get(), &occluded, m_stats);
1009 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount()); 1040 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount());
(...skipping 26 matching lines...) Expand all
1036 1067
1037 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1068 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1038 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000 + 340000 + 360000, 1); 1069 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000 + 340000 + 360000, 1);
1039 EXPECT_EQ(3 + 2, occluded.overdrawMetrics().tilesCulledForUpload()); 1070 EXPECT_EQ(3 + 2, occluded.overdrawMetrics().tilesCulledForUpload());
1040 } 1071 }
1041 1072
1042 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndVisiblityConstraints) 1073 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndVisiblityConstraints)
1043 { 1074 {
1044 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1075 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1045 TestOcclusionTracker occluded; 1076 TestOcclusionTracker occluded;
1077 m_occlusion = &occluded;
1046 1078
1047 // The tile size is 100x100. 1079 // The tile size is 100x100.
1048 1080
1049 layer->setBounds(gfx::Size(600, 600)); 1081 layer->setBounds(gfx::Size(600, 600));
1082 calcDrawProps(layer);
1050 1083
1051 // The partially occluded tiles (by the 150 occlusion height) are visible be yond the occlusion, so not culled. 1084 // The partially occluded tiles (by the 150 occlusion height) are visible be yond the occlusion, so not culled.
1052 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150)); 1085 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150));
1053 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 360); 1086 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 360);
1054 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 360); 1087 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 360);
1055 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1088 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1056 1089
1057 layer->setTexturePriorities(m_priorityCalculator); 1090 layer->setTexturePriorities(m_priorityCalculator);
1058 m_resourceManager->prioritizeTextures(); 1091 m_resourceManager->prioritizeTextures();
1059 layer->update(*m_queue.get(), &occluded, m_stats); 1092 layer->update(*m_queue.get(), &occluded, m_stats);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1127 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1095 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000 + 180000 + 180000, 1); 1128 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000 + 180000 + 180000, 1);
1096 EXPECT_EQ(3 + 6 + 6, occluded.overdrawMetrics().tilesCulledForUpload()); 1129 EXPECT_EQ(3 + 6 + 6, occluded.overdrawMetrics().tilesCulledForUpload());
1097 1130
1098 } 1131 }
1099 1132
1100 TEST_F(TiledLayerTest, tilesNotPaintedWithoutInvalidation) 1133 TEST_F(TiledLayerTest, tilesNotPaintedWithoutInvalidation)
1101 { 1134 {
1102 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1135 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1103 TestOcclusionTracker occluded; 1136 TestOcclusionTracker occluded;
1137 m_occlusion = &occluded;
1104 1138
1105 // The tile size is 100x100. 1139 // The tile size is 100x100.
1106 1140
1107 layer->setBounds(gfx::Size(600, 600)); 1141 layer->setBounds(gfx::Size(600, 600));
1142 calcDrawProps(layer);
1108 1143
1109 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1144 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1110 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 600); 1145 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 600);
1111 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 600); 1146 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 600);
1112 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1147 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1113 layer->setTexturePriorities(m_priorityCalculator); 1148 layer->setTexturePriorities(m_priorityCalculator);
1114 m_resourceManager->prioritizeTextures(); 1149 m_resourceManager->prioritizeTextures();
1115 layer->update(*m_queue.get(), &occluded, m_stats); 1150 layer->update(*m_queue.get(), &occluded, m_stats);
1116 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount()); 1151 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount());
1117 { 1152 {
(...skipping 14 matching lines...) Expand all
1132 1167
1133 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1168 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1134 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1); 1169 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1);
1135 EXPECT_EQ(6, occluded.overdrawMetrics().tilesCulledForUpload()); 1170 EXPECT_EQ(6, occluded.overdrawMetrics().tilesCulledForUpload());
1136 } 1171 }
1137 1172
1138 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndTransforms) 1173 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndTransforms)
1139 { 1174 {
1140 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1175 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1141 TestOcclusionTracker occluded; 1176 TestOcclusionTracker occluded;
1177 m_occlusion = &occluded;
1142 1178
1143 // The tile size is 100x100. 1179 // The tile size is 100x100.
1144 1180
1145 // This makes sure the painting works when the occluded region (in screen sp ace) 1181 // This makes sure the painting works when the occluded region (in screen sp ace)
1146 // is transformed differently than the layer. 1182 // is transformed differently than the layer.
1147 layer->setBounds(gfx::Size(600, 600)); 1183 layer->setBounds(gfx::Size(600, 600));
1184 calcDrawProps(layer);
1148 gfx::Transform screenTransform; 1185 gfx::Transform screenTransform;
1149 screenTransform.Scale(0.5, 0.5); 1186 screenTransform.Scale(0.5, 0.5);
1150 layer->drawProperties().screen_space_transform = screenTransform; 1187 layer->drawProperties().screen_space_transform = screenTransform;
1151 layer->drawProperties().target_space_transform = screenTransform; 1188 layer->drawProperties().target_space_transform = screenTransform;
1152 1189
1153 occluded.setOcclusion(gfx::Rect(100, 100, 150, 50)); 1190 occluded.setOcclusion(gfx::Rect(100, 100, 150, 50));
1154 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds()); 1191 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds());
1155 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1192 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1156 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1193 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1157 layer->setTexturePriorities(m_priorityCalculator); 1194 layer->setTexturePriorities(m_priorityCalculator);
1158 m_resourceManager->prioritizeTextures(); 1195 m_resourceManager->prioritizeTextures();
1159 layer->update(*m_queue.get(), &occluded, m_stats); 1196 layer->update(*m_queue.get(), &occluded, m_stats);
1160 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount()); 1197 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount());
1161 1198
1162 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1199 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1163 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1); 1200 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1);
1164 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); 1201 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload());
1165 } 1202 }
1166 1203
1167 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling) 1204 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling)
1168 { 1205 {
1169 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1206 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1170 TestOcclusionTracker occluded; 1207 TestOcclusionTracker occluded;
1208 m_occlusion = &occluded;
1171 1209
1172 // The tile size is 100x100. 1210 // The tile size is 100x100.
1173 1211
1174 // This makes sure the painting works when the content space is scaled to 1212 // This makes sure the painting works when the content space is scaled to
1175 // a different layer space. In this case tiles are scaled to be 200x200 1213 // a different layer space. In this case tiles are scaled to be 200x200
1176 // pixels, which means none should be occluded. 1214 // pixels, which means none should be occluded.
1177 layer->updateContentsScale(0.5); 1215 layer->setBounds(gfx::Size(600, 600));
1216 layer->setRasterScale(0.5);
1217 calcDrawProps(layer);
1178 EXPECT_FLOAT_EQ(layer->contentsScaleX(), layer->contentsScaleY()); 1218 EXPECT_FLOAT_EQ(layer->contentsScaleX(), layer->contentsScaleY());
1179 layer->setBounds(gfx::Size(600, 600));
1180 gfx::Transform drawTransform; 1219 gfx::Transform drawTransform;
1181 double invScaleFactor = 1 / layer->contentsScaleX(); 1220 double invScaleFactor = 1 / layer->contentsScaleX();
1182 drawTransform.Scale(invScaleFactor, invScaleFactor); 1221 drawTransform.Scale(invScaleFactor, invScaleFactor);
1183 layer->drawProperties().target_space_transform = drawTransform; 1222 layer->drawProperties().target_space_transform = drawTransform;
1184 layer->drawProperties().screen_space_transform = drawTransform; 1223 layer->drawProperties().screen_space_transform = drawTransform;
1185 1224
1186 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1225 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1187 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->bounds()); 1226 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->bounds());
1188 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1227 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1189 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1228 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
1430 updateTextures(); 1469 updateTextures();
1431 EXPECT_EQ(6, root->fakeLayerUpdater()->updateCount()); 1470 EXPECT_EQ(6, root->fakeLayerUpdater()->updateCount());
1432 EXPECT_EQ(3, child->fakeLayerUpdater()->updateCount()); 1471 EXPECT_EQ(3, child->fakeLayerUpdater()->updateCount());
1433 EXPECT_EQ(3, child2->fakeLayerUpdater()->updateCount()); 1472 EXPECT_EQ(3, child2->fakeLayerUpdater()->updateCount());
1434 EXPECT_FALSE(m_queue->hasMoreUpdates()); 1473 EXPECT_FALSE(m_queue->hasMoreUpdates());
1435 1474
1436 root->fakeLayerUpdater()->clearUpdateCount(); 1475 root->fakeLayerUpdater()->clearUpdateCount();
1437 child->fakeLayerUpdater()->clearUpdateCount(); 1476 child->fakeLayerUpdater()->clearUpdateCount();
1438 child2->fakeLayerUpdater()->clearUpdateCount(); 1477 child2->fakeLayerUpdater()->clearUpdateCount();
1439 1478
1440 ScopedFakeTiledLayerImpl rootImpl(m_hostImpl->activeTree(), root->id()); 1479 scoped_ptr<FakeTiledLayerImpl> rootImpl = make_scoped_ptr(new FakeTiledL ayerImpl(m_hostImpl->activeTree(), root->id()));
1441 ScopedFakeTiledLayerImpl childImpl(m_hostImpl->activeTree(), child->id() ); 1480 scoped_ptr<FakeTiledLayerImpl> childImpl = make_scoped_ptr(new FakeTiled LayerImpl(m_hostImpl->activeTree(), child->id()));
1442 ScopedFakeTiledLayerImpl child2Impl(m_hostImpl->activeTree(), child2->id ()); 1481 scoped_ptr<FakeTiledLayerImpl> child2Impl = make_scoped_ptr(new FakeTile dLayerImpl(m_hostImpl->activeTree(), child2->id()));
1443 layerPushPropertiesTo(root.get(), rootImpl.get()); 1482 layerPushPropertiesTo(root.get(), rootImpl.get());
1444 layerPushPropertiesTo(child.get(), childImpl.get()); 1483 layerPushPropertiesTo(child.get(), childImpl.get());
1445 layerPushPropertiesTo(child2.get(), child2Impl.get()); 1484 layerPushPropertiesTo(child2.get(), child2Impl.get());
1446 1485
1447 for (unsigned i = 0; i < 3; ++i) { 1486 for (unsigned i = 0; i < 3; ++i) {
1448 for (unsigned j = 0; j < 2; ++j) 1487 for (unsigned j = 0; j < 2; ++j)
1449 EXPECT_TRUE(rootImpl->hasResourceIdForTileAt(i, j)); 1488 EXPECT_TRUE(rootImpl->hasResourceIdForTileAt(i, j));
1450 EXPECT_TRUE(childImpl->hasResourceIdForTileAt(i, 0)); 1489 EXPECT_TRUE(childImpl->hasResourceIdForTileAt(i, 0));
1451 EXPECT_TRUE(child2Impl->hasResourceIdForTileAt(i, 0)); 1490 EXPECT_TRUE(child2Impl->hasResourceIdForTileAt(i, 0));
1452 } 1491 }
(...skipping 12 matching lines...) Expand all
1465 updateTextures(); 1504 updateTextures();
1466 EXPECT_EQ(6, root->fakeLayerUpdater()->updateCount()); 1505 EXPECT_EQ(6, root->fakeLayerUpdater()->updateCount());
1467 EXPECT_EQ(0, child->fakeLayerUpdater()->updateCount()); 1506 EXPECT_EQ(0, child->fakeLayerUpdater()->updateCount());
1468 EXPECT_EQ(0, child2->fakeLayerUpdater()->updateCount()); 1507 EXPECT_EQ(0, child2->fakeLayerUpdater()->updateCount());
1469 EXPECT_FALSE(m_queue->hasMoreUpdates()); 1508 EXPECT_FALSE(m_queue->hasMoreUpdates());
1470 1509
1471 root->fakeLayerUpdater()->clearUpdateCount(); 1510 root->fakeLayerUpdater()->clearUpdateCount();
1472 child->fakeLayerUpdater()->clearUpdateCount(); 1511 child->fakeLayerUpdater()->clearUpdateCount();
1473 child2->fakeLayerUpdater()->clearUpdateCount(); 1512 child2->fakeLayerUpdater()->clearUpdateCount();
1474 1513
1475 ScopedFakeTiledLayerImpl rootImpl(m_hostImpl->activeTree(), root->id()); 1514 scoped_ptr<FakeTiledLayerImpl> rootImpl = make_scoped_ptr(new FakeTiledL ayerImpl(m_hostImpl->activeTree(), root->id()));
1476 ScopedFakeTiledLayerImpl childImpl(m_hostImpl->activeTree(), child->id() ); 1515 scoped_ptr<FakeTiledLayerImpl> childImpl = make_scoped_ptr(new FakeTiled LayerImpl(m_hostImpl->activeTree(), child->id()));
1477 ScopedFakeTiledLayerImpl child2Impl(m_hostImpl->activeTree(), child2->id ()); 1516 scoped_ptr<FakeTiledLayerImpl> child2Impl = make_scoped_ptr(new FakeTile dLayerImpl(m_hostImpl->activeTree(), child2->id()));
1478 layerPushPropertiesTo(root.get(), rootImpl.get()); 1517 layerPushPropertiesTo(root.get(), rootImpl.get());
1479 layerPushPropertiesTo(child.get(), childImpl.get()); 1518 layerPushPropertiesTo(child.get(), childImpl.get());
1480 layerPushPropertiesTo(child2.get(), child2Impl.get()); 1519 layerPushPropertiesTo(child2.get(), child2Impl.get());
1481 1520
1482 for (unsigned i = 0; i < 3; ++i) { 1521 for (unsigned i = 0; i < 3; ++i) {
1483 for (unsigned j = 0; j < 2; ++j) 1522 for (unsigned j = 0; j < 2; ++j)
1484 EXPECT_TRUE(rootImpl->hasResourceIdForTileAt(i, j)); 1523 EXPECT_TRUE(rootImpl->hasResourceIdForTileAt(i, j));
1485 EXPECT_FALSE(childImpl->hasResourceIdForTileAt(i, 0)); 1524 EXPECT_FALSE(childImpl->hasResourceIdForTileAt(i, 0));
1486 EXPECT_FALSE(child2Impl->hasResourceIdForTileAt(i, 0)); 1525 EXPECT_FALSE(child2Impl->hasResourceIdForTileAt(i, 0));
1487 } 1526 }
(...skipping 13 matching lines...) Expand all
1501 updateTextures(); 1540 updateTextures();
1502 EXPECT_EQ(0, root->fakeLayerUpdater()->updateCount()); 1541 EXPECT_EQ(0, root->fakeLayerUpdater()->updateCount());
1503 EXPECT_EQ(0, child->fakeLayerUpdater()->updateCount()); 1542 EXPECT_EQ(0, child->fakeLayerUpdater()->updateCount());
1504 EXPECT_EQ(0, child2->fakeLayerUpdater()->updateCount()); 1543 EXPECT_EQ(0, child2->fakeLayerUpdater()->updateCount());
1505 EXPECT_FALSE(m_queue->hasMoreUpdates()); 1544 EXPECT_FALSE(m_queue->hasMoreUpdates());
1506 1545
1507 root->fakeLayerUpdater()->clearUpdateCount(); 1546 root->fakeLayerUpdater()->clearUpdateCount();
1508 child->fakeLayerUpdater()->clearUpdateCount(); 1547 child->fakeLayerUpdater()->clearUpdateCount();
1509 child2->fakeLayerUpdater()->clearUpdateCount(); 1548 child2->fakeLayerUpdater()->clearUpdateCount();
1510 1549
1511 ScopedFakeTiledLayerImpl rootImpl(m_hostImpl->activeTree(), root->id()); 1550 scoped_ptr<FakeTiledLayerImpl> rootImpl = make_scoped_ptr(new FakeTiledL ayerImpl(m_hostImpl->activeTree(), root->id()));
1512 ScopedFakeTiledLayerImpl childImpl(m_hostImpl->activeTree(), child->id() ); 1551 scoped_ptr<FakeTiledLayerImpl> childImpl = make_scoped_ptr(new FakeTiled LayerImpl(m_hostImpl->activeTree(), child->id()));
1513 ScopedFakeTiledLayerImpl child2Impl(m_hostImpl->activeTree(), child2->id ()); 1552 scoped_ptr<FakeTiledLayerImpl> child2Impl = make_scoped_ptr(new FakeTile dLayerImpl(m_hostImpl->activeTree(), child2->id()));
1514 layerPushPropertiesTo(root.get(), rootImpl.get()); 1553 layerPushPropertiesTo(root.get(), rootImpl.get());
1515 layerPushPropertiesTo(child.get(), childImpl.get()); 1554 layerPushPropertiesTo(child.get(), childImpl.get());
1516 layerPushPropertiesTo(child2.get(), child2Impl.get()); 1555 layerPushPropertiesTo(child2.get(), child2Impl.get());
1517 1556
1518 for (unsigned i = 0; i < 3; ++i) { 1557 for (unsigned i = 0; i < 3; ++i) {
1519 for (unsigned j = 0; j < 2; ++j) 1558 for (unsigned j = 0; j < 2; ++j)
1520 EXPECT_FALSE(rootImpl->hasResourceIdForTileAt(i, j)); 1559 EXPECT_FALSE(rootImpl->hasResourceIdForTileAt(i, j));
1521 EXPECT_FALSE(childImpl->hasResourceIdForTileAt(i, 0)); 1560 EXPECT_FALSE(childImpl->hasResourceIdForTileAt(i, 0));
1522 EXPECT_FALSE(child2Impl->hasResourceIdForTileAt(i, 0)); 1561 EXPECT_FALSE(child2Impl->hasResourceIdForTileAt(i, 0));
1523 } 1562 }
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1624 1663
1625 // Invalidate the entire layer in layer space. When painting, the rect given to webkit should match the layer's bounds. 1664 // Invalidate the entire layer in layer space. When painting, the rect given to webkit should match the layer's bounds.
1626 layer->setNeedsDisplayRect(layerRect); 1665 layer->setNeedsDisplayRect(layerRect);
1627 layer->update(*m_queue.get(), 0, m_stats); 1666 layer->update(*m_queue.get(), 0, m_stats);
1628 1667
1629 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); 1668 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect());
1630 } 1669 }
1631 1670
1632 } // namespace 1671 } // namespace
1633 } // namespace cc 1672 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/occlusion_tracker_test_common.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698