| Index: cc/layers/picture_layer_impl_unittest.cc
|
| diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc
|
| index 600f3e24851a20f88b956998bfbe3755c48f2b73..f00b2e45b82f7270d7e412a9f6a338beef887a97 100644
|
| --- a/cc/layers/picture_layer_impl_unittest.cc
|
| +++ b/cc/layers/picture_layer_impl_unittest.cc
|
| @@ -240,7 +240,7 @@ class PictureLayerImplTest : public testing::Test {
|
| layer->draw_properties().screen_space_transform_is_animating =
|
| animating_transform_to_screen;
|
| bool resourceless_software_draw = false;
|
| - layer->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + layer->UpdateTiles(resourceless_software_draw);
|
| }
|
| static void VerifyAllTilesExistAndHavePile(
|
| const PictureLayerTiling* tiling,
|
| @@ -332,8 +332,11 @@ TEST_F(PictureLayerImplTest, TileGridAlignment) {
|
|
|
| scoped_refptr<FakePicturePileImpl> pending_pile =
|
| FakePicturePileImpl::CreateFilledPile(layer_size, layer_size);
|
| +
|
| + scoped_ptr<FakePicturePile> active_recording =
|
| + FakePicturePile::CreateFilledPile(layer_size, layer_size);
|
| scoped_refptr<FakePicturePileImpl> active_pile =
|
| - FakePicturePileImpl::CreateFilledPile(layer_size, layer_size);
|
| + FakePicturePileImpl::CreateFromPile(active_recording.get(), nullptr);
|
|
|
| SetupTrees(pending_pile, active_pile);
|
|
|
| @@ -347,18 +350,22 @@ TEST_F(PictureLayerImplTest, TileGridAlignment) {
|
| for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) {
|
| gfx::Point tile_center = (*tile_iter)->content_rect().CenterPoint();
|
| gfx::Rect rect(tile_center.x(), tile_center.y(), 1, 1);
|
| - active_pile->add_draw_rect(rect);
|
| + active_recording->add_draw_rect(rect);
|
| rects.push_back(SkRect::MakeXYWH(rect.x(), rect.y(), 1, 1));
|
| }
|
| +
|
| // Force re-raster with newly injected content
|
| - active_pile->RemoveRecordingAt(0, 0);
|
| - active_pile->AddRecordingAt(0, 0);
|
| + active_recording->RemoveRecordingAt(0, 0);
|
| + active_recording->AddRecordingAt(0, 0);
|
| +
|
| + scoped_refptr<FakePicturePileImpl> updated_active_pile =
|
| + FakePicturePileImpl::CreateFromPile(active_recording.get(), nullptr);
|
|
|
| std::vector<SkRect>::const_iterator rect_iter = rects.begin();
|
| for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) {
|
| MockCanvas mock_canvas(1000, 1000);
|
| - active_pile->PlaybackToSharedCanvas(&mock_canvas,
|
| - (*tile_iter)->content_rect(), 1.0f);
|
| + updated_active_pile->PlaybackToSharedCanvas(
|
| + &mock_canvas, (*tile_iter)->content_rect(), 1.0f);
|
|
|
| // This test verifies that when drawing the contents of a specific tile
|
| // at content scale 1.0, the playback canvas never receives content from
|
| @@ -516,7 +523,7 @@ TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
|
| resourceless_software_draw);
|
| active_layer_->draw_properties().visible_content_rect = viewport;
|
| active_layer_->draw_properties().screen_space_transform = transform;
|
| - active_layer_->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + active_layer_->UpdateTiles(resourceless_software_draw);
|
|
|
| gfx::Rect visible_rect_for_tile_priority =
|
| active_layer_->visible_rect_for_tile_priority();
|
| @@ -540,7 +547,7 @@ TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
|
| viewport,
|
| transform,
|
| resourceless_software_draw);
|
| - active_layer_->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + active_layer_->UpdateTiles(resourceless_software_draw);
|
|
|
| // Transform for tile priority is updated.
|
| EXPECT_TRANSFORMATION_MATRIX_EQ(transform,
|
| @@ -560,7 +567,7 @@ TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
|
| viewport,
|
| transform,
|
| resourceless_software_draw);
|
| - active_layer_->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + active_layer_->UpdateTiles(resourceless_software_draw);
|
|
|
| EXPECT_TRANSFORMATION_MATRIX_EQ(transform,
|
| active_layer_->screen_space_transform());
|
| @@ -1616,7 +1623,7 @@ TEST_F(PictureLayerImplTest, DisallowTileDrawQuads) {
|
|
|
| AppendQuadsData data;
|
| active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, nullptr);
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
| active_layer_->DidDraw(nullptr);
|
|
|
| ASSERT_EQ(1U, render_pass->quad_list.size());
|
| @@ -1631,13 +1638,14 @@ TEST_F(PictureLayerImplTest, SolidColorLayerHasVisibleFullCoverage) {
|
| gfx::Size layer_bounds(1500, 1500);
|
| gfx::Rect visible_rect(250, 250, 1000, 1000);
|
|
|
| + scoped_ptr<FakePicturePile> empty_recording =
|
| + FakePicturePile::CreateEmptyPile(tile_size, layer_bounds);
|
| + empty_recording->SetIsSolidColor(true);
|
| +
|
| scoped_refptr<FakePicturePileImpl> pending_pile =
|
| - FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds);
|
| + FakePicturePileImpl::CreateFromPile(empty_recording.get(), nullptr);
|
| scoped_refptr<FakePicturePileImpl> active_pile =
|
| - FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds);
|
| -
|
| - pending_pile->set_is_solid_color(true);
|
| - active_pile->set_is_solid_color(true);
|
| + FakePicturePileImpl::CreateFromPile(empty_recording.get(), nullptr);
|
|
|
| SetupTrees(pending_pile, active_pile);
|
|
|
| @@ -1645,7 +1653,7 @@ TEST_F(PictureLayerImplTest, SolidColorLayerHasVisibleFullCoverage) {
|
|
|
| AppendQuadsData data;
|
| active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
| active_layer_->DidDraw(nullptr);
|
|
|
| Region remaining = visible_rect;
|
| @@ -1663,13 +1671,11 @@ TEST_F(PictureLayerImplTest, TileScalesWithSolidColorPile) {
|
| gfx::Size tile_size(host_impl_.settings().default_tile_size);
|
| scoped_refptr<FakePicturePileImpl> pending_pile =
|
| FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings(
|
| - tile_size, layer_bounds);
|
| + tile_size, layer_bounds, false);
|
| scoped_refptr<FakePicturePileImpl> active_pile =
|
| FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings(
|
| - tile_size, layer_bounds);
|
| + tile_size, layer_bounds, true);
|
|
|
| - pending_pile->set_is_solid_color(false);
|
| - active_pile->set_is_solid_color(true);
|
| SetupTrees(pending_pile, active_pile);
|
| // Solid color pile should not allow tilings at any scale.
|
| EXPECT_FALSE(active_layer_->CanHaveTilings());
|
| @@ -1707,7 +1713,7 @@ TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) {
|
| time_ticks += base::TimeDelta::FromMilliseconds(1);
|
| host_impl_.SetCurrentBeginFrameArgs(
|
| CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
|
| - pending_layer_->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + pending_layer_->UpdateTiles(resourceless_software_draw);
|
|
|
| int num_visible = 0;
|
| int num_offscreen = 0;
|
| @@ -1773,7 +1779,7 @@ TEST_F(NoLowResPictureLayerImplTest,
|
| time_ticks += base::TimeDelta::FromMilliseconds(200);
|
| host_impl_.SetCurrentBeginFrameArgs(
|
| CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, time_ticks));
|
| - pending_layer_->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + pending_layer_->UpdateTiles(resourceless_software_draw);
|
|
|
| // Intersect the two rects. Any tile outside should not be required for
|
| // activation.
|
| @@ -1811,7 +1817,7 @@ TEST_F(NoLowResPictureLayerImplTest,
|
| scoped_ptr<RenderPass> render_pass = RenderPass::Create();
|
| AppendQuadsData data;
|
| active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
| active_layer_->DidDraw(nullptr);
|
|
|
| // All tiles in activation rect is ready to draw.
|
| @@ -1843,7 +1849,7 @@ TEST_F(PictureLayerImplTest, HighResTileIsComplete) {
|
| scoped_ptr<RenderPass> render_pass = RenderPass::Create();
|
| AppendQuadsData data;
|
| active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
| active_layer_->DidDraw(nullptr);
|
|
|
| // All high res tiles drew, nothing was incomplete.
|
| @@ -1870,7 +1876,7 @@ TEST_F(PictureLayerImplTest, HighResTileIsIncomplete) {
|
| scoped_ptr<RenderPass> render_pass = RenderPass::Create();
|
| AppendQuadsData data;
|
| active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
| active_layer_->DidDraw(nullptr);
|
|
|
| EXPECT_EQ(1u, render_pass->quad_list.size());
|
| @@ -1900,7 +1906,7 @@ TEST_F(PictureLayerImplTest, HighResTileIsIncompleteLowResComplete) {
|
| scoped_ptr<RenderPass> render_pass = RenderPass::Create();
|
| AppendQuadsData data;
|
| active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
| active_layer_->DidDraw(nullptr);
|
|
|
| EXPECT_EQ(1u, render_pass->quad_list.size());
|
| @@ -1937,7 +1943,7 @@ TEST_F(PictureLayerImplTest, LowResTileIsIncomplete) {
|
| scoped_ptr<RenderPass> render_pass = RenderPass::Create();
|
| AppendQuadsData data;
|
| active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
| active_layer_->DidDraw(nullptr);
|
|
|
| // The missing high res tile was replaced by a low res tile.
|
| @@ -1995,7 +2001,7 @@ TEST_F(PictureLayerImplTest,
|
| scoped_ptr<RenderPass> render_pass = RenderPass::Create();
|
| AppendQuadsData data;
|
| active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
| active_layer_->DidDraw(nullptr);
|
|
|
| // All high res tiles drew, and the one ideal res tile drew.
|
| @@ -2105,9 +2111,10 @@ TEST_F(PictureLayerImplTest, NothingRequiredIfActiveMissingTiles) {
|
| // tiles. This is attempting to simulate scrolling past the end of recorded
|
| // content on the active layer, where the recordings are so far away that
|
| // no tiles are created.
|
| + bool is_solid_color = false;
|
| scoped_refptr<FakePicturePileImpl> active_pile =
|
| FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings(
|
| - tile_size, layer_bounds);
|
| + tile_size, layer_bounds, is_solid_color);
|
|
|
| SetupTreesWithFixedTileSize(pending_pile, active_pile, tile_size, Region());
|
|
|
| @@ -2597,7 +2604,7 @@ TEST_F(DeferredInitPictureLayerImplTest, PreventUpdateTilesDuringLostContext) {
|
| FakeOutputSurface* fake_output_surface =
|
| static_cast<FakeOutputSurface*>(host_impl_.output_surface());
|
| ASSERT_TRUE(fake_output_surface->InitializeAndSetContext3d(
|
| - TestContextProvider::Create()));
|
| + TestContextProvider::Create(), TestContextProvider::Create()));
|
|
|
| // These will crash PictureLayerImpl if this is not true.
|
| ASSERT_TRUE(host_impl_.pending_tree()->needs_update_draw_properties());
|
| @@ -2928,7 +2935,7 @@ TEST_F(PictureLayerImplTest, TilingSetRasterQueue) {
|
| pending_layer_->draw_properties().visible_content_rect =
|
| gfx::Rect(1100, 1100, 500, 500);
|
| bool resourceless_software_draw = false;
|
| - pending_layer_->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + pending_layer_->UpdateTiles(resourceless_software_draw);
|
|
|
| unique_tiles.clear();
|
| high_res_tile_count = 0u;
|
| @@ -2959,7 +2966,7 @@ TEST_F(PictureLayerImplTest, TilingSetRasterQueue) {
|
|
|
| pending_layer_->draw_properties().visible_content_rect =
|
| gfx::Rect(0, 0, 500, 500);
|
| - pending_layer_->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + pending_layer_->UpdateTiles(resourceless_software_draw);
|
|
|
| std::vector<Tile*> high_res_tiles =
|
| pending_layer_->HighResTiling()->AllTilesForTesting();
|
| @@ -3030,10 +3037,13 @@ TEST_F(PictureLayerImplTest, TilingSetRasterQueueActiveTree) {
|
| }
|
|
|
| TEST_F(PictureLayerImplTest, TilingSetRasterQueueRequiredNoHighRes) {
|
| + scoped_ptr<FakePicturePile> empty_recording =
|
| + FakePicturePile::CreateEmptyPile(gfx::Size(256, 256),
|
| + gfx::Size(1024, 1024));
|
| + empty_recording->SetIsSolidColor(true);
|
| +
|
| scoped_refptr<FakePicturePileImpl> pending_pile =
|
| - FakePicturePileImpl::CreateEmptyPile(gfx::Size(256, 256),
|
| - gfx::Size(1024, 1024));
|
| - pending_pile->set_is_solid_color(true);
|
| + FakePicturePileImpl::CreateFromPile(empty_recording.get(), nullptr);
|
|
|
| SetupPendingTree(pending_pile);
|
| EXPECT_FALSE(
|
| @@ -3144,8 +3154,6 @@ TEST_F(PictureLayerImplTest, TilingSetEvictionQueue) {
|
|
|
| if (tile->required_for_activation() ==
|
| last_tile->required_for_activation() &&
|
| - priority.priority_bin ==
|
| - last_tile->priority(PENDING_TREE).priority_bin &&
|
| std::abs(tile->contents_scale() - last_tile->contents_scale()) <
|
| std::numeric_limits<float>::epsilon()) {
|
| if (priority.distance_to_visible <=
|
| @@ -3523,9 +3531,10 @@ TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) {
|
| // tiles. This is attempting to simulate scrolling past the end of recorded
|
| // content on the active layer, where the recordings are so far away that
|
| // no tiles are created.
|
| + bool is_solid_color = false;
|
| scoped_refptr<FakePicturePileImpl> active_pile =
|
| FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings(
|
| - tile_size, layer_bounds);
|
| + tile_size, layer_bounds, is_solid_color);
|
|
|
| SetupTreesWithFixedTileSize(pending_pile, active_pile, tile_size, Region());
|
|
|
| @@ -3578,7 +3587,7 @@ TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
|
| resourceless_software_draw);
|
| active_layer_->draw_properties().visible_content_rect = viewport;
|
| active_layer_->draw_properties().screen_space_transform = transform;
|
| - active_layer_->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + active_layer_->UpdateTiles(resourceless_software_draw);
|
|
|
| gfx::Rect visible_rect_for_tile_priority =
|
| active_layer_->visible_rect_for_tile_priority();
|
| @@ -3602,7 +3611,7 @@ TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
|
| viewport,
|
| transform,
|
| resourceless_software_draw);
|
| - active_layer_->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + active_layer_->UpdateTiles(resourceless_software_draw);
|
|
|
| // Transform for tile priority is updated.
|
| EXPECT_TRANSFORMATION_MATRIX_EQ(transform,
|
| @@ -3622,7 +3631,7 @@ TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
|
| viewport,
|
| transform,
|
| resourceless_software_draw);
|
| - active_layer_->UpdateTiles(Occlusion(), resourceless_software_draw);
|
| + active_layer_->UpdateTiles(resourceless_software_draw);
|
|
|
| EXPECT_TRANSFORMATION_MATRIX_EQ(transform,
|
| active_layer_->screen_space_transform());
|
| @@ -3803,7 +3812,7 @@ TEST_F(PictureLayerImplTest, SharedQuadStateContainsMaxTilingScale) {
|
| SK_MScalar1 / max_contents_scale);
|
|
|
| AppendQuadsData data;
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
|
|
| // SharedQuadState should have be of size 1, as we are doing AppenQuad once.
|
| EXPECT_EQ(1u, render_pass->shared_quad_state_list.size());
|
| @@ -3869,7 +3878,7 @@ TEST_F(PictureLayerImplTestWithDelegatingRenderer,
|
| scoped_ptr<RenderPass> render_pass = RenderPass::Create();
|
| AppendQuadsData data;
|
| active_layer_->WillDraw(DRAW_MODE_HARDWARE, nullptr);
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
| active_layer_->DidDraw(nullptr);
|
|
|
| // Even when OOM, quads should be produced, and should be different material
|
| @@ -3971,8 +3980,7 @@ class OcclusionTrackingPictureLayerImplTest : public PictureLayerImplTest {
|
| tile->is_occluded(twin_tree)) {
|
| EXPECT_TRUE(tile->is_occluded(tree));
|
| EXPECT_FALSE(tile->is_occluded(twin_tree));
|
| - EXPECT_FALSE(
|
| - tile->is_occluded_for_tree_priority(tree_priority));
|
| + EXPECT_FALSE(tile->is_occluded_combined());
|
| } else if (priority.distance_to_visible !=
|
| twin_priority.distance_to_visible) {
|
| EXPECT_LT(priority_for_tree_priority.distance_to_visible,
|
| @@ -4685,7 +4693,7 @@ void PictureLayerImplTest::TestQuadsForSolidColor(bool test_for_solid) {
|
| scoped_ptr<RenderPass> render_pass = RenderPass::Create();
|
| AppendQuadsData data;
|
| active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
|
| - active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data);
|
| + active_layer_->AppendQuads(render_pass.get(), &data);
|
| active_layer_->DidDraw(nullptr);
|
|
|
| DrawQuad::Material expected = test_for_solid
|
| @@ -4822,12 +4830,15 @@ TEST_F(PictureLayerImplTest, CloneMissingRecordings) {
|
|
|
| scoped_refptr<FakePicturePileImpl> filled_pile =
|
| FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
|
| - scoped_refptr<FakePicturePileImpl> partial_pile =
|
| - FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds);
|
| - for (int i = 1; i < partial_pile->tiling().num_tiles_x(); ++i) {
|
| - for (int j = 1; j < partial_pile->tiling().num_tiles_y(); ++j)
|
| - partial_pile->AddRecordingAt(i, j);
|
| +
|
| + scoped_ptr<FakePicturePile> partial_recording =
|
| + FakePicturePile::CreateEmptyPile(tile_size, layer_bounds);
|
| + for (int i = 1; i < partial_recording->tiling().num_tiles_x(); ++i) {
|
| + for (int j = 1; j < partial_recording->tiling().num_tiles_y(); ++j)
|
| + partial_recording->AddRecordingAt(i, j);
|
| }
|
| + scoped_refptr<FakePicturePileImpl> partial_pile =
|
| + FakePicturePileImpl::CreateFromPile(partial_recording.get(), nullptr);
|
|
|
| SetupPendingTreeWithFixedTileSize(filled_pile, tile_size, Region());
|
| ActivateTree();
|
|
|