| 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 5e29b826275064786933a743a10812754c712c7c..a17c02504f0a0cb12f7838e4276475acd89667be 100644
|
| --- a/cc/resources/picture_layer_tiling_unittest.cc
|
| +++ b/cc/resources/picture_layer_tiling_unittest.cc
|
| @@ -421,6 +421,7 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExist) {
|
| ACTIVE_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
|
| @@ -438,6 +439,7 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExist) {
|
| ACTIVE_TREE,
|
| layer_bounds, // device viewport
|
| gfx::Rect(), // viewport in layer space
|
| + gfx::Rect(), // visible content rect
|
| layer_bounds, // last layer bounds
|
| layer_bounds, // current layer bounds
|
| 1.f, // last contents scale
|
| @@ -451,5 +453,154 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExist) {
|
| VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
|
| }
|
|
|
| +TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) {
|
| + gfx::Size layer_bounds(1099, 801);
|
| + Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
|
| + VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
|
| + VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
|
| +
|
| + gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000);
|
| +
|
| + tiling_->UpdateTilePriorities(
|
| + ACTIVE_TREE,
|
| + layer_bounds, // device viewport
|
| + giant_rect, // 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, // current frame number
|
| + 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));
|
| +
|
| + // If the visible content rect is empty, it should still have live tiles.
|
| + tiling_->UpdateTilePriorities(
|
| + ACTIVE_TREE,
|
| + layer_bounds, // device viewport
|
| + giant_rect, // viewport in layer space
|
| + gfx::Rect(), // 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
|
| + 2, // current frame number
|
| + 2.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));
|
| +}
|
| +
|
| +TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) {
|
| + gfx::Size layer_bounds(1099, 801);
|
| + Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
|
| + VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
|
| + VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
|
| +
|
| + // This rect does not intersect with the layer, as the layer is outside the
|
| + // viewport.
|
| + gfx::Rect viewport_rect(1100, 0, 1000, 1000);
|
| + EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds)));
|
| +
|
| + tiling_->UpdateTilePriorities(
|
| + ACTIVE_TREE,
|
| + layer_bounds, // device viewport
|
| + viewport_rect, // viewport in layer space
|
| + gfx::Rect(), // 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
|
| + 2, // current frame number
|
| + 2.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));
|
| +}
|
| +
|
| +static void TilesIntersectingRectExist(gfx::Rect rect, Tile* tile) {
|
| + ASSERT_TRUE(tile != NULL);
|
| + bool expected_live = rect.Intersects(tile->content_rect());
|
| + EXPECT_EQ(expected_live, tile->priority(ACTIVE_TREE).is_live) <<
|
| + "Rects intersecting " << rect.ToString() << " should exist. " <<
|
| + "Current tile rect is " << tile->content_rect().ToString();
|
| +}
|
| +
|
| +TEST_F(PictureLayerTilingIteratorTest,
|
| + TilesExistLargeViewportAndLayerWithSmallVisibleArea) {
|
| + gfx::Size layer_bounds(10000, 10000);
|
| + Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
|
| + VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
|
| + VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
|
| +
|
| + gfx::Rect visible_rect(8000, 8000, 50, 50);
|
| +
|
| + tiling_->UpdateTilePriorities(
|
| + ACTIVE_TREE,
|
| + layer_bounds, // device viewport
|
| + gfx::Rect(layer_bounds), // viewport in layer space
|
| + visible_rect, // 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
|
| + 2, // current frame number
|
| + 2.0, // current frame time
|
| + false, // store screen space quads on tiles
|
| + 1); // max tiles in tile manager
|
| + VerifyTiles(1.f,
|
| + gfx::Rect(layer_bounds),
|
| + base::Bind(&TilesIntersectingRectExist, visible_rect));
|
| +}
|
| +
|
| +static void CountExistingTiles(int *count, Tile* tile) {
|
| + ASSERT_TRUE(tile != NULL);
|
| + if (tile->priority(ACTIVE_TREE).is_live)
|
| + ++(*count);
|
| +}
|
| +
|
| +TEST_F(PictureLayerTilingIteratorTest,
|
| + TilesExistLargeViewportAndLayerWithLargeVisibleArea) {
|
| + gfx::Size layer_bounds(10000, 10000);
|
| + Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
|
| + VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
|
| + VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
|
| +
|
| +
|
| + tiling_->UpdateTilePriorities(
|
| + ACTIVE_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
|
| + 2, // current frame number
|
| + 2.0, // current frame time
|
| + false, // store screen space quads on tiles
|
| + 1); // max tiles in tile manager
|
| +
|
| + int num_tiles = 0;
|
| + VerifyTiles(1.f,
|
| + gfx::Rect(layer_bounds),
|
| + base::Bind(&CountExistingTiles, &num_tiles));
|
| + // If we're making a rect the size of one tile, it can only overlap up to 4
|
| + // tiles depending on its position.
|
| + EXPECT_LE(num_tiles, 4);
|
| +}
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|