Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1771)

Unified Diff: cc/trees/damage_tracker_unittest.cc

Issue 1935613002: cc: Move filter outset in content rect calculation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@visiblerectcleanup
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/damage_tracker.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/damage_tracker_unittest.cc
diff --git a/cc/trees/damage_tracker_unittest.cc b/cc/trees/damage_tracker_unittest.cc
index d9f58158fe71d0db8ec0d641ce6cfef67f2bdd74..f907bb7f3e7307357b27c69a1e5a3d6f12dd3919 100644
--- a/cc/trees/damage_tracker_unittest.cc
+++ b/cc/trees/damage_tracker_unittest.cc
@@ -576,13 +576,14 @@ TEST_F(DamageTrackerTest, VerifyDamageForImageFilter) {
root->render_surface()->damage_tracker()->current_damage_rect();
child_damage_rect =
child->render_surface()->damage_tracker()->current_damage_rect();
- EXPECT_EQ(gfx::Rect(100, 100, 30, 30).ToString(),
- root_damage_rect.ToString());
+ EXPECT_EQ(gfx::Rect(100 - outset_left, 100 - outset_top,
+ 30 + outset_left + outset_right,
+ 30 + outset_top + outset_bottom),
+ root_damage_rect);
EXPECT_EQ(
gfx::Rect(-outset_left, -outset_top, 30 + (outset_left + outset_right),
- 30 + (outset_top + outset_bottom))
- .ToString(),
- child_damage_rect.ToString());
+ 30 + (outset_top + outset_bottom)),
+ child_damage_rect);
// CASE 1: Setting the update rect should damage the whole surface (for now)
ClearDamageForAllSurfaces(root);
@@ -598,12 +599,70 @@ TEST_F(DamageTrackerTest, VerifyDamageForImageFilter) {
int expect_width = 1 + outset_left + outset_right;
int expect_height = 1 + outset_top + outset_bottom;
EXPECT_EQ(gfx::Rect(100 - outset_left, 100 - outset_top, expect_width,
- expect_height)
- .ToString(),
- root_damage_rect.ToString());
- EXPECT_EQ(gfx::Rect(-outset_left, -outset_top, expect_width, expect_height)
- .ToString(),
- child_damage_rect.ToString());
+ expect_height),
+ root_damage_rect);
+ EXPECT_EQ(gfx::Rect(-outset_left, -outset_top, expect_width, expect_height),
+ child_damage_rect);
+}
+
+TEST_F(DamageTrackerTest, VerifyDamageForTransformedImageFilter) {
+ LayerImpl* root = CreateAndSetUpTestTreeWithOneSurface();
+ LayerImpl* child = root->children()[0];
+ gfx::Rect root_damage_rect, child_damage_rect;
+
+ // Allow us to set damage on child too.
+ child->SetDrawsContent(true);
+
+ FilterOperations filters;
+ filters.Append(FilterOperation::CreateReferenceFilter(
+ SkBlurImageFilter::Make(2, 2, nullptr)));
+ int outset_top, outset_right, outset_bottom, outset_left;
+ filters.GetOutsets(&outset_top, &outset_right, &outset_bottom, &outset_left);
+
+ // Setting the filter will damage the whole surface.
+ gfx::Transform transform;
+ transform.RotateAboutYAxis(60);
+ ClearDamageForAllSurfaces(root);
+ child->test_properties()->force_render_surface = true;
+ child->SetTransform(transform);
+ root->layer_tree_impl()->property_trees()->needs_rebuild = true;
+ EmulateDrawingOneFrame(root);
+ child->OnFilterAnimated(filters);
+ EmulateDrawingOneFrame(root);
+ root_damage_rect =
+ root->render_surface()->damage_tracker()->current_damage_rect();
+ child_damage_rect =
+ child->render_surface()->damage_tracker()->current_damage_rect();
+ int rotated_outset_left = outset_left / 2;
+ int expected_rotated_width = (30 + outset_left + outset_right) / 2;
+ gfx::Rect expected_root_damage(100 - rotated_outset_left, 100 - outset_top,
+ expected_rotated_width,
+ 30 + outset_top + outset_bottom);
+ expected_root_damage.Union(gfx::Rect(100, 100, 30, 30));
+ EXPECT_EQ(expected_root_damage, root_damage_rect);
+ EXPECT_EQ(
+ gfx::Rect(-outset_left, -outset_top, 30 + (outset_left + outset_right),
+ 30 + (outset_top + outset_bottom)),
+ child_damage_rect);
+
+ // Setting the update rect should damage the whole surface (for now)
+ ClearDamageForAllSurfaces(root);
+ child->SetUpdateRect(gfx::Rect(30, 30));
+ root->layer_tree_impl()->property_trees()->needs_rebuild = true;
+ EmulateDrawingOneFrame(root);
+
+ root_damage_rect =
+ root->render_surface()->damage_tracker()->current_damage_rect();
+ child_damage_rect =
+ child->render_surface()->damage_tracker()->current_damage_rect();
+
+ int expect_width = 30 + outset_left + outset_right;
+ int expect_height = 30 + outset_top + outset_bottom;
+ EXPECT_EQ(gfx::Rect(100 - outset_left / 2, 100 - outset_top, expect_width / 2,
+ expect_height),
+ root_damage_rect);
+ EXPECT_EQ(gfx::Rect(-outset_left, -outset_top, expect_width, expect_height),
+ child_damage_rect);
}
TEST_F(DamageTrackerTest, VerifyDamageForBackgroundBlurredChild) {
« no previous file with comments | « cc/trees/damage_tracker.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698