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

Unified Diff: cc/resources/tile_manager_unittest.cc

Issue 406543003: cc: Change TileManager iterators to be queues. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: cc/resources/tile_manager_unittest.cc
diff --git a/cc/resources/tile_manager_unittest.cc b/cc/resources/tile_manager_unittest.cc
index 3dba49b45558c24c372fd64c4f609861f8d9f3cc..a23152b7f546ba69c78a5310f76342e258feaaf7 100644
--- a/cc/resources/tile_manager_unittest.cc
+++ b/cc/resources/tile_manager_unittest.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "cc/resources/eviction_tile_priority_queue.h"
+#include "cc/resources/raster_tile_priority_queue.h"
#include "cc/resources/tile.h"
#include "cc/resources/tile_priority.h"
#include "cc/test/fake_impl_proxy.h"
@@ -83,11 +85,16 @@ class TileManagerTest : public testing::TestWithParam<bool>,
}
// TileManagerClient implementation.
- virtual const std::vector<PictureLayerImpl*>& GetPictureLayers() OVERRIDE {
+ virtual const std::vector<PictureLayerImpl*>& GetPictureLayers()
+ const OVERRIDE {
return picture_layers_;
}
virtual void NotifyReadyToActivate() OVERRIDE { ready_to_activate_ = true; }
virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE {}
+ virtual void BuildRasterQueue(RasterTilePriorityQueue* queue,
+ TreePriority priority) OVERRIDE {}
+ virtual void BuildEvictionQueue(EvictionTilePriorityQueue* queue,
+ TreePriority priority) OVERRIDE {}
TileVector CreateTilesWithSize(int count,
TilePriority active_priority,
@@ -424,9 +431,9 @@ INSTANTIATE_TEST_CASE_P(TileManagerTests,
TileManagerTest,
::testing::Values(true, false));
-class TileManagerTileIteratorTest : public testing::Test {
+class TileManagerTilePriorityQueueTest : public testing::Test {
public:
- TileManagerTileIteratorTest()
+ TileManagerTilePriorityQueueTest()
: memory_limit_policy_(ALLOW_ANYTHING),
max_tiles_(10000),
ready_to_activate_(false),
@@ -537,75 +544,23 @@ class TileManagerTileIteratorTest : public testing::Test {
FakePictureLayerImpl* active_layer_;
};
-TEST_F(TileManagerTileIteratorTest, PairedPictureLayers) {
- host_impl_.CreatePendingTree();
- host_impl_.ActivateSyncTree();
- host_impl_.CreatePendingTree();
-
- LayerTreeImpl* active_tree = host_impl_.active_tree();
- LayerTreeImpl* pending_tree = host_impl_.pending_tree();
- EXPECT_NE(active_tree, pending_tree);
-
- scoped_ptr<FakePictureLayerImpl> active_layer =
- FakePictureLayerImpl::Create(active_tree, 10);
- scoped_ptr<FakePictureLayerImpl> pending_layer =
- FakePictureLayerImpl::Create(pending_tree, 10);
-
- TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager();
- EXPECT_TRUE(tile_manager);
-
- std::vector<TileManager::PairedPictureLayer> paired_layers;
- tile_manager->GetPairedPictureLayers(&paired_layers);
-
- EXPECT_EQ(2u, paired_layers.size());
- if (paired_layers[0].active_layer) {
- EXPECT_EQ(active_layer.get(), paired_layers[0].active_layer);
- EXPECT_EQ(NULL, paired_layers[0].pending_layer);
- } else {
- EXPECT_EQ(pending_layer.get(), paired_layers[0].pending_layer);
- EXPECT_EQ(NULL, paired_layers[0].active_layer);
- }
-
- if (paired_layers[1].active_layer) {
- EXPECT_EQ(active_layer.get(), paired_layers[1].active_layer);
- EXPECT_EQ(NULL, paired_layers[1].pending_layer);
- } else {
- EXPECT_EQ(pending_layer.get(), paired_layers[1].pending_layer);
- EXPECT_EQ(NULL, paired_layers[1].active_layer);
- }
-
- active_layer->set_twin_layer(pending_layer.get());
- pending_layer->set_twin_layer(active_layer.get());
-
- tile_manager->GetPairedPictureLayers(&paired_layers);
- EXPECT_EQ(1u, paired_layers.size());
-
- EXPECT_EQ(active_layer.get(), paired_layers[0].active_layer);
- EXPECT_EQ(pending_layer.get(), paired_layers[0].pending_layer);
-}
-
-TEST_F(TileManagerTileIteratorTest, RasterTileIterator) {
+TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) {
SetupDefaultTrees(gfx::Size(1000, 1000));
- TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager();
- EXPECT_TRUE(tile_manager);
active_layer_->CreateDefaultTilingsAndTiles();
pending_layer_->CreateDefaultTilingsAndTiles();
- std::vector<TileManager::PairedPictureLayer> paired_layers;
- tile_manager->GetPairedPictureLayers(&paired_layers);
- EXPECT_EQ(1u, paired_layers.size());
-
- TileManager::RasterTileIterator it(tile_manager,
- SAME_PRIORITY_FOR_BOTH_TREES);
- EXPECT_TRUE(it);
+ RasterTilePriorityQueue queue;
+ host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES);
+ EXPECT_FALSE(queue.IsEmpty());
size_t tile_count = 0;
std::set<Tile*> all_tiles;
- for (; it; ++it) {
- EXPECT_TRUE(*it);
- all_tiles.insert(*it);
+ while (!queue.IsEmpty()) {
+ EXPECT_TRUE(queue.Top());
+ all_tiles.insert(queue.Top());
++tile_count;
+ queue.Pop();
}
EXPECT_EQ(tile_count, all_tiles.size());
@@ -613,15 +568,15 @@ TEST_F(TileManagerTileIteratorTest, RasterTileIterator) {
// Sanity check, all tiles should be visible.
std::set<Tile*> smoothness_tiles;
- for (TileManager::RasterTileIterator it(tile_manager,
- SMOOTHNESS_TAKES_PRIORITY);
- it;
- ++it) {
- Tile* tile = *it;
+ queue.Reset();
+ host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY);
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
EXPECT_TRUE(tile);
EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin);
EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin);
smoothness_tiles.insert(tile);
+ queue.Pop();
}
EXPECT_EQ(all_tiles, smoothness_tiles);
@@ -699,11 +654,10 @@ TEST_F(TileManagerTileIteratorTest, RasterTileIterator) {
tile_count = 0;
size_t increasing_distance_tiles = 0u;
// Here we expect to get increasing ACTIVE_TREE priority_bin.
- for (TileManager::RasterTileIterator it(tile_manager,
- SMOOTHNESS_TAKES_PRIORITY);
- it;
- ++it) {
- Tile* tile = *it;
+ queue.Reset();
+ host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY);
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
EXPECT_TRUE(tile);
if (!last_tile)
@@ -728,6 +682,7 @@ TEST_F(TileManagerTileIteratorTest, RasterTileIterator) {
last_tile = tile;
++tile_count;
smoothness_tiles.insert(tile);
+ queue.Pop();
}
EXPECT_EQ(tile_count, smoothness_tiles.size());
@@ -740,11 +695,10 @@ TEST_F(TileManagerTileIteratorTest, RasterTileIterator) {
last_tile = NULL;
increasing_distance_tiles = 0u;
// Here we expect to get increasing PENDING_TREE priority_bin.
- for (TileManager::RasterTileIterator it(tile_manager,
- NEW_CONTENT_TAKES_PRIORITY);
- it;
- ++it) {
- Tile* tile = *it;
+ queue.Reset();
+ host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY);
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
EXPECT_TRUE(tile);
if (!last_tile)
@@ -768,6 +722,7 @@ TEST_F(TileManagerTileIteratorTest, RasterTileIterator) {
last_tile = tile;
new_content_tiles.insert(tile);
+ queue.Pop();
}
EXPECT_EQ(tile_count, new_content_tiles.size());
@@ -777,55 +732,51 @@ TEST_F(TileManagerTileIteratorTest, RasterTileIterator) {
EXPECT_GT(increasing_distance_tiles, 3 * tile_count / 4);
}
-TEST_F(TileManagerTileIteratorTest, EvictionTileIterator) {
+TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) {
SetupDefaultTrees(gfx::Size(1000, 1000));
- TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager();
- EXPECT_TRUE(tile_manager);
active_layer_->CreateDefaultTilingsAndTiles();
pending_layer_->CreateDefaultTilingsAndTiles();
- std::vector<TileManager::PairedPictureLayer> paired_layers;
- tile_manager->GetPairedPictureLayers(&paired_layers);
- EXPECT_EQ(1u, paired_layers.size());
-
- TileManager::EvictionTileIterator empty_it(tile_manager,
- SAME_PRIORITY_FOR_BOTH_TREES);
- EXPECT_FALSE(empty_it);
+ EvictionTilePriorityQueue empty_queue;
+ host_impl_.BuildEvictionQueue(&empty_queue, SAME_PRIORITY_FOR_BOTH_TREES);
+ EXPECT_TRUE(empty_queue.IsEmpty());
std::set<Tile*> all_tiles;
size_t tile_count = 0;
- for (TileManager::RasterTileIterator raster_it(tile_manager,
- SAME_PRIORITY_FOR_BOTH_TREES);
- raster_it;
- ++raster_it) {
+ RasterTilePriorityQueue raster_queue;
+ host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES);
+ while (!raster_queue.IsEmpty()) {
++tile_count;
- EXPECT_TRUE(*raster_it);
- all_tiles.insert(*raster_it);
+ EXPECT_TRUE(raster_queue.Top());
+ all_tiles.insert(raster_queue.Top());
+ raster_queue.Pop();
}
EXPECT_EQ(tile_count, all_tiles.size());
EXPECT_EQ(17u, tile_count);
- tile_manager->InitializeTilesWithResourcesForTesting(
+ tile_manager()->InitializeTilesWithResourcesForTesting(
std::vector<Tile*>(all_tiles.begin(), all_tiles.end()));
- TileManager::EvictionTileIterator it(tile_manager, SMOOTHNESS_TAKES_PRIORITY);
- EXPECT_TRUE(it);
+ EvictionTilePriorityQueue queue;
+ host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY);
+ EXPECT_FALSE(queue.IsEmpty());
// Sanity check, all tiles should be visible.
std::set<Tile*> smoothness_tiles;
- for (; it; ++it) {
- Tile* tile = *it;
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
EXPECT_TRUE(tile);
EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin);
EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin);
EXPECT_TRUE(tile->HasResources());
smoothness_tiles.insert(tile);
+ queue.Pop();
}
EXPECT_EQ(all_tiles, smoothness_tiles);
- tile_manager->ReleaseTileResourcesForTesting(
+ tile_manager()->ReleaseTileResourcesForTesting(
std::vector<Tile*>(all_tiles.begin(), all_tiles.end()));
Region invalidation(gfx::Rect(0, 0, 500, 500));
@@ -897,18 +848,17 @@ TEST_F(TileManagerTileIteratorTest, EvictionTileIterator) {
for (size_t i = 0; i < active_low_res_tiles.size(); ++i)
all_tiles.insert(active_low_res_tiles[i]);
- tile_manager->InitializeTilesWithResourcesForTesting(
+ tile_manager()->InitializeTilesWithResourcesForTesting(
std::vector<Tile*>(all_tiles.begin(), all_tiles.end()));
Tile* last_tile = NULL;
smoothness_tiles.clear();
tile_count = 0;
// Here we expect to get increasing ACTIVE_TREE priority_bin.
- for (TileManager::EvictionTileIterator it(tile_manager,
- SMOOTHNESS_TAKES_PRIORITY);
- it;
- ++it) {
- Tile* tile = *it;
+ queue.Reset();
+ host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY);
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
EXPECT_TRUE(tile);
EXPECT_TRUE(tile->HasResources());
@@ -926,6 +876,7 @@ TEST_F(TileManagerTileIteratorTest, EvictionTileIterator) {
last_tile = tile;
++tile_count;
smoothness_tiles.insert(tile);
+ queue.Pop();
}
EXPECT_EQ(tile_count, smoothness_tiles.size());
@@ -934,11 +885,10 @@ TEST_F(TileManagerTileIteratorTest, EvictionTileIterator) {
std::set<Tile*> new_content_tiles;
last_tile = NULL;
// Here we expect to get increasing PENDING_TREE priority_bin.
- for (TileManager::EvictionTileIterator it(tile_manager,
- NEW_CONTENT_TAKES_PRIORITY);
- it;
- ++it) {
- Tile* tile = *it;
+ queue.Reset();
+ host_impl_.BuildEvictionQueue(&queue, NEW_CONTENT_TAKES_PRIORITY);
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
EXPECT_TRUE(tile);
if (!last_tile)
@@ -954,13 +904,15 @@ TEST_F(TileManagerTileIteratorTest, EvictionTileIterator) {
last_tile = tile;
new_content_tiles.insert(tile);
+ queue.Pop();
}
EXPECT_EQ(tile_count, new_content_tiles.size());
EXPECT_EQ(all_tiles, new_content_tiles);
}
-TEST_F(TileManagerTileIteratorTest, EvictionTileIteratorWithOcclusion) {
+TEST_F(TileManagerTilePriorityQueueTest,
+ EvictionTilePriorityQueueWithOcclusion) {
gfx::Size tile_size(102, 102);
gfx::Size layer_bounds(1000, 1000);
@@ -980,22 +932,15 @@ TEST_F(TileManagerTileIteratorTest, EvictionTileIteratorWithOcclusion) {
pending_child_layer->DoPostCommitInitializationIfNeeded();
pending_child_layer->CreateDefaultTilingsAndTiles();
- TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager();
- EXPECT_TRUE(tile_manager);
-
- std::vector<TileManager::PairedPictureLayer> paired_layers;
- tile_manager->GetPairedPictureLayers(&paired_layers);
- EXPECT_EQ(2u, paired_layers.size());
-
std::set<Tile*> all_tiles;
size_t tile_count = 0;
- for (TileManager::RasterTileIterator raster_it(tile_manager,
- NEW_CONTENT_TAKES_PRIORITY);
- raster_it;
- ++raster_it) {
+ RasterTilePriorityQueue raster_queue;
+ host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES);
+ while (!raster_queue.IsEmpty()) {
++tile_count;
- EXPECT_TRUE(*raster_it);
- all_tiles.insert(*raster_it);
+ EXPECT_TRUE(raster_queue.Top());
+ all_tiles.insert(raster_queue.Top());
+ raster_queue.Pop();
}
EXPECT_EQ(tile_count, all_tiles.size());
EXPECT_EQ(34u, tile_count);
@@ -1064,16 +1009,17 @@ TEST_F(TileManagerTileIteratorTest, EvictionTileIteratorWithOcclusion) {
all_tiles.insert(pending_child_low_res_tiles[i]);
}
- tile_manager->InitializeTilesWithResourcesForTesting(
+ tile_manager()->InitializeTilesWithResourcesForTesting(
std::vector<Tile*>(all_tiles.begin(), all_tiles.end()));
- // Verify occlusion is considered by EvictionTileIterator.
+ // Verify occlusion is considered by EvictionTilePriorityQueue.
TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY;
size_t occluded_count = 0u;
Tile* last_tile = NULL;
- for (TileManager::EvictionTileIterator it(tile_manager, tree_priority); it;
- ++it) {
- Tile* tile = *it;
+ EvictionTilePriorityQueue queue;
+ host_impl_.BuildEvictionQueue(&queue, tree_priority);
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
if (!last_tile)
last_tile = tile;
@@ -1099,6 +1045,7 @@ TEST_F(TileManagerTileIteratorTest, EvictionTileIteratorWithOcclusion) {
}
}
last_tile = tile;
+ queue.Pop();
}
size_t expected_occluded_count =
pending_child_high_res_tiles.size() + pending_child_low_res_tiles.size();

Powered by Google App Engine
This is Rietveld 408576698