| 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 5d16d8f69195376bacd0762e82a79eab4a4a1ae4..dd3c35fe70c667b295bca3913478cd2a884768ed 100644
|
| --- a/cc/layers/picture_layer_impl_unittest.cc
|
| +++ b/cc/layers/picture_layer_impl_unittest.cc
|
| @@ -267,14 +267,13 @@ class PictureLayerImplTest : public testing::Test {
|
| host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
|
| }
|
|
|
| - void SetupDrawPropertiesAndUpdateTiles(
|
| - FakePictureLayerImpl* layer,
|
| - float ideal_contents_scale,
|
| - float device_scale_factor,
|
| - float page_scale_factor,
|
| - float maximum_animation_contents_scale,
|
| - float starting_animation_contents_scale,
|
| - bool animating_transform_to_screen) {
|
| + void SetupDrawProperties(FakePictureLayerImpl* layer,
|
| + float ideal_contents_scale,
|
| + float device_scale_factor,
|
| + float page_scale_factor,
|
| + float maximum_animation_contents_scale,
|
| + float starting_animation_contents_scale,
|
| + bool animating_transform_to_screen) {
|
| layer->layer_tree_impl()->SetDeviceScaleFactor(device_scale_factor);
|
| host_impl_.active_tree()->SetPageScaleOnActiveTree(page_scale_factor);
|
|
|
| @@ -288,9 +287,24 @@ class PictureLayerImplTest : public testing::Test {
|
| starting_animation_contents_scale;
|
| layer->draw_properties().screen_space_transform_is_animating =
|
| animating_transform_to_screen;
|
| + }
|
| +
|
| + void SetupDrawPropertiesAndUpdateTiles(
|
| + FakePictureLayerImpl* layer,
|
| + float ideal_contents_scale,
|
| + float device_scale_factor,
|
| + float page_scale_factor,
|
| + float maximum_animation_contents_scale,
|
| + float starting_animation_contents_scale,
|
| + bool animating_transform_to_screen) {
|
| + SetupDrawProperties(layer, ideal_contents_scale, device_scale_factor,
|
| + page_scale_factor, maximum_animation_contents_scale,
|
| + starting_animation_contents_scale,
|
| + animating_transform_to_screen);
|
| bool resourceless_software_draw = false;
|
| layer->UpdateTiles(resourceless_software_draw);
|
| }
|
| +
|
| static void VerifyAllPrioritizedTilesExistAndHaveRasterSource(
|
| const PictureLayerTiling* tiling,
|
| DisplayListRasterSource* raster_source) {
|
| @@ -546,87 +560,28 @@ TEST_F(PictureLayerImplTest, ExternalViewportRectForPrioritizingTiles) {
|
| }
|
| }
|
|
|
| -TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
|
| - host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
|
| +TEST_F(PictureLayerImplTest, SkipUpdateTilesInResourcelessDraw) {
|
| gfx::Size layer_bounds(400, 400);
|
| SetupDefaultTrees(layer_bounds);
|
|
|
| - SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f,
|
| - false);
|
| + float ideal_contents_scale = 1.f;
|
| + SetupDrawProperties(active_layer_, ideal_contents_scale, 1.f, 1.f, 1.f, 0.f,
|
| + false);
|
|
|
| - // UpdateTiles with valid viewport. Should update tile viewport.
|
| - // Note viewport is considered invalid if and only if in resourceless
|
| - // software draw.
|
| bool resourceless_software_draw = false;
|
| - gfx::Rect viewport = gfx::Rect(layer_bounds);
|
| - gfx::Transform draw_transform;
|
| - gfx::Transform tile_priority_transform;
|
| - host_impl_.SetExternalTilePriorityConstraints(viewport,
|
| - tile_priority_transform);
|
| - active_layer_->draw_properties().visible_layer_rect = viewport;
|
| - active_layer_->draw_properties().screen_space_transform = draw_transform;
|
| active_layer_->UpdateTiles(resourceless_software_draw);
|
| + EXPECT_EQ(ideal_contents_scale, active_layer_->ideal_contents_scale());
|
|
|
| - gfx::Rect visible_rect_for_tile_priority =
|
| - active_layer_->visible_rect_for_tile_priority();
|
| - EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
|
| - gfx::Transform screen_space_transform_for_tile_priority =
|
| - active_layer_->draw_properties().screen_space_transform;
|
| -
|
| - // Expand viewport and set it as invalid for prioritizing tiles.
|
| - // Should update viewport and transform, but not update visible rect.
|
| - host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
|
| + float new_ideal_contents_scale = 2.f;
|
| resourceless_software_draw = true;
|
| - viewport = gfx::ScaleToEnclosingRect(viewport, 2);
|
| - tile_priority_transform.Translate(1.f, 0.f);
|
| - draw_transform.Translate(0.f, 1.f);
|
| - active_layer_->draw_properties().visible_layer_rect = viewport;
|
| - active_layer_->draw_properties().screen_space_transform = draw_transform;
|
| - host_impl_.SetExternalTilePriorityConstraints(viewport,
|
| - tile_priority_transform);
|
| - active_layer_->UpdateTiles(resourceless_software_draw);
|
| + SetupDrawProperties(active_layer_, new_ideal_contents_scale, 1.f, 1.f, 1.f,
|
| + 0.f, false);
|
| + EXPECT_FALSE(active_layer_->UpdateTiles(resourceless_software_draw));
|
| + EXPECT_EQ(ideal_contents_scale, active_layer_->ideal_contents_scale());
|
|
|
| - // Transform for tile priority is not updated.
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(
|
| - screen_space_transform_for_tile_priority,
|
| - active_layer_->screen_space_transform_for_tile_priority());
|
| - // Visible rect for tile priority retains old value.
|
| - EXPECT_EQ(visible_rect_for_tile_priority,
|
| - active_layer_->visible_rect_for_tile_priority());
|
| - ASSERT_GT(active_layer_->picture_layer_tiling_set()->num_tilings(), 0u);
|
| - EXPECT_EQ(active_layer_->viewport_rect_for_tile_priority_in_content_space(),
|
| - active_layer_->picture_layer_tiling_set()
|
| - ->tiling_at(0)
|
| - ->GetCurrentVisibleRectForTesting());
|
| -
|
| - // Keep expanded viewport but mark it valid. Should update tile viewport.
|
| - host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
|
| resourceless_software_draw = false;
|
| - host_impl_.SetExternalTilePriorityConstraints(viewport,
|
| - tile_priority_transform);
|
| - active_layer_->UpdateTiles(resourceless_software_draw);
|
| -
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(
|
| - draw_transform,
|
| - active_layer_->screen_space_transform_for_tile_priority());
|
| - EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority());
|
| -
|
| - gfx::RectF visible_rect_in_content_space(viewport);
|
| - gfx::Transform inverse_draw_transform;
|
| - gfx::Transform inverse_tile_priority_transform;
|
| - EXPECT_TRUE(draw_transform.GetInverse(&inverse_draw_transform));
|
| - EXPECT_TRUE(
|
| - tile_priority_transform.GetInverse(&inverse_tile_priority_transform));
|
| - visible_rect_in_content_space = MathUtil::ProjectClippedRect(
|
| - inverse_tile_priority_transform, visible_rect_in_content_space);
|
| - visible_rect_in_content_space = MathUtil::ProjectClippedRect(
|
| - inverse_draw_transform, visible_rect_in_content_space);
|
| -
|
| - ASSERT_GT(active_layer_->picture_layer_tiling_set()->num_tilings(), 0u);
|
| - EXPECT_EQ(gfx::ToEnclosingRect(visible_rect_in_content_space),
|
| - active_layer_->picture_layer_tiling_set()
|
| - ->tiling_at(0)
|
| - ->GetCurrentVisibleRectForTesting());
|
| + EXPECT_TRUE(active_layer_->UpdateTiles(resourceless_software_draw));
|
| + EXPECT_EQ(new_ideal_contents_scale, active_layer_->ideal_contents_scale());
|
| }
|
|
|
| TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) {
|
| @@ -3669,60 +3624,6 @@ TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) {
|
| AssertNoTilesRequired(pending_layer_->LowResTiling());
|
| }
|
|
|
| -TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
|
| - host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
|
| - gfx::Size layer_bounds(400, 400);
|
| - SetupDefaultTrees(layer_bounds);
|
| -
|
| - SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f,
|
| - false);
|
| -
|
| - // UpdateTiles with valid viewport. Should update tile viewport.
|
| - // Note viewport is considered invalid if and only if in resourceless
|
| - // software draw.
|
| - bool resourceless_software_draw = false;
|
| - gfx::Rect viewport = gfx::Rect(layer_bounds);
|
| - gfx::Transform transform;
|
| - host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
|
| - active_layer_->draw_properties().visible_layer_rect = viewport;
|
| - active_layer_->draw_properties().screen_space_transform = transform;
|
| - active_layer_->UpdateTiles(resourceless_software_draw);
|
| -
|
| - gfx::Rect visible_rect_for_tile_priority =
|
| - active_layer_->visible_rect_for_tile_priority();
|
| - EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
|
| - gfx::Transform screen_space_transform_for_tile_priority =
|
| - active_layer_->draw_properties().screen_space_transform;
|
| -
|
| - // Expand viewport and set it as invalid for prioritizing tiles.
|
| - // Should update viewport and transform, but not update visible rect.
|
| - host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
|
| - resourceless_software_draw = true;
|
| - viewport = gfx::ScaleToEnclosingRect(viewport, 2);
|
| - transform.Translate(1.f, 1.f);
|
| - active_layer_->draw_properties().visible_layer_rect = viewport;
|
| - active_layer_->draw_properties().screen_space_transform = transform;
|
| - host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
|
| - active_layer_->UpdateTiles(resourceless_software_draw);
|
| -
|
| - // Transform for tile priority is updated.
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(
|
| - transform, active_layer_->draw_properties().screen_space_transform);
|
| - // Visible rect for tile priority retains old value.
|
| - EXPECT_EQ(visible_rect_for_tile_priority,
|
| - active_layer_->visible_rect_for_tile_priority());
|
| -
|
| - // Keep expanded viewport but mark it valid. Should update tile viewport.
|
| - host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
|
| - resourceless_software_draw = false;
|
| - host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
|
| - active_layer_->UpdateTiles(resourceless_software_draw);
|
| -
|
| - EXPECT_TRANSFORMATION_MATRIX_EQ(
|
| - transform, active_layer_->draw_properties().screen_space_transform);
|
| - EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority());
|
| -}
|
| -
|
| TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) {
|
| gfx::Size layer_bounds(1300, 1900);
|
| std::vector<PictureLayerTiling*> used_tilings;
|
|
|