diff options
-rw-r--r-- | cc/resources/picture_layer_tiling.cc | 2 | ||||
-rw-r--r-- | cc/resources/picture_layer_tiling.h | 7 | ||||
-rw-r--r-- | cc/resources/picture_layer_tiling_unittest.cc | 34 |
3 files changed, 43 insertions, 0 deletions
diff --git a/cc/resources/picture_layer_tiling.cc b/cc/resources/picture_layer_tiling.cc index 1bbe513..d281054 100644 --- a/cc/resources/picture_layer_tiling.cc +++ b/cc/resources/picture_layer_tiling.cc @@ -398,6 +398,8 @@ gfx::Size PictureLayerTiling::CoverageIterator::texture_size() const { void PictureLayerTiling::Reset() { live_tiles_rect_ = gfx::Rect(); + for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) + ReleaseTile(it->second.get(), client_->GetTree()); tiles_.clear(); } diff --git a/cc/resources/picture_layer_tiling.h b/cc/resources/picture_layer_tiling.h index 7444d1e..a9b38a6 100644 --- a/cc/resources/picture_layer_tiling.h +++ b/cc/resources/picture_layer_tiling.h @@ -166,6 +166,13 @@ class CC_EXPORT PictureLayerTiling { return all_tiles; } + std::vector<scoped_refptr<Tile> > AllRefTilesForTesting() const { + std::vector<scoped_refptr<Tile> > all_tiles; + for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) + all_tiles.push_back(it->second); + return all_tiles; + } + const gfx::Rect& GetCurrentVisibleRectForTesting() const { return current_visible_rect_; } diff --git a/cc/resources/picture_layer_tiling_unittest.cc b/cc/resources/picture_layer_tiling_unittest.cc index 5cd4b73..22e55e6 100644 --- a/cc/resources/picture_layer_tiling_unittest.cc +++ b/cc/resources/picture_layer_tiling_unittest.cc @@ -1886,5 +1886,39 @@ TEST(UpdateTilePrioritiesTest, RotationMotion) { EXPECT_EQ(TilePriority::NOW, priority.priority_bin); } +TEST(PictureLayerTilingTest, ResetClearsPriorities) { + FakePictureLayerTilingClient client; + scoped_ptr<TestablePictureLayerTiling> tiling; + + client.SetTileSize(gfx::Size(100, 100)); + client.set_tree(ACTIVE_TREE); + tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale + gfx::Size(100, 100), + &client); + tiling->UpdateTilePriorities(ACTIVE_TREE, + gfx::Rect(0, 0, 100, 100), + 1.0f, + 1.0f, + NULL, // occlusion tracker + NULL, // render target + gfx::Transform()); // draw transform + + std::vector<scoped_refptr<Tile> > tiles = tiling->AllRefTilesForTesting(); + ASSERT_GT(tiles.size(), 0u); + for (std::vector<scoped_refptr<Tile> >::const_iterator it = tiles.begin(); + it != tiles.end(); + ++it) { + EXPECT_NE(TilePriority(), (*it)->priority(ACTIVE_TREE)); + } + + tiling->Reset(); + for (std::vector<scoped_refptr<Tile> >::const_iterator it = tiles.begin(); + it != tiles.end(); + ++it) { + EXPECT_EQ(TilePriority(), (*it)->priority(ACTIVE_TREE)); + } + tiles.clear(); +} + } // namespace } // namespace cc |