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; |