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

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

Issue 17351017: Re-land: cc: Add raster finished signals to RasterWorkerPool. (Closed) Base URL: http://git.chromium.org/chromium/src.git@new-graph-build
Patch Set: vmpstr's review Created 7 years, 6 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
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/tile.h" 5 #include "cc/resources/tile.h"
6 #include "cc/resources/tile_priority.h" 6 #include "cc/resources/tile_priority.h"
7 #include "cc/test/fake_output_surface.h" 7 #include "cc/test/fake_output_surface.h"
8 #include "cc/test/fake_tile_manager.h" 8 #include "cc/test/fake_tile_manager.h"
9 #include "cc/test/fake_tile_manager_client.h" 9 #include "cc/test/fake_tile_manager_client.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 }; 42 };
43 43
44 class TilePriorityForNowBin : public TilePriority { 44 class TilePriorityForNowBin : public TilePriority {
45 public: 45 public:
46 TilePriorityForNowBin() : TilePriority( 46 TilePriorityForNowBin() : TilePriority(
47 HIGH_RESOLUTION, 47 HIGH_RESOLUTION,
48 0, 48 0,
49 0) {} 49 0) {}
50 }; 50 };
51 51
52 class TilePriorityRequiredForActivation : public TilePriority {
53 public:
54 TilePriorityRequiredForActivation() : TilePriority(
55 HIGH_RESOLUTION,
56 0,
57 0) {
58 required_for_activation = true;
59 }
60 };
61
52 class TileManagerTest : public testing::Test { 62 class TileManagerTest : public testing::Test {
53 public: 63 public:
54 typedef std::vector<scoped_refptr<Tile> > TileVector; 64 typedef std::vector<scoped_refptr<Tile> > TileVector;
55 65
56 void Initialize(int max_memory_tiles, 66 void Initialize(int max_memory_tiles,
57 TileMemoryLimitPolicy memory_limit_policy, 67 TileMemoryLimitPolicy memory_limit_policy,
58 TreePriority tree_priority) { 68 TreePriority tree_priority) {
59 output_surface_ = FakeOutputSurface::Create3d(); 69 output_surface_ = FakeOutputSurface::Create3d();
60 resource_provider_ = ResourceProvider::Create(output_surface_.get(), 0); 70 resource_provider_ = ResourceProvider::Create(output_surface_.get(), 0);
61 tile_manager_ = make_scoped_ptr( 71 tile_manager_ = make_scoped_ptr(
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 112
103 FakeTileManager* tile_manager() { 113 FakeTileManager* tile_manager() {
104 return tile_manager_.get(); 114 return tile_manager_.get();
105 } 115 }
106 116
107 int AssignedMemoryCounts(const TileVector& tiles) { 117 int AssignedMemoryCounts(const TileVector& tiles) {
108 int has_memory_count = 0; 118 int has_memory_count = 0;
109 for (TileVector::const_iterator it = tiles.begin(); 119 for (TileVector::const_iterator it = tiles.begin();
110 it != tiles.end(); 120 it != tiles.end();
111 ++it) { 121 ++it) {
112 if ((*it)->HasRasterTaskForTesting()) 122 if (tile_manager_->HasBeenAssignedMemory(*it))
113 ++has_memory_count; 123 ++has_memory_count;
114 (*it)->ResetRasterTaskForTesting();
115 } 124 }
116 return has_memory_count; 125 return has_memory_count;
117 } 126 }
118 127
119 private: 128 private:
120 FakeTileManagerClient tile_manager_client_; 129 FakeTileManagerClient tile_manager_client_;
121 LayerTreeSettings settings_; 130 LayerTreeSettings settings_;
122 scoped_ptr<FakeTileManager> tile_manager_; 131 scoped_ptr<FakeTileManager> tile_manager_;
123 scoped_refptr<FakePicturePileImpl> picture_pile_; 132 scoped_refptr<FakePicturePileImpl> picture_pile_;
124 scoped_ptr<FakeOutputSurface> output_surface_; 133 scoped_ptr<FakeOutputSurface> output_surface_;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 EXPECT_EQ(0, AssignedMemoryCounts(never_bin)); 236 EXPECT_EQ(0, AssignedMemoryCounts(never_bin));
228 237
229 active_now.clear(); 238 active_now.clear();
230 pending_now.clear(); 239 pending_now.clear();
231 active_pending_soon.clear(); 240 active_pending_soon.clear();
232 never_bin.clear(); 241 never_bin.clear();
233 TearDown(); 242 TearDown();
234 } 243 }
235 244
236 TEST_F(TileManagerTest, PartialOOMMemoryToPending) { 245 TEST_F(TileManagerTest, PartialOOMMemoryToPending) {
237 // 5 tiles on active tree eventually bin, 5 tiles on pending tree now bin, 246 // 5 tiles on active tree eventually bin, 5 tiles on pending tree that are
238 // but only enough memory for 8 tiles. The result is all pending tree tiles 247 // required for activation, but only enough memory for 8 tiles. The result
239 // get memory, and 3 of the active tree tiles get memory. 248 // is all pending tree tiles get memory, and 3 of the active tree tiles
249 // get memory.
240 250
241 Initialize(8, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); 251 Initialize(8, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
242 TileVector active_tree_tiles = 252 TileVector active_tree_tiles =
243 CreateTiles(5, TilePriorityForEventualBin(), TilePriority()); 253 CreateTiles(5, TilePriorityForEventualBin(), TilePriority());
244 TileVector pending_tree_tiles = 254 TileVector pending_tree_tiles =
245 CreateTiles(5, TilePriority(), TilePriorityForNowBin()); 255 CreateTiles(5, TilePriority(), TilePriorityRequiredForActivation());
246 256
247 tile_manager()->ManageTiles(); 257 tile_manager()->ManageTiles();
248 258
259 EXPECT_EQ(5, AssignedMemoryCounts(active_tree_tiles));
260 EXPECT_EQ(3, AssignedMemoryCounts(pending_tree_tiles));
261
262 tile_manager()->ReassignMemoryToOOMTilesRequiredForActivation();
263
249 EXPECT_EQ(3, AssignedMemoryCounts(active_tree_tiles)); 264 EXPECT_EQ(3, AssignedMemoryCounts(active_tree_tiles));
250 EXPECT_EQ(5, AssignedMemoryCounts(pending_tree_tiles)); 265 EXPECT_EQ(5, AssignedMemoryCounts(pending_tree_tiles));
251 266
252 pending_tree_tiles.clear(); 267 pending_tree_tiles.clear();
253 active_tree_tiles.clear(); 268 active_tree_tiles.clear();
254 TearDown(); 269 TearDown();
255 } 270 }
256 271
257 TEST_F(TileManagerTest, PartialOOMMemoryToActive) { 272 TEST_F(TileManagerTest, PartialOOMMemoryToActive) {
258 // 5 tiles on active tree eventually bin, 5 tiles on pending tree now bin, 273 // 5 tiles on active tree eventually bin, 5 tiles on pending tree now bin,
(...skipping 10 matching lines...) Expand all
269 284
270 EXPECT_EQ(5, AssignedMemoryCounts(active_tree_tiles)); 285 EXPECT_EQ(5, AssignedMemoryCounts(active_tree_tiles));
271 EXPECT_EQ(3, AssignedMemoryCounts(pending_tree_tiles)); 286 EXPECT_EQ(3, AssignedMemoryCounts(pending_tree_tiles));
272 287
273 pending_tree_tiles.clear(); 288 pending_tree_tiles.clear();
274 active_tree_tiles.clear(); 289 active_tree_tiles.clear();
275 TearDown(); 290 TearDown();
276 } 291 }
277 292
278 TEST_F(TileManagerTest, TotalOOMMemoryToPending) { 293 TEST_F(TileManagerTest, TotalOOMMemoryToPending) {
279 // 5 tiles on active tree eventually bin, 5 tiles on pending tree now bin, 294 // 5 tiles on active tree eventually bin, 5 tiles on pending tree that are
280 // but only enough memory for 4 tiles. The result is 4 pending tree tiles 295 // required for activation, but only enough memory for 4 tiles. The result
281 // get memory, and none of the active tree tiles get memory. 296 // is 4 pending tree tiles get memory, and none of the active tree tiles
297 // get memory.
282 298
283 Initialize(4, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); 299 Initialize(4, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
284 TileVector active_tree_tiles = 300 TileVector active_tree_tiles =
285 CreateTiles(5, TilePriorityForEventualBin(), TilePriority()); 301 CreateTiles(5, TilePriorityForEventualBin(), TilePriority());
286 TileVector pending_tree_tiles = 302 TileVector pending_tree_tiles =
287 CreateTiles(5, TilePriority(), TilePriorityForNowBin()); 303 CreateTiles(5, TilePriority(), TilePriorityRequiredForActivation());
288 304
289 tile_manager()->ManageTiles(); 305 tile_manager()->ManageTiles();
290 306
307 EXPECT_EQ(4, AssignedMemoryCounts(active_tree_tiles));
308 EXPECT_EQ(0, AssignedMemoryCounts(pending_tree_tiles));
309
310 tile_manager()->ReassignMemoryToOOMTilesRequiredForActivation();
311
291 EXPECT_EQ(0, AssignedMemoryCounts(active_tree_tiles)); 312 EXPECT_EQ(0, AssignedMemoryCounts(active_tree_tiles));
292 EXPECT_EQ(4, AssignedMemoryCounts(pending_tree_tiles)); 313 EXPECT_EQ(4, AssignedMemoryCounts(pending_tree_tiles));
293 314
294 pending_tree_tiles.clear(); 315 pending_tree_tiles.clear();
295 active_tree_tiles.clear(); 316 active_tree_tiles.clear();
296 TearDown(); 317 TearDown();
297 } 318 }
298 319
299 TEST_F(TileManagerTest, TotalOOMActiveSoonMemoryToPending) { 320 TEST_F(TileManagerTest, TotalOOMActiveSoonMemoryToPending) {
300 // 5 tiles on active tree soon bin, 5 tiles on pending tree now bin, 321 // 5 tiles on active tree soon bin, 5 tiles on pending tree that are
301 // but only enough memory for 4 tiles. The result is 4 pending tree tiles 322 // required for activation, but only enough memory for 4 tiles. The result
302 // get memory, and none of the active tree tiles get memory. 323 // is 4 pending tree tiles get memory, and none of the active tree tiles
324 // get memory.
303 325
304 Initialize(4, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); 326 Initialize(4, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
305 TileVector active_tree_tiles = 327 TileVector active_tree_tiles =
306 CreateTiles(5, TilePriorityForSoonBin(), TilePriority()); 328 CreateTiles(5, TilePriorityForSoonBin(), TilePriority());
307 TileVector pending_tree_tiles = 329 TileVector pending_tree_tiles =
308 CreateTiles(5, TilePriority(), TilePriorityForNowBin()); 330 CreateTiles(5, TilePriority(), TilePriorityRequiredForActivation());
309 331
310 tile_manager()->ManageTiles(); 332 tile_manager()->ManageTiles();
311 333
334 EXPECT_EQ(4, AssignedMemoryCounts(active_tree_tiles));
335 EXPECT_EQ(0, AssignedMemoryCounts(pending_tree_tiles));
336
337 tile_manager()->ReassignMemoryToOOMTilesRequiredForActivation();
338
312 EXPECT_EQ(0, AssignedMemoryCounts(active_tree_tiles)); 339 EXPECT_EQ(0, AssignedMemoryCounts(active_tree_tiles));
313 EXPECT_EQ(4, AssignedMemoryCounts(pending_tree_tiles)); 340 EXPECT_EQ(4, AssignedMemoryCounts(pending_tree_tiles));
314 341
315 pending_tree_tiles.clear(); 342 pending_tree_tiles.clear();
316 active_tree_tiles.clear(); 343 active_tree_tiles.clear();
317 TearDown(); 344 TearDown();
318 } 345 }
319 346
320 TEST_F(TileManagerTest, TotalOOMMemoryToActive) { 347 TEST_F(TileManagerTest, TotalOOMMemoryToActive) {
321 // 5 tiles on active tree eventually bin, 5 tiles on pending tree now bin, 348 // 5 tiles on active tree eventually bin, 5 tiles on pending tree now bin,
(...skipping 11 matching lines...) Expand all
333 EXPECT_EQ(4, AssignedMemoryCounts(active_tree_tiles)); 360 EXPECT_EQ(4, AssignedMemoryCounts(active_tree_tiles));
334 EXPECT_EQ(0, AssignedMemoryCounts(pending_tree_tiles)); 361 EXPECT_EQ(0, AssignedMemoryCounts(pending_tree_tiles));
335 362
336 pending_tree_tiles.clear(); 363 pending_tree_tiles.clear();
337 active_tree_tiles.clear(); 364 active_tree_tiles.clear();
338 TearDown(); 365 TearDown();
339 } 366 }
340 367
341 } // namespace 368 } // namespace
342 } // namespace cc 369 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698