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

Unified Diff: cc/resources/tile_manager_unittest.cc

Issue 816453008: cc: Split tiling set raster queues into all and required. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 11 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 e9562c94f14c564a655cf9036e7ac22759fdac88..f6492a473615c06103c7946bf0f3794924773fd1 100644
--- a/cc/resources/tile_manager_unittest.cc
+++ b/cc/resources/tile_manager_unittest.cc
@@ -150,7 +150,8 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) {
SetupDefaultTrees(layer_bounds);
RasterTilePriorityQueue queue;
- host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES);
+ host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES,
+ RasterTilePriorityQueue::Type::ALL);
EXPECT_FALSE(queue.IsEmpty());
size_t tile_count = 0;
@@ -168,7 +169,8 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) {
// Sanity check, all tiles should be visible.
std::set<Tile*> smoothness_tiles;
queue.Reset();
- host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY);
+ host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY,
+ RasterTilePriorityQueue::Type::ALL);
bool had_low_res = false;
while (!queue.IsEmpty()) {
Tile* tile = queue.Top();
@@ -184,6 +186,33 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) {
EXPECT_EQ(all_tiles, smoothness_tiles);
EXPECT_TRUE(had_low_res);
+ // Check that everything is required for activation.
+ queue.Reset();
+ host_impl_.BuildRasterQueue(
+ &queue, SMOOTHNESS_TAKES_PRIORITY,
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION);
+ std::set<Tile*> required_for_activation_tiles;
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
+ EXPECT_TRUE(tile->required_for_activation());
+ required_for_activation_tiles.insert(tile);
+ queue.Pop();
+ }
+ EXPECT_EQ(all_tiles, required_for_activation_tiles);
+
+ // Check that everything is required for draw.
+ queue.Reset();
+ host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY,
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW);
+ std::set<Tile*> required_for_draw_tiles;
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
+ EXPECT_TRUE(tile->required_for_draw());
+ required_for_draw_tiles.insert(tile);
+ queue.Pop();
+ }
+ EXPECT_EQ(all_tiles, required_for_draw_tiles);
+
Region invalidation(gfx::Rect(0, 0, 500, 500));
// Invalidate the pending tree.
@@ -238,7 +267,10 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) {
size_t correct_order_tiles = 0u;
// Here we expect to get increasing ACTIVE_TREE priority_bin.
queue.Reset();
- host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY);
+ host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY,
+ RasterTilePriorityQueue::Type::ALL);
+ std::set<Tile*> actual_required_for_draw_tiles;
+ std::set<Tile*> actual_required_for_activation_tiles;
while (!queue.IsEmpty()) {
Tile* tile = queue.Top();
EXPECT_TRUE(tile);
@@ -274,6 +306,10 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) {
last_tile = tile;
++tile_count;
smoothness_tiles.insert(tile);
+ if (tile->required_for_draw())
+ actual_required_for_draw_tiles.insert(tile);
+ if (tile->required_for_activation())
+ actual_required_for_activation_tiles.insert(tile);
queue.Pop();
}
@@ -283,12 +319,41 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) {
// should check that we're _mostly_ right.
EXPECT_GT(correct_order_tiles, 3 * tile_count / 4);
+ // Check that we have consistent required_for_activation tiles.
+ queue.Reset();
+ host_impl_.BuildRasterQueue(
+ &queue, SMOOTHNESS_TAKES_PRIORITY,
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION);
+ required_for_activation_tiles.clear();
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
+ EXPECT_TRUE(tile->required_for_activation());
+ required_for_activation_tiles.insert(tile);
+ queue.Pop();
+ }
+ EXPECT_EQ(actual_required_for_activation_tiles,
+ required_for_activation_tiles);
+
+ // Check that we have consistent required_for_draw tiles.
+ queue.Reset();
+ host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY,
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW);
+ required_for_draw_tiles.clear();
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
+ EXPECT_TRUE(tile->required_for_draw());
+ required_for_draw_tiles.insert(tile);
+ queue.Pop();
+ }
+ EXPECT_EQ(actual_required_for_draw_tiles, required_for_draw_tiles);
+
std::set<Tile*> new_content_tiles;
last_tile = NULL;
size_t increasing_distance_tiles = 0u;
// Here we expect to get increasing PENDING_TREE priority_bin.
queue.Reset();
- host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY);
+ host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY,
+ RasterTilePriorityQueue::Type::ALL);
tile_count = 0;
while (!queue.IsEmpty()) {
Tile* tile = queue.Top();
@@ -324,6 +389,34 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) {
// Since we don't guarantee increasing distance due to spiral iterator, we
// should check that we're _mostly_ right.
EXPECT_GE(increasing_distance_tiles, 3 * tile_count / 4);
+
+ // Check that we have consistent required_for_activation tiles.
+ queue.Reset();
+ host_impl_.BuildRasterQueue(
+ &queue, NEW_CONTENT_TAKES_PRIORITY,
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION);
+ required_for_activation_tiles.clear();
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
+ EXPECT_TRUE(tile->required_for_activation());
+ required_for_activation_tiles.insert(tile);
+ queue.Pop();
+ }
+ EXPECT_EQ(actual_required_for_activation_tiles,
+ required_for_activation_tiles);
+
+ // Check that we have consistent required_for_draw tiles.
+ queue.Reset();
+ host_impl_.BuildRasterQueue(&queue, NEW_CONTENT_TAKES_PRIORITY,
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW);
+ required_for_draw_tiles.clear();
+ while (!queue.IsEmpty()) {
+ Tile* tile = queue.Top();
+ EXPECT_TRUE(tile->required_for_draw());
+ required_for_draw_tiles.insert(tile);
+ queue.Pop();
+ }
+ EXPECT_EQ(actual_required_for_draw_tiles, required_for_draw_tiles);
}
TEST_F(TileManagerTilePriorityQueueTest, ActivationComesBeforeEventually) {
@@ -355,7 +448,8 @@ TEST_F(TileManagerTilePriorityQueueTest, ActivationComesBeforeEventually) {
RasterTilePriorityQueue queue;
host_impl_.SetRequiresHighResToDraw();
- host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY);
+ host_impl_.BuildRasterQueue(&queue, SMOOTHNESS_TAKES_PRIORITY,
+ RasterTilePriorityQueue::Type::ALL);
EXPECT_FALSE(queue.IsEmpty());
// Get all the tiles that are NOW or SOON and make sure they are ready to
@@ -390,7 +484,8 @@ TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) {
size_t tile_count = 0;
RasterTilePriorityQueue raster_queue;
- host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES);
+ host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES,
+ RasterTilePriorityQueue::Type::ALL);
while (!raster_queue.IsEmpty()) {
++tile_count;
EXPECT_TRUE(raster_queue.Top());
@@ -587,7 +682,8 @@ TEST_F(TileManagerTilePriorityQueueTest,
std::set<Tile*> all_tiles;
size_t tile_count = 0;
RasterTilePriorityQueue raster_queue;
- host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES);
+ host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES,
+ RasterTilePriorityQueue::Type::ALL);
while (!raster_queue.IsEmpty()) {
++tile_count;
EXPECT_TRUE(raster_queue.Top());
@@ -792,7 +888,8 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) {
SetupDefaultTrees(layer_bounds);
RasterTilePriorityQueue queue;
- host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES);
+ host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES,
+ RasterTilePriorityQueue::Type::ALL);
EXPECT_FALSE(queue.IsEmpty());
size_t tile_count = 0;
@@ -816,7 +913,8 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) {
pending_layer_->AddChild(pending_layer.Pass());
}
- host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES);
+ host_impl_.BuildRasterQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES,
+ RasterTilePriorityQueue::Type::ALL);
EXPECT_FALSE(queue.IsEmpty());
tile_count = 0;
@@ -837,7 +935,8 @@ TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueueEmptyLayers) {
SetupDefaultTrees(layer_bounds);
RasterTilePriorityQueue raster_queue;
- host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES);
+ host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES,
+ RasterTilePriorityQueue::Type::ALL);
EXPECT_FALSE(raster_queue.IsEmpty());
size_t tile_count = 0;

Powered by Google App Engine
This is Rietveld 408576698