| Index: cc/trees/damage_tracker_unittest.cc
|
| diff --git a/cc/trees/damage_tracker_unittest.cc b/cc/trees/damage_tracker_unittest.cc
|
| index d036723038efb67ffdadfc18d6fe16329c00a494..b2fd01352d43be2781fd0404d392828ed272f185 100644
|
| --- a/cc/trees/damage_tracker_unittest.cc
|
| +++ b/cc/trees/damage_tracker_unittest.cc
|
| @@ -189,6 +189,9 @@ TEST_F(DamageTrackerTest, SanityCheckTestTreeWithOneSurface) {
|
| &root_damage_rect));
|
|
|
| EXPECT_EQ(gfx::Rect(500, 500).ToString(), root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, SanityCheckTestTreeWithTwoSurfaces) {
|
| @@ -217,6 +220,13 @@ TEST_F(DamageTrackerTest, SanityCheckTestTreeWithTwoSurfaces) {
|
| EXPECT_EQ(gfx::Rect(190, 190, 16, 18).ToString(),
|
| child_damage_rect.ToString());
|
| EXPECT_EQ(gfx::Rect(500, 500).ToString(), root_damage_rect.ToString());
|
| +
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForUpdateRects) {
|
| @@ -261,6 +271,9 @@ TEST_F(DamageTrackerTest, VerifyDamageForUpdateRects) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(120, 125, 1, 2).ToString(), root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForLayerDamageRects) {
|
| @@ -318,6 +331,9 @@ TEST_F(DamageTrackerTest, VerifyDamageForLayerDamageRects) {
|
| &root_damage_rect));
|
| EXPECT_EQ(true, root_damage_rect.Contains(gfx::Rect(120, 125, 1, 2)));
|
| EXPECT_EQ(true, root_damage_rect.Contains(gfx::Rect(110, 115, 3, 4)));
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForLayerUpdateAndDamageRects) {
|
| @@ -364,6 +380,9 @@ TEST_F(DamageTrackerTest, VerifyDamageForLayerUpdateAndDamageRects) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_EQ(true, root_damage_rect.Contains(gfx::Rect(105, 110, 17, 18)));
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForPropertyChanges) {
|
| @@ -388,6 +407,12 @@ TEST_F(DamageTrackerTest, VerifyDamageForPropertyChanges) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_EQ(expected_rect.ToString(), root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
|
|
| // CASE 2: If a layer moves due to property change, it damages both the new
|
| // location and the old (exposed) location. The old location is the
|
| @@ -415,6 +440,111 @@ TEST_F(DamageTrackerTest, VerifyDamageForPropertyChanges) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_FLOAT_RECT_EQ(expected_rect, root_damage_rect);
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + // Transform from browser animation should not be considered as damage from
|
| + // contributing layer since it is applied to the whole layer which has a
|
| + // render surface.
|
| + EXPECT_FALSE(GetRenderSurface(child)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +}
|
| +
|
| +TEST_F(DamageTrackerTest,
|
| + VerifyDamageForPropertyChangesFromContributingContents) {
|
| + LayerImpl* root = CreateAndSetUpTestTreeWithTwoSurfaces();
|
| + LayerImpl* child1 = root->test_properties()->children[0];
|
| + LayerImpl* child2 = root->test_properties()->children[1];
|
| + LayerImpl* grandchild1 = child1->test_properties()->children[0];
|
| +
|
| + // CASE 1: The child1's opacity changed.
|
| + ClearDamageForAllSurfaces(root);
|
| + root->layer_tree_impl()->SetOpacityMutated(child1->element_id(), 0.5f);
|
| + EmulateDrawingOneFrame(root);
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +
|
| + // CASE 2: The layer2's opacity changed.
|
| + child2->test_properties()->force_render_surface = true;
|
| + root->layer_tree_impl()->property_trees()->needs_rebuild = true;
|
| + EmulateDrawingOneFrame(root);
|
| + ClearDamageForAllSurfaces(root);
|
| + root->layer_tree_impl()->SetOpacityMutated(child2->element_id(), 0.5f);
|
| + EmulateDrawingOneFrame(root);
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +
|
| + // CASE 3: The grandchild1's opacity changed.
|
| + grandchild1->test_properties()->force_render_surface = true;
|
| + root->layer_tree_impl()->property_trees()->needs_rebuild = true;
|
| + EmulateDrawingOneFrame(root);
|
| + ClearDamageForAllSurfaces(root);
|
| + root->layer_tree_impl()->SetOpacityMutated(grandchild1->element_id(), 0.5f);
|
| + EmulateDrawingOneFrame(root);
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +}
|
| +
|
| +TEST_F(DamageTrackerTest,
|
| + VerifyDamageForUpdateAndDamageRectsFromContributingContents) {
|
| + LayerImpl* root = CreateAndSetUpTestTreeWithTwoSurfaces();
|
| + LayerImpl* child1 = root->test_properties()->children[0];
|
| + LayerImpl* child2 = root->test_properties()->children[1];
|
| + LayerImpl* grandchild1 = child1->test_properties()->children[0];
|
| +
|
| + // CASE 1: Adding the layer1's damage rect and update rect should cause the
|
| + // corresponding damage to the surface.
|
| + child1->SetDrawsContent(true);
|
| + ClearDamageForAllSurfaces(root);
|
| + child1->AddDamageRect(gfx::Rect(105, 106, 12, 15));
|
| + child1->SetUpdateRect(gfx::Rect(115, 116, 12, 15));
|
| + root->layer_tree_impl()->property_trees()->needs_rebuild = true;
|
| + EmulateDrawingOneFrame(root);
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +
|
| + // CASE 2: Adding the layer2's damage rect and update rect should cause the
|
| + // corresponding damage to the surface.
|
| + ClearDamageForAllSurfaces(root);
|
| + child2->AddDamageRect(gfx::Rect(11, 11, 12, 15));
|
| + child2->SetUpdateRect(gfx::Rect(12, 12, 12, 15));
|
| + EmulateDrawingOneFrame(root);
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +
|
| + // CASE 3: Adding the grandchild1's damage rect and update rect should cause
|
| + // the corresponding damage to the surface.
|
| + ClearDamageForAllSurfaces(root);
|
| + grandchild1->AddDamageRect(gfx::Rect(1, 0, 2, 5));
|
| + grandchild1->SetUpdateRect(gfx::Rect(2, 1, 2, 5));
|
| + EmulateDrawingOneFrame(root);
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageWhenSurfaceRemoved) {
|
| @@ -434,6 +564,9 @@ TEST_F(DamageTrackerTest, VerifyDamageWhenSurfaceRemoved) {
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(290, 290, 16, 18).ToString(),
|
| root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForTransformedLayer) {
|
| @@ -461,6 +594,14 @@ TEST_F(DamageTrackerTest, VerifyDamageForTransformedLayer) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(85, 85, 45, 45).ToString(), root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + // layer's layer_property_changed_ should be considered as damage to render
|
| + // surface.
|
| + EXPECT_TRUE(GetRenderSurface(child)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
|
|
| // With the anchor on the layer's center, now we can test the rotation more
|
| // intuitively, since it applies about the layer's anchor.
|
| @@ -479,6 +620,15 @@ TEST_F(DamageTrackerTest, VerifyDamageForTransformedLayer) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_EQ(expected_rect.ToString(), root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + // Transform from browser animation should not be considered as damage from
|
| + // contributing layer since it is applied to the whole layer which has a
|
| + // render surface.
|
| + EXPECT_FALSE(GetRenderSurface(child)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForPerspectiveClippedLayer) {
|
| @@ -533,6 +683,12 @@ TEST_F(DamageTrackerTest, VerifyDamageForPerspectiveClippedLayer) {
|
| &root_damage_rect));
|
| gfx::Rect damage_we_care_about = gfx::Rect(gfx::Size(500, 500));
|
| EXPECT_TRUE(root_damage_rect.Contains(damage_we_care_about));
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(child)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForBlurredSurface) {
|
| @@ -543,11 +699,18 @@ TEST_F(DamageTrackerTest, VerifyDamageForBlurredSurface) {
|
| FilterOperations filters;
|
| filters.Append(FilterOperation::CreateBlurFilter(5.f));
|
|
|
| - // Setting the filter will damage the whole surface.
|
| + // Setting the filter will damage the whole surface, but not conrresponding
|
| + // render surface.
|
| ClearDamageForAllSurfaces(root);
|
| surface->test_properties()->filters = filters;
|
| root->layer_tree_impl()->property_trees()->needs_rebuild = true;
|
| EmulateDrawingOneFrame(root);
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(surface)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
|
|
| // Setting the update rect should cause the corresponding damage to the
|
| // surface, blurred based on the size of the blur filter.
|
| @@ -563,6 +726,12 @@ TEST_F(DamageTrackerTest, VerifyDamageForBlurredSurface) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(286, 287, 33, 34), root_damage_rect);
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(surface)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForImageFilter) {
|
| @@ -578,10 +747,10 @@ TEST_F(DamageTrackerTest, VerifyDamageForImageFilter) {
|
| SkBlurImageFilter::Make(2, 2, nullptr)));
|
|
|
| // Setting the filter will damage the whole surface.
|
| - ClearDamageForAllSurfaces(root);
|
| child->test_properties()->force_render_surface = true;
|
| root->layer_tree_impl()->property_trees()->needs_rebuild = true;
|
| EmulateDrawingOneFrame(root);
|
| + ClearDamageForAllSurfaces(root);
|
| child->layer_tree_impl()->SetFilterMutated(child->element_id(), filters);
|
| EmulateDrawingOneFrame(root);
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| @@ -595,6 +764,13 @@ TEST_F(DamageTrackerTest, VerifyDamageForImageFilter) {
|
| // gfx::Rect(0, 0, 30, 30), expanded by 6px for the 2px blur filter.
|
| EXPECT_EQ(gfx::Rect(-6, -6, 42, 42), child_damage_rect);
|
|
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(child)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +
|
| // CASE 1: Setting the update rect should damage the whole surface (for now)
|
| ClearDamageForAllSurfaces(root);
|
| child->SetUpdateRect(gfx::Rect(1, 1));
|
| @@ -610,6 +786,13 @@ TEST_F(DamageTrackerTest, VerifyDamageForImageFilter) {
|
|
|
| // gfx::Rect(0, 0, 1, 1), expanded by 6px for the 2px blur filter.
|
| EXPECT_EQ(gfx::Rect(-6, -6, 13, 13), child_damage_rect);
|
| +
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForTransformedImageFilter) {
|
| @@ -875,6 +1058,9 @@ TEST_F(DamageTrackerTest, VerifyDamageForAddingAndRemovingLayer) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(400, 380, 6, 8).ToString(), root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
|
|
| // CASE 2: If the layer is removed, its entire old layer becomes exposed, not
|
| // just the last update rect.
|
| @@ -899,6 +1085,9 @@ TEST_F(DamageTrackerTest, VerifyDamageForAddingAndRemovingLayer) {
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(100, 100, 30, 30).ToString(),
|
| root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForNewUnchangedLayer) {
|
| @@ -935,6 +1124,9 @@ TEST_F(DamageTrackerTest, VerifyDamageForNewUnchangedLayer) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(400, 380, 6, 8).ToString(), root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForMultipleLayers) {
|
| @@ -969,6 +1161,9 @@ TEST_F(DamageTrackerTest, VerifyDamageForMultipleLayers) {
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(100, 100, 303, 284).ToString(),
|
| root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForNestedSurfaces) {
|
| @@ -995,6 +1190,18 @@ TEST_F(DamageTrackerTest, VerifyDamageForNestedSurfaces) {
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(200, 200, 6, 8).ToString(), child_damage_rect.ToString());
|
| EXPECT_EQ(gfx::Rect(300, 300, 6, 8).ToString(), root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(child2)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(grand_child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
|
|
| // CASE 2: Same as previous case, but with additional damage elsewhere that
|
| // should be properly unioned.
|
| @@ -1013,6 +1220,18 @@ TEST_F(DamageTrackerTest, VerifyDamageForNestedSurfaces) {
|
| EXPECT_EQ(gfx::Rect(200, 200, 6, 8).ToString(), child_damage_rect.ToString());
|
| EXPECT_EQ(gfx::Rect(11, 11, 295, 297).ToString(),
|
| root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(child2)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(grand_child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForSurfaceChangeFromDescendantLayer) {
|
| @@ -1049,6 +1268,13 @@ TEST_F(DamageTrackerTest, VerifyDamageForSurfaceChangeFromDescendantLayer) {
|
| // space).
|
| EXPECT_EQ(gfx::Rect(290, 290, 16, 23).ToString(),
|
| root_damage_rect.ToString());
|
| +
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForSurfaceChangeFromAncestorLayer) {
|
| @@ -1089,6 +1315,13 @@ TEST_F(DamageTrackerTest, VerifyDamageForSurfaceChangeFromAncestorLayer) {
|
| // - new child1 surface in target space: gfx::Rect(240, 240, 16, 18)
|
| EXPECT_EQ(gfx::Rect(240, 240, 66, 68).ToString(),
|
| root_damage_rect.ToString());
|
| +
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForAddingAndRemovingRenderSurfaces) {
|
| @@ -1113,6 +1346,10 @@ TEST_F(DamageTrackerTest, VerifyDamageForAddingAndRemovingRenderSurfaces) {
|
| EXPECT_EQ(gfx::Rect(290, 290, 16, 18).ToString(),
|
| root_damage_rect.ToString());
|
|
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +
|
| // CASE 2: If a descendant surface appears, its entire old area becomes
|
| // exposed.
|
|
|
| @@ -1145,6 +1382,9 @@ TEST_F(DamageTrackerTest, VerifyDamageForAddingAndRemovingRenderSurfaces) {
|
| child_damage_rect.ToString());
|
| EXPECT_EQ(gfx::Rect(290, 290, 16, 18).ToString(),
|
| root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyNoDamageWhenNothingChanged) {
|
| @@ -1164,6 +1404,9 @@ TEST_F(DamageTrackerTest, VerifyNoDamageWhenNothingChanged) {
|
| &root_damage_rect));
|
| EXPECT_TRUE(child_damage_rect.IsEmpty());
|
| EXPECT_TRUE(root_damage_rect.IsEmpty());
|
| + EXPECT_FALSE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
|
|
| // CASE 2: If nothing changes twice in a row, the damage rect should still be
|
| // empty.
|
| @@ -1177,6 +1420,9 @@ TEST_F(DamageTrackerTest, VerifyNoDamageWhenNothingChanged) {
|
| &root_damage_rect));
|
| EXPECT_TRUE(child_damage_rect.IsEmpty());
|
| EXPECT_TRUE(root_damage_rect.IsEmpty());
|
| + EXPECT_FALSE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyNoDamageForUpdateRectThatDoesNotDrawContent) {
|
| @@ -1197,6 +1443,9 @@ TEST_F(DamageTrackerTest, VerifyNoDamageForUpdateRectThatDoesNotDrawContent) {
|
| &root_damage_rect));
|
| EXPECT_TRUE(child_damage_rect.IsEmpty());
|
| EXPECT_TRUE(root_damage_rect.IsEmpty());
|
| + EXPECT_FALSE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageForMask) {
|
| @@ -1243,6 +1492,13 @@ TEST_F(DamageTrackerTest, VerifyDamageForMask) {
|
| &child_damage_rect));
|
| EXPECT_EQ(gfx::Rect(30, 30).ToString(), child_damage_rect.ToString());
|
|
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(child)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +
|
| // CASE 2: a property change on the mask layer should damage the entire
|
| // target surface.
|
|
|
| @@ -1265,6 +1521,13 @@ TEST_F(DamageTrackerTest, VerifyDamageForMask) {
|
| &child_damage_rect));
|
| EXPECT_EQ(gfx::Rect(30, 30).ToString(), child_damage_rect.ToString());
|
|
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_FALSE(GetRenderSurface(child)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +
|
| // CASE 3: removing the mask also damages the entire target surface.
|
| //
|
|
|
| @@ -1291,6 +1554,10 @@ TEST_F(DamageTrackerTest, VerifyDamageForMask) {
|
| EXPECT_TRUE(GetRenderSurface(child)->damage_tracker()->GetDamageRectIfValid(
|
| &child_damage_rect));
|
| EXPECT_EQ(gfx::Rect(30, 30).ToString(), child_damage_rect.ToString());
|
| +
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, DamageWhenAddedExternally) {
|
| @@ -1312,6 +1579,9 @@ TEST_F(DamageTrackerTest, DamageWhenAddedExternally) {
|
| EXPECT_EQ(gfx::UnionRects(gfx::Rect(15, 16, 32, 33),
|
| gfx::Rect(100 + 10, 100 + 11, 12, 13)).ToString(),
|
| root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
|
|
| // Case 2: An additional sanity check that adding damage works even when
|
| // nothing on the layer tree changed.
|
| @@ -1324,6 +1594,9 @@ TEST_F(DamageTrackerTest, DamageWhenAddedExternally) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(30, 31, 14, 15).ToString(), root_damage_rect.ToString());
|
| + EXPECT_FALSE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageWithNoContributingLayers) {
|
| @@ -1341,6 +1614,9 @@ TEST_F(DamageTrackerTest, VerifyDamageWithNoContributingLayers) {
|
| EXPECT_TRUE(
|
| target_surface->damage_tracker()->GetDamageRectIfValid(&damage_rect));
|
| EXPECT_TRUE(damage_rect.IsEmpty());
|
| + EXPECT_FALSE(GetRenderSurface(root_ptr)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) {
|
| @@ -1359,6 +1635,9 @@ TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(110, 111, 1, 2).ToString(), root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
|
|
| // New damage, without having cleared the previous damage, should be unioned
|
| // to the previous one.
|
| @@ -1369,6 +1648,9 @@ TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) {
|
| &root_damage_rect));
|
| EXPECT_EQ(gfx::Rect(110, 111, 11, 16).ToString(),
|
| root_damage_rect.ToString());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
|
|
| // If we notify the damage tracker that we drew the damaged area, then damage
|
| // should be emptied.
|
| @@ -1376,6 +1658,9 @@ TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_TRUE(root_damage_rect.IsEmpty());
|
| + EXPECT_FALSE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
|
|
| // Damage should remain empty even after one frame, since there's yet no new
|
| // damage.
|
| @@ -1384,6 +1669,9 @@ TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) {
|
| EXPECT_TRUE(GetRenderSurface(root)->damage_tracker()->GetDamageRectIfValid(
|
| &root_damage_rect));
|
| EXPECT_TRUE(root_damage_rect.IsEmpty());
|
| + EXPECT_FALSE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, HugeDamageRect) {
|
| @@ -1420,6 +1708,9 @@ TEST_F(DamageTrackerTest, HugeDamageRect) {
|
| gfx::Rect damage_we_care_about = gfx::Rect(i, i);
|
| EXPECT_LE(damage_we_care_about.right(), root_damage_rect.right());
|
| EXPECT_LE(damage_we_care_about.bottom(), root_damage_rect.bottom());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
| }
|
|
|
| @@ -1447,6 +1738,9 @@ TEST_F(DamageTrackerTest, DamageRectTooBig) {
|
| &damage_rect));
|
| EXPECT_EQ(GetRenderSurface(root)->content_rect(),
|
| GetRenderSurface(root)->GetDamageRect());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, DamageRectTooBigWithFilter) {
|
| @@ -1478,6 +1772,9 @@ TEST_F(DamageTrackerTest, DamageRectTooBigWithFilter) {
|
| &damage_rect));
|
| EXPECT_EQ(GetRenderSurface(root)->content_rect(),
|
| GetRenderSurface(root)->GetDamageRect());
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, DamageRectTooBigInRenderSurface) {
|
| @@ -1526,6 +1823,13 @@ TEST_F(DamageTrackerTest, DamageRectTooBigInRenderSurface) {
|
| gfx::ToEnclosingRect(GetRenderSurface(child1)->DrawableContentRect())));
|
| EXPECT_EQ(damage_rect, GetRenderSurface(root)->GetDamageRect());
|
|
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +
|
| // Add new damage, without changing properties, which goes down a different
|
| // path in the damage tracker.
|
| root->layer_tree_impl()->ResetAllChangeTracking();
|
| @@ -1554,6 +1858,13 @@ TEST_F(DamageTrackerTest, DamageRectTooBigInRenderSurface) {
|
| EXPECT_TRUE(damage_rect.Contains(
|
| gfx::ToEnclosingRect(GetRenderSurface(child1)->DrawableContentRect())));
|
| EXPECT_EQ(damage_rect, GetRenderSurface(root)->GetDamageRect());
|
| +
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| TEST_F(DamageTrackerTest, DamageRectTooBigInRenderSurfaceWithFilter) {
|
| @@ -1608,6 +1919,13 @@ TEST_F(DamageTrackerTest, DamageRectTooBigInRenderSurfaceWithFilter) {
|
| gfx::ToEnclosingRect(GetRenderSurface(child1)->DrawableContentRect())));
|
| EXPECT_EQ(damage_rect, GetRenderSurface(root)->GetDamageRect());
|
|
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| +
|
| // Add new damage, without changing properties, which goes down a different
|
| // path in the damage tracker.
|
| root->layer_tree_impl()->ResetAllChangeTracking();
|
| @@ -1636,6 +1954,13 @@ TEST_F(DamageTrackerTest, DamageRectTooBigInRenderSurfaceWithFilter) {
|
| EXPECT_TRUE(damage_rect.Contains(
|
| gfx::ToEnclosingRect(GetRenderSurface(child1)->DrawableContentRect())));
|
| EXPECT_EQ(damage_rect, GetRenderSurface(root)->GetDamageRect());
|
| +
|
| + EXPECT_TRUE(GetRenderSurface(root)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| + EXPECT_TRUE(GetRenderSurface(child1)
|
| + ->damage_tracker()
|
| + ->has_damage_from_contributing_content());
|
| }
|
|
|
| } // namespace
|
|
|