| Index: cc/tiles/tile_manager_unittest.cc
|
| diff --git a/cc/tiles/tile_manager_unittest.cc b/cc/tiles/tile_manager_unittest.cc
|
| index ff67be2c6e13a813ffbed0998046a0c44ba4bca4..18013899a699594b4370b3fc9fffe323e81690c8 100644
|
| --- a/cc/tiles/tile_manager_unittest.cc
|
| +++ b/cc/tiles/tile_manager_unittest.cc
|
| @@ -1452,6 +1452,65 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterQueueAllUsesCorrectTileBounds) {
|
| }
|
| }
|
|
|
| +TEST_F(TileManagerTilePriorityQueueTest, NoRasterTasksforSolidColorTiles) {
|
| + gfx::Size size(10, 10);
|
| + const gfx::Size layer_bounds(1000, 1000);
|
| +
|
| + scoped_ptr<FakeDisplayListRecordingSource> recording_source =
|
| + FakeDisplayListRecordingSource::CreateFilledRecordingSource(layer_bounds);
|
| +
|
| + SkPaint solid_paint;
|
| + SkColor solid_color = SkColorSetARGB(255, 12, 23, 34);
|
| + solid_paint.setColor(solid_color);
|
| + recording_source->add_draw_rect_with_paint(gfx::Rect(layer_bounds),
|
| + solid_paint);
|
| +
|
| + // Create non solid tile as well, otherwise tilings wouldnt be created.
|
| + SkColor non_solid_color = SkColorSetARGB(128, 45, 56, 67);
|
| + SkPaint non_solid_paint;
|
| + non_solid_paint.setColor(non_solid_color);
|
| +
|
| + recording_source->add_draw_rect_with_paint(gfx::Rect(0, 0, 10, 10),
|
| + non_solid_paint);
|
| + recording_source->Rerecord();
|
| +
|
| + scoped_refptr<DisplayListRasterSource> raster_source =
|
| + DisplayListRasterSource::CreateFromDisplayListRecordingSource(
|
| + recording_source.get(), false);
|
| +
|
| + FakePictureLayerTilingClient tiling_client;
|
| + tiling_client.SetTileSize(size);
|
| +
|
| + scoped_ptr<PictureLayerImpl> layer_impl =
|
| + PictureLayerImpl::Create(host_impl_.active_tree(), 1, false, nullptr);
|
| + PictureLayerTilingSet* tiling_set = layer_impl->picture_layer_tiling_set();
|
| +
|
| + PictureLayerTiling* tiling = tiling_set->AddTiling(1.0f, raster_source);
|
| + tiling->set_resolution(HIGH_RESOLUTION);
|
| + tiling->CreateAllTilesForTesting();
|
| + tiling->SetTilePriorityRectsForTesting(
|
| + gfx::Rect(layer_bounds), // Visible rect.
|
| + gfx::Rect(layer_bounds), // Skewport rect.
|
| + gfx::Rect(layer_bounds), // Soon rect.
|
| + gfx::Rect(layer_bounds)); // Eventually rect.
|
| +
|
| + host_impl_.tile_manager()->PrepareTiles(host_impl_.global_tile_state());
|
| +
|
| + std::vector<Tile*> tiles = tiling->AllTilesForTesting();
|
| + for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
|
| + Tile* tile = tiles[tile_idx];
|
| + if (tile->id() == 1) {
|
| + // Non-solid tile.
|
| + EXPECT_TRUE(tile->HasRasterTask());
|
| + EXPECT_EQ(TileDrawInfo::RESOURCE_MODE, tile->draw_info().mode());
|
| + } else {
|
| + EXPECT_FALSE(tile->HasRasterTask());
|
| + EXPECT_EQ(TileDrawInfo::SOLID_COLOR_MODE, tile->draw_info().mode());
|
| + EXPECT_EQ(solid_color, tile->draw_info().solid_color());
|
| + }
|
| + }
|
| +}
|
| +
|
| // TODO(vmpstr): Merge TileManagerTest and TileManagerTilePriorityQueueTest.
|
| class TileManagerTest : public testing::Test {
|
| public:
|
|
|