| Index: cc/trees/damage_tracker_unittest.cc
|
| diff --git a/cc/trees/damage_tracker_unittest.cc b/cc/trees/damage_tracker_unittest.cc
|
| index 91cec6dc03017d4ab00c85b1ff17c246625acfe0..c63306715607c00d656df63cef6d52e958a688d0 100644
|
| --- a/cc/trees/damage_tracker_unittest.cc
|
| +++ b/cc/trees/damage_tracker_unittest.cc
|
| @@ -57,19 +57,8 @@ void EmulateDrawingOneFrame(LayerImpl* root, float device_scale_factor = 1.f) {
|
| ExecuteCalculateDrawProperties(root, device_scale_factor,
|
| &render_surface_layer_list);
|
|
|
| - // Iterate back-to-front, so that damage correctly propagates from descendant
|
| - // surfaces to ancestors.
|
| - size_t render_surface_layer_list_size = render_surface_layer_list.size();
|
| - for (size_t i = 0; i < render_surface_layer_list_size; ++i) {
|
| - size_t index = render_surface_layer_list_size - 1 - i;
|
| - RenderSurfaceImpl* target_surface =
|
| - render_surface_layer_list[index]->GetRenderSurface();
|
| - target_surface->damage_tracker()->UpdateDamageTrackingState(
|
| - target_surface->layer_list(), target_surface,
|
| - target_surface->SurfacePropertyChangedOnlyFromDescendant(),
|
| - target_surface->content_rect(), target_surface->MaskLayer(),
|
| - target_surface->Filters());
|
| - }
|
| + DamageTracker::UpdateDamageTracking(root->layer_tree_impl(),
|
| + render_surface_layer_list);
|
|
|
| root->layer_tree_impl()->ResetAllChangeTracking();
|
| }
|
| @@ -1344,10 +1333,7 @@ TEST_F(DamageTrackerTest, DamageWhenAddedExternally) {
|
| EXPECT_EQ(gfx::Rect(30, 31, 14, 15).ToString(), root_damage_rect.ToString());
|
| }
|
|
|
| -TEST_F(DamageTrackerTest, VerifyDamageForEmptyLayerList) {
|
| - // Though it should never happen, its a good idea to verify that the damage
|
| - // tracker does not crash when it receives an empty layer_list.
|
| -
|
| +TEST_F(DamageTrackerTest, VerifyDamageWithNoContributingLayers) {
|
| std::unique_ptr<LayerImpl> root =
|
| LayerImpl::Create(host_impl_.active_tree(), 1);
|
| root->test_properties()->force_render_surface = true;
|
| @@ -1358,11 +1344,6 @@ TEST_F(DamageTrackerTest, VerifyDamageForEmptyLayerList) {
|
|
|
| DCHECK_EQ(root_ptr->GetRenderSurface(), root_ptr->render_target());
|
| RenderSurfaceImpl* target_surface = root_ptr->GetRenderSurface();
|
| -
|
| - LayerImplList empty_list;
|
| - target_surface->damage_tracker()->UpdateDamageTrackingState(
|
| - empty_list, target_surface, false, gfx::Rect(), NULL, FilterOperations());
|
| -
|
| gfx::Rect damage_rect;
|
| EXPECT_TRUE(
|
| target_surface->damage_tracker()->GetDamageRectIfValid(&damage_rect));
|
| @@ -1530,15 +1511,11 @@ TEST_F(DamageTrackerTest, DamageRectTooBigInRenderSurface) {
|
| LayerImplList render_surface_layer_list;
|
| ExecuteCalculateDrawProperties(root, device_scale_factor,
|
| &render_surface_layer_list);
|
| -
|
| - auto* surface = child1->GetRenderSurface();
|
| - surface->damage_tracker()->UpdateDamageTrackingState(
|
| - surface->layer_list(), surface, false, surface->content_rect(),
|
| - surface->MaskLayer(), surface->Filters());
|
| - surface = root->GetRenderSurface();
|
| - surface->damage_tracker()->UpdateDamageTrackingState(
|
| - surface->layer_list(), surface, false, surface->content_rect(),
|
| - surface->MaskLayer(), surface->Filters());
|
| + // Avoid the descendant-only property change path that skips unioning damage
|
| + // from descendant layers.
|
| + child1->GetRenderSurface()->NoteAncestorPropertyChanged();
|
| + DamageTracker::UpdateDamageTracking(host_impl_.active_tree(),
|
| + render_surface_layer_list);
|
|
|
| // The expected damage would be too large to store in a gfx::Rect, so we
|
| // should damage everything on child1.
|
| @@ -1568,14 +1545,8 @@ TEST_F(DamageTrackerTest, DamageRectTooBigInRenderSurface) {
|
| render_surface_layer_list.clear();
|
| ExecuteCalculateDrawProperties(root, device_scale_factor,
|
| &render_surface_layer_list);
|
| - surface = child1->GetRenderSurface();
|
| - surface->damage_tracker()->UpdateDamageTrackingState(
|
| - surface->layer_list(), surface, false, surface->content_rect(),
|
| - surface->MaskLayer(), surface->Filters());
|
| - surface = root->GetRenderSurface();
|
| - surface->damage_tracker()->UpdateDamageTrackingState(
|
| - surface->layer_list(), surface, false, surface->content_rect(),
|
| - surface->MaskLayer(), surface->Filters());
|
| + DamageTracker::UpdateDamageTracking(host_impl_.active_tree(),
|
| + render_surface_layer_list);
|
|
|
| // Child1 should still not have a valid rect, since the union of the damage of
|
| // its children is not representable by a single rect.
|
| @@ -1624,15 +1595,11 @@ TEST_F(DamageTrackerTest, DamageRectTooBigInRenderSurfaceWithFilter) {
|
| LayerImplList render_surface_layer_list;
|
| ExecuteCalculateDrawProperties(root, device_scale_factor,
|
| &render_surface_layer_list);
|
| -
|
| - auto* surface = child1->GetRenderSurface();
|
| - surface->damage_tracker()->UpdateDamageTrackingState(
|
| - surface->layer_list(), surface, false, surface->content_rect(),
|
| - surface->MaskLayer(), surface->Filters());
|
| - surface = root->GetRenderSurface();
|
| - surface->damage_tracker()->UpdateDamageTrackingState(
|
| - surface->layer_list(), surface, false, surface->content_rect(),
|
| - surface->MaskLayer(), surface->Filters());
|
| + // Avoid the descendant-only property change path that skips unioning damage
|
| + // from descendant layers.
|
| + child1->GetRenderSurface()->NoteAncestorPropertyChanged();
|
| + DamageTracker::UpdateDamageTracking(host_impl_.active_tree(),
|
| + render_surface_layer_list);
|
|
|
| // The expected damage would be too large to store in a gfx::Rect, so we
|
| // should damage everything on child1.
|
| @@ -1662,14 +1629,8 @@ TEST_F(DamageTrackerTest, DamageRectTooBigInRenderSurfaceWithFilter) {
|
| render_surface_layer_list.clear();
|
| ExecuteCalculateDrawProperties(root, device_scale_factor,
|
| &render_surface_layer_list);
|
| - surface = child1->GetRenderSurface();
|
| - surface->damage_tracker()->UpdateDamageTrackingState(
|
| - surface->layer_list(), surface, false, surface->content_rect(),
|
| - surface->MaskLayer(), surface->Filters());
|
| - surface = root->GetRenderSurface();
|
| - surface->damage_tracker()->UpdateDamageTrackingState(
|
| - surface->layer_list(), surface, false, surface->content_rect(),
|
| - surface->MaskLayer(), surface->Filters());
|
| + DamageTracker::UpdateDamageTracking(host_impl_.active_tree(),
|
| + render_surface_layer_list);
|
|
|
| // Child1 should still not have a valid rect, since the union of the damage of
|
| // its children is not representable by a single rect.
|
|
|