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

Unified Diff: cc/resources/picture_layer_tiling_unittest.cc

Issue 12259027: cc: Simplify the logic for deciding to update tile priorities. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add early-out and unit test Created 7 years, 8 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/picture_layer_tiling_unittest.cc
diff --git a/cc/resources/picture_layer_tiling_unittest.cc b/cc/resources/picture_layer_tiling_unittest.cc
index e163bc54034ce504f930d4ac5e8bc80d53ca2cf1..5fc9d4f64e24fc1f7ebde34ee2062ee03f79a62a 100644
--- a/cc/resources/picture_layer_tiling_unittest.cc
+++ b/cc/resources/picture_layer_tiling_unittest.cc
@@ -104,9 +104,19 @@ class PictureLayerTilingIteratorTest : public testing::Test {
float rect_scale,
gfx::Rect rect,
base::Callback<void(Tile* tile, gfx::Rect geometry_rect)> callback) {
+ VerifyTiles(tiling_.get(),
+ rect_scale,
+ rect,
+ callback);
+ }
+
+ void VerifyTiles(
+ PictureLayerTiling* tiling,
+ float rect_scale,
+ gfx::Rect rect,
+ base::Callback<void(Tile* tile, gfx::Rect geometry_rect)> callback) {
Region remaining = rect;
- for (PictureLayerTiling::CoverageIterator iter(
- tiling_.get(), rect_scale, rect);
+ for (PictureLayerTiling::CoverageIterator iter(tiling, rect_scale, rect);
iter;
++iter) {
remaining.Subtract(iter.geometry_rect());
@@ -470,7 +480,6 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExist) {
1.f, // current contents scale
gfx::Transform(), // last screen transform
gfx::Transform(), // current screen transform
- 1, // current frame number
1.0, // current frame time
false, // store screen space quads on tiles
10000); // max tiles in tile manager
@@ -488,7 +497,6 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExist) {
1.f, // current contents scale
gfx::Transform(), // last screen transform
gfx::Transform(), // current screen transform
- 2, // current frame number
2.0, // current frame time
false, // store screen space quads on tiles
10000); // max tiles in tile manager
@@ -514,7 +522,6 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) {
1.f, // current contents scale
gfx::Transform(), // last screen transform
gfx::Transform(), // current screen transform
- 1, // current frame number
1.0, // current frame time
false, // store screen space quads on tiles
10000); // max tiles in tile manager
@@ -532,7 +539,6 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) {
1.f, // current contents scale
gfx::Transform(), // last screen transform
gfx::Transform(), // current screen transform
- 2, // current frame number
2.0, // current frame time
false, // store screen space quads on tiles
10000); // max tiles in tile manager
@@ -561,8 +567,7 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) {
1.f, // current contents scale
gfx::Transform(), // last screen transform
gfx::Transform(), // current screen transform
- 2, // current frame number
- 2.0, // current frame time
+ 1.0, // current frame time
false, // store screen space quads on tiles
10000); // max tiles in tile manager
VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
@@ -597,8 +602,7 @@ TEST_F(PictureLayerTilingIteratorTest,
1.f, // current contents scale
gfx::Transform(), // last screen transform
gfx::Transform(), // current screen transform
- 2, // current frame number
- 2.0, // current frame time
+ 1.0, // current frame time
false, // store screen space quads on tiles
1); // max tiles in tile manager
VerifyTiles(1.f,
@@ -631,8 +635,7 @@ TEST_F(PictureLayerTilingIteratorTest,
1.f, // current contents scale
gfx::Transform(), // last screen transform
gfx::Transform(), // current screen transform
- 2, // current frame number
- 2.0, // current frame time
+ 1.0, // current frame time
false, // store screen space quads on tiles
1); // max tiles in tile manager
@@ -646,5 +649,64 @@ TEST_F(PictureLayerTilingIteratorTest,
VerifyTiles(1.f, gfx::Rect(), base::Bind(&TileExists, false));
}
+TEST_F(PictureLayerTilingIteratorTest, Clone) {
+ gfx::Size layer_bounds(1099, 801);
+ Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
+
+ VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
+
+ tiling_->UpdateTilePriorities(
+ PENDING_TREE,
+ layer_bounds, // device viewport
+ gfx::Rect(layer_bounds), // viewport in layer space
+ gfx::Rect(layer_bounds), // visible content rect
+ layer_bounds, // last layer bounds
+ layer_bounds, // current layer bounds
+ 1.f, // last contents scale
+ 1.f, // current contents scale
+ gfx::Transform(), // last screen transform
+ gfx::Transform(), // current screen transform
+ 1.0, // current frame time
+ false, // store screen space quads on tiles
+ 10000); // max tiles in tile manager
+ tiling_->set_resolution(HIGH_RESOLUTION);
+
+ // The pending tiling has tiles now.
+ VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
+ EXPECT_EQ(HIGH_RESOLUTION, tiling_->resolution());
+
+ // Clone to the active tiling.
+ scoped_ptr<PictureLayerTiling> active_tiling =
+ tiling_->Clone(layer_bounds, &client_);
+
+ // The active tiling starts with no tiles.
+ VerifyTiles(active_tiling.get(),
+ 1.f,
+ gfx::Rect(layer_bounds),
+ base::Bind(&TileExists, false));
+ EXPECT_EQ(HIGH_RESOLUTION, tiling_->resolution());
+
+ // UpdateTilePriorities on the active tiling at the same frame time. The
+ // active tiling should get tiles.
+ active_tiling->UpdateTilePriorities(
+ PENDING_TREE,
+ layer_bounds, // device viewport
+ gfx::Rect(layer_bounds), // viewport in layer space
+ gfx::Rect(layer_bounds), // visible content rect
+ layer_bounds, // last layer bounds
+ layer_bounds, // current layer bounds
+ 1.f, // last contents scale
+ 1.f, // current contents scale
+ gfx::Transform(), // last screen transform
+ gfx::Transform(), // current screen transform
+ 1.0, // current frame time
+ false, // store screen space quads on tiles
+ 10000); // max tiles in tile manager
+ VerifyTiles(active_tiling.get(),
+ 1.f,
+ gfx::Rect(layer_bounds),
+ base::Bind(&TileExists, true));
+}
+
} // namespace
} // namespace cc

Powered by Google App Engine
This is Rietveld 408576698