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

Side by Side Diff: cc/resources/tile_manager_unittest.cc

Issue 366113002: cc: Do not cleanup tiles with raster tasks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits updated. Created 6 years, 4 months 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
« no previous file with comments | « cc/resources/tile_manager_perftest.cc ('k') | cc/test/fake_picture_layer_tiling_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/resources/eviction_tile_priority_queue.h" 5 #include "cc/resources/eviction_tile_priority_queue.h"
6 #include "cc/resources/raster_tile_priority_queue.h" 6 #include "cc/resources/raster_tile_priority_queue.h"
7 #include "cc/resources/tile.h" 7 #include "cc/resources/tile.h"
8 #include "cc/resources/tile_priority.h" 8 #include "cc/resources/tile_priority.h"
9 #include "cc/test/fake_impl_proxy.h" 9 #include "cc/test/fake_impl_proxy.h"
10 #include "cc/test/fake_layer_tree_host_impl.h" 10 #include "cc/test/fake_layer_tree_host_impl.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 return tiles; 117 return tiles;
118 } 118 }
119 119
120 TileVector CreateTiles(int count, 120 TileVector CreateTiles(int count,
121 TilePriority active_priority, 121 TilePriority active_priority,
122 TilePriority pending_priority) { 122 TilePriority pending_priority) {
123 return CreateTilesWithSize( 123 return CreateTilesWithSize(
124 count, active_priority, pending_priority, settings_.default_tile_size); 124 count, active_priority, pending_priority, settings_.default_tile_size);
125 } 125 }
126 126
127 void ReleaseTiles(TileVector* tiles) {
128 for (TileVector::iterator it = tiles->begin(); it != tiles->end(); it++) {
129 Tile* tile = *it;
130 tile->SetPriority(ACTIVE_TREE, TilePriority());
131 tile->SetPriority(PENDING_TREE, TilePriority());
132 }
133 }
134
127 FakeTileManager* tile_manager() { return tile_manager_.get(); } 135 FakeTileManager* tile_manager() { return tile_manager_.get(); }
128 136
129 int AssignedMemoryCount(const TileVector& tiles) { 137 int AssignedMemoryCount(const TileVector& tiles) {
130 int has_memory_count = 0; 138 int has_memory_count = 0;
131 for (TileVector::const_iterator it = tiles.begin(); it != tiles.end(); 139 for (TileVector::const_iterator it = tiles.begin(); it != tiles.end();
132 ++it) { 140 ++it) {
133 if (tile_manager_->HasBeenAssignedMemory(*it)) 141 if (tile_manager_->HasBeenAssignedMemory(*it))
134 ++has_memory_count; 142 ++has_memory_count;
135 } 143 }
136 return has_memory_count; 144 return has_memory_count;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 TileVector active_pending_soon = 180 TileVector active_pending_soon =
173 CreateTiles(3, TilePriorityForSoonBin(), TilePriorityForSoonBin()); 181 CreateTiles(3, TilePriorityForSoonBin(), TilePriorityForSoonBin());
174 TileVector never_bin = CreateTiles(1, TilePriority(), TilePriority()); 182 TileVector never_bin = CreateTiles(1, TilePriority(), TilePriority());
175 183
176 tile_manager()->AssignMemoryToTiles(global_state_); 184 tile_manager()->AssignMemoryToTiles(global_state_);
177 185
178 EXPECT_EQ(3, AssignedMemoryCount(active_now)); 186 EXPECT_EQ(3, AssignedMemoryCount(active_now));
179 EXPECT_EQ(3, AssignedMemoryCount(pending_now)); 187 EXPECT_EQ(3, AssignedMemoryCount(pending_now));
180 EXPECT_EQ(3, AssignedMemoryCount(active_pending_soon)); 188 EXPECT_EQ(3, AssignedMemoryCount(active_pending_soon));
181 EXPECT_EQ(0, AssignedMemoryCount(never_bin)); 189 EXPECT_EQ(0, AssignedMemoryCount(never_bin));
190
191 ReleaseTiles(&active_now);
192 ReleaseTiles(&pending_now);
193 ReleaseTiles(&active_pending_soon);
194 ReleaseTiles(&never_bin);
182 } 195 }
183 196
184 TEST_P(TileManagerTest, EnoughMemoryAllowPrepaintOnly) { 197 TEST_P(TileManagerTest, EnoughMemoryAllowPrepaintOnly) {
185 // A few tiles of each type of priority, with enough memory for all tiles, 198 // A few tiles of each type of priority, with enough memory for all tiles,
186 // with the exception of never bin. 199 // with the exception of never bin.
187 200
188 Initialize(10, ALLOW_PREPAINT_ONLY, SMOOTHNESS_TAKES_PRIORITY); 201 Initialize(10, ALLOW_PREPAINT_ONLY, SMOOTHNESS_TAKES_PRIORITY);
189 TileVector active_now = 202 TileVector active_now =
190 CreateTiles(3, TilePriorityForNowBin(), TilePriority()); 203 CreateTiles(3, TilePriorityForNowBin(), TilePriority());
191 TileVector pending_now = 204 TileVector pending_now =
192 CreateTiles(3, TilePriority(), TilePriorityForNowBin()); 205 CreateTiles(3, TilePriority(), TilePriorityForNowBin());
193 TileVector active_pending_soon = 206 TileVector active_pending_soon =
194 CreateTiles(3, TilePriorityForSoonBin(), TilePriorityForSoonBin()); 207 CreateTiles(3, TilePriorityForSoonBin(), TilePriorityForSoonBin());
195 TileVector never_bin = CreateTiles(1, TilePriority(), TilePriority()); 208 TileVector never_bin = CreateTiles(1, TilePriority(), TilePriority());
196 209
197 tile_manager()->AssignMemoryToTiles(global_state_); 210 tile_manager()->AssignMemoryToTiles(global_state_);
198 211
199 EXPECT_EQ(3, AssignedMemoryCount(active_now)); 212 EXPECT_EQ(3, AssignedMemoryCount(active_now));
200 EXPECT_EQ(3, AssignedMemoryCount(pending_now)); 213 EXPECT_EQ(3, AssignedMemoryCount(pending_now));
201 EXPECT_EQ(3, AssignedMemoryCount(active_pending_soon)); 214 EXPECT_EQ(3, AssignedMemoryCount(active_pending_soon));
202 EXPECT_EQ(0, AssignedMemoryCount(never_bin)); 215 EXPECT_EQ(0, AssignedMemoryCount(never_bin));
216
217 ReleaseTiles(&active_now);
218 ReleaseTiles(&pending_now);
219 ReleaseTiles(&active_pending_soon);
220 ReleaseTiles(&never_bin);
203 } 221 }
204 222
205 TEST_P(TileManagerTest, EnoughMemoryPendingLowResAllowAbsoluteMinimum) { 223 TEST_P(TileManagerTest, EnoughMemoryPendingLowResAllowAbsoluteMinimum) {
206 // A few low-res tiles required for activation, with enough memory for all 224 // A few low-res tiles required for activation, with enough memory for all
207 // tiles. 225 // tiles.
208 226
209 Initialize(5, ALLOW_ABSOLUTE_MINIMUM, SAME_PRIORITY_FOR_BOTH_TREES); 227 Initialize(5, ALLOW_ABSOLUTE_MINIMUM, SAME_PRIORITY_FOR_BOTH_TREES);
210 TileVector pending_low_res = 228 TileVector pending_low_res =
211 CreateTiles(5, TilePriority(), TilePriorityLowRes()); 229 CreateTiles(5, TilePriority(), TilePriorityLowRes());
212 230
213 tile_manager()->AssignMemoryToTiles(global_state_); 231 tile_manager()->AssignMemoryToTiles(global_state_);
214 232
215 EXPECT_EQ(5, AssignedMemoryCount(pending_low_res)); 233 EXPECT_EQ(5, AssignedMemoryCount(pending_low_res));
234 ReleaseTiles(&pending_low_res);
216 } 235 }
217 236
218 TEST_P(TileManagerTest, EnoughMemoryAllowAbsoluteMinimum) { 237 TEST_P(TileManagerTest, EnoughMemoryAllowAbsoluteMinimum) {
219 // A few tiles of each type of priority, with enough memory for all tiles, 238 // A few tiles of each type of priority, with enough memory for all tiles,
220 // with the exception of never and soon bins. 239 // with the exception of never and soon bins.
221 240
222 Initialize(10, ALLOW_ABSOLUTE_MINIMUM, SMOOTHNESS_TAKES_PRIORITY); 241 Initialize(10, ALLOW_ABSOLUTE_MINIMUM, SMOOTHNESS_TAKES_PRIORITY);
223 TileVector active_now = 242 TileVector active_now =
224 CreateTiles(3, TilePriorityForNowBin(), TilePriority()); 243 CreateTiles(3, TilePriorityForNowBin(), TilePriority());
225 TileVector pending_now = 244 TileVector pending_now =
226 CreateTiles(3, TilePriority(), TilePriorityForNowBin()); 245 CreateTiles(3, TilePriority(), TilePriorityForNowBin());
227 TileVector active_pending_soon = 246 TileVector active_pending_soon =
228 CreateTiles(3, TilePriorityForSoonBin(), TilePriorityForSoonBin()); 247 CreateTiles(3, TilePriorityForSoonBin(), TilePriorityForSoonBin());
229 TileVector never_bin = CreateTiles(1, TilePriority(), TilePriority()); 248 TileVector never_bin = CreateTiles(1, TilePriority(), TilePriority());
230 249
231 tile_manager()->AssignMemoryToTiles(global_state_); 250 tile_manager()->AssignMemoryToTiles(global_state_);
232 251
233 EXPECT_EQ(3, AssignedMemoryCount(active_now)); 252 EXPECT_EQ(3, AssignedMemoryCount(active_now));
234 EXPECT_EQ(3, AssignedMemoryCount(pending_now)); 253 EXPECT_EQ(3, AssignedMemoryCount(pending_now));
235 EXPECT_EQ(0, AssignedMemoryCount(active_pending_soon)); 254 EXPECT_EQ(0, AssignedMemoryCount(active_pending_soon));
236 EXPECT_EQ(0, AssignedMemoryCount(never_bin)); 255 EXPECT_EQ(0, AssignedMemoryCount(never_bin));
256
257 ReleaseTiles(&active_now);
258 ReleaseTiles(&pending_now);
259 ReleaseTiles(&active_pending_soon);
260 ReleaseTiles(&never_bin);
237 } 261 }
238 262
239 TEST_P(TileManagerTest, EnoughMemoryAllowNothing) { 263 TEST_P(TileManagerTest, EnoughMemoryAllowNothing) {
240 // A few tiles of each type of priority, with enough memory for all tiles, 264 // A few tiles of each type of priority, with enough memory for all tiles,
241 // but allow nothing should not assign any memory. 265 // but allow nothing should not assign any memory.
242 266
243 Initialize(10, ALLOW_NOTHING, SMOOTHNESS_TAKES_PRIORITY); 267 Initialize(10, ALLOW_NOTHING, SMOOTHNESS_TAKES_PRIORITY);
244 TileVector active_now = 268 TileVector active_now =
245 CreateTiles(3, TilePriorityForNowBin(), TilePriority()); 269 CreateTiles(3, TilePriorityForNowBin(), TilePriority());
246 TileVector pending_now = 270 TileVector pending_now =
247 CreateTiles(3, TilePriority(), TilePriorityForNowBin()); 271 CreateTiles(3, TilePriority(), TilePriorityForNowBin());
248 TileVector active_pending_soon = 272 TileVector active_pending_soon =
249 CreateTiles(3, TilePriorityForSoonBin(), TilePriorityForSoonBin()); 273 CreateTiles(3, TilePriorityForSoonBin(), TilePriorityForSoonBin());
250 TileVector never_bin = CreateTiles(1, TilePriority(), TilePriority()); 274 TileVector never_bin = CreateTiles(1, TilePriority(), TilePriority());
251 275
252 tile_manager()->AssignMemoryToTiles(global_state_); 276 tile_manager()->AssignMemoryToTiles(global_state_);
253 277
254 EXPECT_EQ(0, AssignedMemoryCount(active_now)); 278 EXPECT_EQ(0, AssignedMemoryCount(active_now));
255 EXPECT_EQ(0, AssignedMemoryCount(pending_now)); 279 EXPECT_EQ(0, AssignedMemoryCount(pending_now));
256 EXPECT_EQ(0, AssignedMemoryCount(active_pending_soon)); 280 EXPECT_EQ(0, AssignedMemoryCount(active_pending_soon));
257 EXPECT_EQ(0, AssignedMemoryCount(never_bin)); 281 EXPECT_EQ(0, AssignedMemoryCount(never_bin));
282
283 ReleaseTiles(&active_now);
284 ReleaseTiles(&pending_now);
285 ReleaseTiles(&active_pending_soon);
286 ReleaseTiles(&never_bin);
258 } 287 }
259 288
260 TEST_P(TileManagerTest, PartialOOMMemoryToPending) { 289 TEST_P(TileManagerTest, PartialOOMMemoryToPending) {
261 // 5 tiles on active tree eventually bin, 5 tiles on pending tree that are 290 // 5 tiles on active tree eventually bin, 5 tiles on pending tree that are
262 // required for activation, but only enough memory for 8 tiles. The result 291 // required for activation, but only enough memory for 8 tiles. The result
263 // is all pending tree tiles get memory, and 3 of the active tree tiles 292 // is all pending tree tiles get memory, and 3 of the active tree tiles
264 // get memory. None of these tiles is needed to avoid calimity (flickering or 293 // get memory. None of these tiles is needed to avoid calimity (flickering or
265 // raster-on-demand) so the soft memory limit is used. 294 // raster-on-demand) so the soft memory limit is used.
266 295
267 Initialize(8, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); 296 Initialize(8, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
268 TileVector active_tree_tiles = 297 TileVector active_tree_tiles =
269 CreateTiles(5, TilePriorityForEventualBin(), TilePriority()); 298 CreateTiles(5, TilePriorityForEventualBin(), TilePriority());
270 TileVector pending_tree_tiles = 299 TileVector pending_tree_tiles =
271 CreateTiles(5, TilePriority(), TilePriorityRequiredForActivation()); 300 CreateTiles(5, TilePriority(), TilePriorityRequiredForActivation());
272 tile_manager()->AssignMemoryToTiles(global_state_); 301 tile_manager()->AssignMemoryToTiles(global_state_);
273 302
274 EXPECT_EQ(5, AssignedMemoryCount(active_tree_tiles)); 303 EXPECT_EQ(5, AssignedMemoryCount(active_tree_tiles));
275 EXPECT_EQ(3, AssignedMemoryCount(pending_tree_tiles)); 304 EXPECT_EQ(3, AssignedMemoryCount(pending_tree_tiles));
276 305
277 SetTreePriority(SAME_PRIORITY_FOR_BOTH_TREES); 306 SetTreePriority(SAME_PRIORITY_FOR_BOTH_TREES);
278 tile_manager()->AssignMemoryToTiles(global_state_); 307 tile_manager()->AssignMemoryToTiles(global_state_);
279 308
280 EXPECT_EQ(3, AssignedMemoryCount(active_tree_tiles)); 309 EXPECT_EQ(3, AssignedMemoryCount(active_tree_tiles));
281 EXPECT_EQ(5, AssignedMemoryCount(pending_tree_tiles)); 310 EXPECT_EQ(5, AssignedMemoryCount(pending_tree_tiles));
311
312 ReleaseTiles(&active_tree_tiles);
313 ReleaseTiles(&pending_tree_tiles);
282 } 314 }
283 315
284 TEST_P(TileManagerTest, PartialOOMMemoryToActive) { 316 TEST_P(TileManagerTest, PartialOOMMemoryToActive) {
285 // 5 tiles on active tree eventually bin, 5 tiles on pending tree now bin, 317 // 5 tiles on active tree eventually bin, 5 tiles on pending tree now bin,
286 // but only enough memory for 8 tiles. The result is all active tree tiles 318 // but only enough memory for 8 tiles. The result is all active tree tiles
287 // get memory, and 3 of the pending tree tiles get memory. 319 // get memory, and 3 of the pending tree tiles get memory.
288 // The pending tiles are not needed to avoid calimity (flickering or 320 // The pending tiles are not needed to avoid calimity (flickering or
289 // raster-on-demand) and the active tiles fit, so the soft limit is used. 321 // raster-on-demand) and the active tiles fit, so the soft limit is used.
290 322
291 Initialize(8, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); 323 Initialize(8, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
292 TileVector active_tree_tiles = 324 TileVector active_tree_tiles =
293 CreateTiles(5, TilePriorityForNowBin(), TilePriority()); 325 CreateTiles(5, TilePriorityForNowBin(), TilePriority());
294 TileVector pending_tree_tiles = 326 TileVector pending_tree_tiles =
295 CreateTiles(5, TilePriority(), TilePriorityForNowBin()); 327 CreateTiles(5, TilePriority(), TilePriorityForNowBin());
296 328
297 tile_manager()->AssignMemoryToTiles(global_state_); 329 tile_manager()->AssignMemoryToTiles(global_state_);
298 330
299 EXPECT_EQ(5, AssignedMemoryCount(active_tree_tiles)); 331 EXPECT_EQ(5, AssignedMemoryCount(active_tree_tiles));
300 EXPECT_EQ(3, AssignedMemoryCount(pending_tree_tiles)); 332 EXPECT_EQ(3, AssignedMemoryCount(pending_tree_tiles));
333
334 ReleaseTiles(&active_tree_tiles);
335 ReleaseTiles(&pending_tree_tiles);
301 } 336 }
302 337
303 TEST_P(TileManagerTest, TotalOOMMemoryToPending) { 338 TEST_P(TileManagerTest, TotalOOMMemoryToPending) {
304 // 10 tiles on active tree eventually bin, 10 tiles on pending tree that are 339 // 10 tiles on active tree eventually bin, 10 tiles on pending tree that are
305 // required for activation, but only enough tiles for 4 tiles. The result 340 // required for activation, but only enough tiles for 4 tiles. The result
306 // is 4 pending tree tiles get memory, and none of the active tree tiles 341 // is 4 pending tree tiles get memory, and none of the active tree tiles
307 // get memory. 342 // get memory.
308 343
309 Initialize(4, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); 344 Initialize(4, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
310 TileVector active_tree_tiles = 345 TileVector active_tree_tiles =
(...skipping 11 matching lines...) Expand all
322 357
323 if (UsingResourceLimit()) { 358 if (UsingResourceLimit()) {
324 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles)); 359 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles));
325 EXPECT_EQ(4, AssignedMemoryCount(pending_tree_tiles)); 360 EXPECT_EQ(4, AssignedMemoryCount(pending_tree_tiles));
326 } else { 361 } else {
327 // Pending tiles are now required to avoid calimity (flickering or 362 // Pending tiles are now required to avoid calimity (flickering or
328 // raster-on-demand). Hard-limit is used and double the tiles fit. 363 // raster-on-demand). Hard-limit is used and double the tiles fit.
329 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles)); 364 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles));
330 EXPECT_EQ(8, AssignedMemoryCount(pending_tree_tiles)); 365 EXPECT_EQ(8, AssignedMemoryCount(pending_tree_tiles));
331 } 366 }
367
368 ReleaseTiles(&active_tree_tiles);
369 ReleaseTiles(&pending_tree_tiles);
332 } 370 }
333 371
334 TEST_P(TileManagerTest, TotalOOMActiveSoonMemoryToPending) { 372 TEST_P(TileManagerTest, TotalOOMActiveSoonMemoryToPending) {
335 // 10 tiles on active tree soon bin, 10 tiles on pending tree that are 373 // 10 tiles on active tree soon bin, 10 tiles on pending tree that are
336 // required for activation, but only enough tiles for 4 tiles. The result 374 // required for activation, but only enough tiles for 4 tiles. The result
337 // is 4 pending tree tiles get memory, and none of the active tree tiles 375 // is 4 pending tree tiles get memory, and none of the active tree tiles
338 // get memory. 376 // get memory.
339 377
340 Initialize(4, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); 378 Initialize(4, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
341 TileVector active_tree_tiles = 379 TileVector active_tree_tiles =
(...skipping 11 matching lines...) Expand all
353 391
354 if (UsingResourceLimit()) { 392 if (UsingResourceLimit()) {
355 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles)); 393 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles));
356 EXPECT_EQ(4, AssignedMemoryCount(pending_tree_tiles)); 394 EXPECT_EQ(4, AssignedMemoryCount(pending_tree_tiles));
357 } else { 395 } else {
358 // Pending tiles are now required to avoid calimity (flickering or 396 // Pending tiles are now required to avoid calimity (flickering or
359 // raster-on-demand). Hard-limit is used and double the tiles fit. 397 // raster-on-demand). Hard-limit is used and double the tiles fit.
360 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles)); 398 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles));
361 EXPECT_EQ(8, AssignedMemoryCount(pending_tree_tiles)); 399 EXPECT_EQ(8, AssignedMemoryCount(pending_tree_tiles));
362 } 400 }
401
402 ReleaseTiles(&active_tree_tiles);
403 ReleaseTiles(&pending_tree_tiles);
363 } 404 }
364 405
365 TEST_P(TileManagerTest, TotalOOMMemoryToActive) { 406 TEST_P(TileManagerTest, TotalOOMMemoryToActive) {
366 // 10 tiles on active tree eventually bin, 10 tiles on pending tree now bin, 407 // 10 tiles on active tree eventually bin, 10 tiles on pending tree now bin,
367 // but only enough memory for 4 tiles. The result is 4 active tree tiles 408 // but only enough memory for 4 tiles. The result is 4 active tree tiles
368 // get memory, and none of the pending tree tiles get memory. 409 // get memory, and none of the pending tree tiles get memory.
369 410
370 Initialize(4, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); 411 Initialize(4, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
371 TileVector active_tree_tiles = 412 TileVector active_tree_tiles =
372 CreateTiles(10, TilePriorityForNowBin(), TilePriority()); 413 CreateTiles(10, TilePriorityForNowBin(), TilePriority());
373 TileVector pending_tree_tiles = 414 TileVector pending_tree_tiles =
374 CreateTiles(10, TilePriority(), TilePriorityForNowBin()); 415 CreateTiles(10, TilePriority(), TilePriorityForNowBin());
375 416
376 tile_manager()->AssignMemoryToTiles(global_state_); 417 tile_manager()->AssignMemoryToTiles(global_state_);
377 418
378 if (UsingResourceLimit()) { 419 if (UsingResourceLimit()) {
379 EXPECT_EQ(4, AssignedMemoryCount(active_tree_tiles)); 420 EXPECT_EQ(4, AssignedMemoryCount(active_tree_tiles));
380 EXPECT_EQ(0, AssignedMemoryCount(pending_tree_tiles)); 421 EXPECT_EQ(0, AssignedMemoryCount(pending_tree_tiles));
381 } else { 422 } else {
382 // Active tiles are required to avoid calimity (flickering or 423 // Active tiles are required to avoid calimity (flickering or
383 // raster-on-demand). Hard-limit is used and double the tiles fit. 424 // raster-on-demand). Hard-limit is used and double the tiles fit.
384 EXPECT_EQ(8, AssignedMemoryCount(active_tree_tiles)); 425 EXPECT_EQ(8, AssignedMemoryCount(active_tree_tiles));
385 EXPECT_EQ(0, AssignedMemoryCount(pending_tree_tiles)); 426 EXPECT_EQ(0, AssignedMemoryCount(pending_tree_tiles));
386 } 427 }
428
429 ReleaseTiles(&active_tree_tiles);
430 ReleaseTiles(&pending_tree_tiles);
387 } 431 }
388 432
389 TEST_P(TileManagerTest, TotalOOMMemoryToNewContent) { 433 TEST_P(TileManagerTest, TotalOOMMemoryToNewContent) {
390 // 10 tiles on active tree now bin, 10 tiles on pending tree now bin, 434 // 10 tiles on active tree now bin, 10 tiles on pending tree now bin,
391 // but only enough memory for 8 tiles. Any tile missing would cause 435 // but only enough memory for 8 tiles. Any tile missing would cause
392 // a calamity (flickering or raster-on-demand). Depending on mode, 436 // a calamity (flickering or raster-on-demand). Depending on mode,
393 // we should use varying amounts of the higher hard memory limit. 437 // we should use varying amounts of the higher hard memory limit.
394 if (UsingResourceLimit()) 438 if (UsingResourceLimit())
395 return; 439 return;
396 440
(...skipping 19 matching lines...) Expand all
416 AssignedMemoryCount(active_tree_tiles) + 460 AssignedMemoryCount(active_tree_tiles) +
417 AssignedMemoryCount(pending_tree_tiles)); 461 AssignedMemoryCount(pending_tree_tiles));
418 462
419 // The pending tree is now more important. Active tiles will take higher 463 // The pending tree is now more important. Active tiles will take higher
420 // priority if they are ready-to-draw in practice. Importantly though, 464 // priority if they are ready-to-draw in practice. Importantly though,
421 // pending tiles also utilize the hard-limit. 465 // pending tiles also utilize the hard-limit.
422 SetTreePriority(NEW_CONTENT_TAKES_PRIORITY); 466 SetTreePriority(NEW_CONTENT_TAKES_PRIORITY);
423 tile_manager()->AssignMemoryToTiles(global_state_); 467 tile_manager()->AssignMemoryToTiles(global_state_);
424 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles)); 468 EXPECT_EQ(0, AssignedMemoryCount(active_tree_tiles));
425 EXPECT_EQ(10, AssignedMemoryCount(pending_tree_tiles)); 469 EXPECT_EQ(10, AssignedMemoryCount(pending_tree_tiles));
470
471 ReleaseTiles(&active_tree_tiles);
472 ReleaseTiles(&pending_tree_tiles);
426 } 473 }
427 474
428 // If true, the max tile limit should be applied as bytes; if false, 475 // If true, the max tile limit should be applied as bytes; if false,
429 // as num_resources_limit. 476 // as num_resources_limit.
430 INSTANTIATE_TEST_CASE_P(TileManagerTests, 477 INSTANTIATE_TEST_CASE_P(TileManagerTests,
431 TileManagerTest, 478 TileManagerTest,
432 ::testing::Values(true, false)); 479 ::testing::Values(true, false));
433 480
434 class TileManagerTilePriorityQueueTest : public testing::Test { 481 class TileManagerTilePriorityQueueTest : public testing::Test {
435 public: 482 public:
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after
1053 } 1100 }
1054 last_tile = tile; 1101 last_tile = tile;
1055 queue.Pop(); 1102 queue.Pop();
1056 } 1103 }
1057 size_t expected_occluded_count = 1104 size_t expected_occluded_count =
1058 pending_child_high_res_tiles.size() + pending_child_low_res_tiles.size(); 1105 pending_child_high_res_tiles.size() + pending_child_low_res_tiles.size();
1059 EXPECT_EQ(expected_occluded_count, occluded_count); 1106 EXPECT_EQ(expected_occluded_count, occluded_count);
1060 } 1107 }
1061 } // namespace 1108 } // namespace
1062 } // namespace cc 1109 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/tile_manager_perftest.cc ('k') | cc/test/fake_picture_layer_tiling_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698