Chromium Code Reviews| 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 474f519ab7c557d85a2f5ecf1f985e885360dcc7..50f8cd6ffc1cf266b1b53e3da3f993f09f51fb61 100644 |
| --- a/cc/layers/picture_layer_impl_unittest.cc |
| +++ b/cc/layers/picture_layer_impl_unittest.cc |
| @@ -420,8 +420,7 @@ TEST_F(PictureLayerImplTest, ExternalViewportRectForPrioritizingTiles) { |
| } |
| } |
| -TEST_F(PictureLayerImplTest, |
| - ResourcelessSoftwareDrawHasValidViewportForTilePriority) { |
| +TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) { |
| base::TimeTicks time_ticks; |
| time_ticks += base::TimeDelta::FromMilliseconds(1); |
| host_impl_.SetCurrentBeginFrameArgs( |
| @@ -442,6 +441,8 @@ TEST_F(PictureLayerImplTest, |
| SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.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; |
| @@ -464,9 +465,8 @@ TEST_F(PictureLayerImplTest, |
| gfx::Transform screen_space_transform_for_tile_priority = |
| active_layer_->screen_space_transform_for_tile_priority(); |
| - // PictureLayerImpl does not make a special case for |
| - // resource_less_software_draw, so the tile viewport and matrix should be |
| - // respected. |
| + // Expand viewport and set it as invalid for prioritizing tiles. |
| + // Should update viewport and transform, but not update visible rect. |
| time_ticks += base::TimeDelta::FromMilliseconds(200); |
| host_impl_.SetCurrentBeginFrameArgs( |
| CreateBeginFrameArgsForTesting(time_ticks)); |
| @@ -483,18 +483,31 @@ TEST_F(PictureLayerImplTest, |
| resourceless_software_draw); |
| active_layer_->UpdateTiles(Occlusion()); |
| - visible_rect_for_tile_priority = |
| - gfx::ScaleToEnclosingRect(visible_rect_for_tile_priority, 2); |
| - viewport_rect_for_tile_priority = |
| - gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority, 2); |
| - screen_space_transform_for_tile_priority = transform; |
| EXPECT_RECT_EQ(visible_rect_for_tile_priority, |
| active_layer_->visible_rect_for_tile_priority()); |
|
danakj
2014/09/30 21:05:53
comment to explain this expectation
boliu
2014/09/30 23:52:02
Done.
|
| - EXPECT_RECT_EQ(viewport_rect_for_tile_priority, |
| - active_layer_->viewport_rect_for_tile_priority()); |
| + EXPECT_RECT_EQ(viewport, active_layer_->viewport_rect_for_tile_priority()); |
| EXPECT_TRANSFORMATION_MATRIX_EQ( |
| - screen_space_transform_for_tile_priority, |
| - active_layer_->screen_space_transform_for_tile_priority()); |
| + transform, active_layer_->screen_space_transform_for_tile_priority()); |
| + |
| + // Keep expanded viewport but mark it valid. Should update tile viewport. |
| + time_ticks += base::TimeDelta::FromMilliseconds(200); |
| + host_impl_.SetCurrentBeginFrameArgs( |
| + CreateBeginFrameArgsForTesting(time_ticks)); |
| + resourceless_software_draw = false; |
| + host_impl_.SetExternalDrawConstraints(transform, |
| + viewport, |
| + viewport, |
| + viewport, |
| + transform, |
| + resourceless_software_draw); |
| + active_layer_->UpdateTiles(Occlusion()); |
| + |
| + EXPECT_FALSE(visible_rect_for_tile_priority == |
|
danakj
2014/09/30 21:05:53
EXPECT_NE
can you find something to EXPECT_EQ ins
boliu
2014/09/30 23:52:02
Yes, found things to EXPECT_EQ to. Although need t
|
| + active_layer_->visible_rect_for_tile_priority()); |
| + EXPECT_FALSE(viewport_rect_for_tile_priority == |
| + active_layer_->viewport_rect_for_tile_priority()); |
| + EXPECT_FALSE(screen_space_transform_for_tile_priority == |
| + active_layer_->screen_space_transform_for_tile_priority()); |
| } |
| TEST_F(PictureLayerImplTest, ClonePartialInvalidation) { |
| @@ -1425,8 +1438,7 @@ TEST_F(PictureLayerImplTest, MarkRequiredOffscreenTiles) { |
| host_impl_.pending_tree()->UpdateDrawProperties(); |
| EXPECT_EQ(tiling->resolution(), HIGH_RESOLUTION); |
| - pending_layer_->draw_properties().visible_content_rect = |
| - gfx::Rect(0, 0, 100, 200); |
| + pending_layer_->set_visible_rect_for_tile_priority(gfx::Rect(0, 0, 100, 200)); |
|
danakj
2014/09/30 21:05:53
can you set the viewport on the host_impl_ instead
boliu
2014/09/30 23:52:02
Done.
|
| // Fake set priorities. |
| for (PictureLayerTiling::CoverageIterator iter( |
| @@ -1439,7 +1451,8 @@ TEST_F(PictureLayerImplTest, MarkRequiredOffscreenTiles) { |
| TilePriority priority; |
| priority.resolution = HIGH_RESOLUTION; |
| gfx::Rect tile_bounds = iter.geometry_rect(); |
| - if (pending_layer_->visible_content_rect().Intersects(tile_bounds)) { |
| + if (pending_layer_->visible_rect_for_tile_priority().Intersects( |
| + tile_bounds)) { |
| priority.priority_bin = TilePriority::NOW; |
| priority.distance_to_visible = 0.f; |
| } else { |
| @@ -3130,8 +3143,7 @@ TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { |
| AssertNoTilesRequired(pending_layer_->LowResTiling()); |
| } |
| -TEST_F(NoLowResPictureLayerImplTest, |
| - ResourcelessSoftwareDrawHasValidViewportForTilePriority) { |
| +TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) { |
| base::TimeTicks time_ticks; |
| time_ticks += base::TimeDelta::FromMilliseconds(1); |
| host_impl_.SetCurrentBeginFrameArgs( |
| @@ -3152,6 +3164,8 @@ TEST_F(NoLowResPictureLayerImplTest, |
| SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.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; |
| @@ -3174,9 +3188,8 @@ TEST_F(NoLowResPictureLayerImplTest, |
| gfx::Transform screen_space_transform_for_tile_priority = |
| active_layer_->screen_space_transform_for_tile_priority(); |
| - // PictureLayerImpl does not make a special case for |
| - // resource_less_software_draw, so the tile viewport and matrix should be |
| - // respected. |
| + // Expand viewport and set it as invalid for prioritizing tiles. |
| + // Should update viewport and transform, but not update visible rect. |
| time_ticks += base::TimeDelta::FromMilliseconds(200); |
| host_impl_.SetCurrentBeginFrameArgs( |
| CreateBeginFrameArgsForTesting(time_ticks)); |
| @@ -3193,19 +3206,31 @@ TEST_F(NoLowResPictureLayerImplTest, |
| resourceless_software_draw); |
| active_layer_->UpdateTiles(Occlusion()); |
| - visible_rect_for_tile_priority = |
| - gfx::ScaleToEnclosingRect(visible_rect_for_tile_priority, 2); |
| - viewport_rect_for_tile_priority = |
| - gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority, 2); |
| - screen_space_transform_for_tile_priority = transform; |
| - |
| EXPECT_RECT_EQ(visible_rect_for_tile_priority, |
| active_layer_->visible_rect_for_tile_priority()); |
| - EXPECT_RECT_EQ(viewport_rect_for_tile_priority, |
| - active_layer_->viewport_rect_for_tile_priority()); |
| + EXPECT_RECT_EQ(viewport, active_layer_->viewport_rect_for_tile_priority()); |
| EXPECT_TRANSFORMATION_MATRIX_EQ( |
| - screen_space_transform_for_tile_priority, |
| - active_layer_->screen_space_transform_for_tile_priority()); |
| + transform, active_layer_->screen_space_transform_for_tile_priority()); |
| + |
| + // Keep expanded viewport but mark it valid. Should update tile viewport. |
| + time_ticks += base::TimeDelta::FromMilliseconds(200); |
| + host_impl_.SetCurrentBeginFrameArgs( |
| + CreateBeginFrameArgsForTesting(time_ticks)); |
| + resourceless_software_draw = false; |
| + host_impl_.SetExternalDrawConstraints(transform, |
| + viewport, |
| + viewport, |
| + viewport, |
| + transform, |
| + resourceless_software_draw); |
| + active_layer_->UpdateTiles(Occlusion()); |
| + |
| + EXPECT_FALSE(visible_rect_for_tile_priority == |
|
danakj
2014/09/30 21:05:53
same comments
boliu
2014/09/30 23:52:02
Done same as above.
|
| + active_layer_->visible_rect_for_tile_priority()); |
| + EXPECT_FALSE(viewport_rect_for_tile_priority == |
| + active_layer_->viewport_rect_for_tile_priority()); |
| + EXPECT_FALSE(screen_space_transform_for_tile_priority == |
| + active_layer_->screen_space_transform_for_tile_priority()); |
| } |
| TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { |