Chromium Code Reviews| 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..5b037c2199adce848858b8b670c0a78c5dcb5418 100644 |
| --- a/cc/tiles/tile_manager_unittest.cc |
| +++ b/cc/tiles/tile_manager_unittest.cc |
| @@ -1452,6 +1452,50 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterQueueAllUsesCorrectTileBounds) { |
| } |
| } |
| +TEST_F(TileManagerTilePriorityQueueTest, NoRasterTasksforSolidColorTiles) { |
| + gfx::Size size(10, 10); |
| + const gfx::Size layer_bounds(10, 10); |
| + |
| + 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); |
| + 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(size), // Visible rect. |
| + gfx::Rect(size), // Skewport rect. |
| + gfx::Rect(size), // Soon rect. |
| + gfx::Rect(size)); // 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]; |
| + 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: |
| @@ -1576,12 +1620,42 @@ TEST_F(TileManagerTest, AllWorkFinishedTest) { |
| } |
| TEST_F(TileManagerTest, ActivateAndDrawWhenOOM) { |
|
vmpstr
2016/01/07 22:36:02
It's actually kind of nice that this fails now, si
sohanjg
2016/01/08 11:47:56
OK. i will remove these changes to draw a non-soli
|
| - SetupDefaultTrees(gfx::Size(1000, 1000)); |
| + gfx::Size size(10, 10); |
| + const gfx::Size layer_bounds(10, 10); |
| auto global_state = host_impl_->global_tile_state(); |
| global_state.hard_memory_limit_in_bytes = 1u; |
| global_state.soft_memory_limit_in_bytes = 1u; |
| + scoped_ptr<FakeDisplayListRecordingSource> recording_source = |
| + FakeDisplayListRecordingSource::CreateFilledRecordingSource(layer_bounds); |
| + |
| + 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(layer_bounds), |
| + 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 = |
| + PictureLayerImpl::Create(host_impl_->active_tree(), 1, false, nullptr); |
| + PictureLayerTilingSet* tiling_set = layer->picture_layer_tiling_set(); |
| + |
| + auto* tiling = tiling_set->AddTiling(1.0f, raster_source); |
| + tiling->set_resolution(HIGH_RESOLUTION); |
| + tiling->CreateAllTilesForTesting(); |
| + tiling->SetTilePriorityRectsForTesting(gfx::Rect(size), // Visible rect. |
| + gfx::Rect(size), // Skewport rect. |
| + gfx::Rect(size), // Soon rect. |
| + gfx::Rect(size)); // Eventually rect. |
| + |
| { |
| base::RunLoop run_loop; |
| EXPECT_FALSE(host_impl_->tile_manager()->HasScheduledTileTasksForTesting()); |