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 |