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

Unified Diff: cc/base/tiling_data_unittest.cc

Issue 240593004: cc: Fix missing compositor invalidations during resize (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Avoid assertion on empty bounds Created 6 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/base/tiling_data.cc ('k') | cc/resources/picture_layer_tiling.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/base/tiling_data_unittest.cc
diff --git a/cc/base/tiling_data_unittest.cc b/cc/base/tiling_data_unittest.cc
index 1563b0227039d780c56ed9e1a85076dde33706de..fd0809d1f7fdae271843798e810a862224f1dbe5 100644
--- a/cc/base/tiling_data_unittest.cc
+++ b/cc/base/tiling_data_unittest.cc
@@ -2133,6 +2133,77 @@ TEST_P(TilingDataTest, SetMaxTextureSizeBorders) {
EXPECT_EQ(10, data.num_tiles_y());
}
+TEST_P(TilingDataTest, ExpandRectToTileBoundsWithBordersEmpty) {
+ gfx::Point origin = GetParam();
+ TilingData empty_total_size(
+ gfx::Size(0, 0), gfx::Rect(origin, gfx::Size(8, 8)), true);
+ EXPECT_RECT_EQ(
+ gfx::Rect(),
+ empty_total_size.ExpandRectToTileBoundsWithBorders(gfx::Rect()));
+ EXPECT_RECT_EQ(gfx::Rect(),
+ empty_total_size.ExpandRectToTileBoundsWithBorders(
+ gfx::Rect(100, 100, 100, 100)));
+ EXPECT_RECT_EQ(gfx::Rect(),
+ empty_total_size.ExpandRectToTileBoundsWithBorders(
+ gfx::Rect(0, 0, 100, 100)));
+
+ TilingData empty_max_texture_size(
+ gfx::Size(8, 8), gfx::Rect(origin, gfx::Size(0, 0)), true);
+ EXPECT_RECT_EQ(
+ gfx::Rect(),
+ empty_max_texture_size.ExpandRectToTileBoundsWithBorders(gfx::Rect()));
+ EXPECT_RECT_EQ(gfx::Rect(),
+ empty_max_texture_size.ExpandRectToTileBoundsWithBorders(
+ gfx::Rect(100, 100, 100, 100)));
+ EXPECT_RECT_EQ(gfx::Rect(),
+ empty_max_texture_size.ExpandRectToTileBoundsWithBorders(
+ gfx::Rect(0, 0, 100, 100)));
+}
+
+TEST_P(TilingDataTest, ExpandRectToTileBoundsWithBorders) {
+ gfx::Point origin = GetParam();
+ TilingData data(gfx::Size(4, 4), gfx::Rect(origin, gfx::Size(16, 32)), true);
+
+ // Small rect at origin rounds up to tile 0, 0.
+ gfx::Rect at_origin_src(origin, gfx::Size(1, 1));
+ gfx::Rect at_origin_result(data.TileBoundsWithBorder(0, 0));
+ EXPECT_NE(at_origin_src, at_origin_result);
+ EXPECT_RECT_EQ(at_origin_result,
+ data.ExpandRectToTileBoundsWithBorders(at_origin_src));
+
+ // Arbitrary internal rect.
+ gfx::Rect rect_src(origin.x() + 6, origin.y() + 6, 1, 3);
+ // Tile 2, 2 => gfx::Rect(4, 4, 4, 4)
+ // Tile 3, 4 => gfx::Rect(6, 8, 4, 4)
+ gfx::Rect rect_result(gfx::UnionRects(data.TileBoundsWithBorder(2, 2),
+ data.TileBoundsWithBorder(3, 4)));
+ EXPECT_NE(rect_src, rect_result);
+ EXPECT_RECT_EQ(rect_result, data.ExpandRectToTileBoundsWithBorders(rect_src));
+
+ // On tile bounds rounds up to next tile (since border overlaps).
+ gfx::Rect border_rect_src(
+ gfx::UnionRects(data.TileBounds(1, 2), data.TileBounds(3, 4)));
+ gfx::Rect border_rect_result(gfx::UnionRects(
+ data.TileBoundsWithBorder(0, 1), data.TileBoundsWithBorder(4, 5)));
+ EXPECT_RECT_EQ(border_rect_result,
+ data.ExpandRectToTileBoundsWithBorders(border_rect_src));
+
+ // Equal to tiling rect.
+ EXPECT_RECT_EQ(data.tiling_rect(),
+ data.ExpandRectToTileBoundsWithBorders(data.tiling_rect()));
+
+ // Containing, but larger than tiling rect.
+ EXPECT_RECT_EQ(data.tiling_rect(),
+ data.ExpandRectToTileBoundsWithBorders(
+ gfx::Rect(origin, gfx::Size(100, 100))));
+
+ // Non-intersecting with tiling rect.
+ gfx::Rect non_intersect(origin.x() + 200, origin.y() + 200, 100, 100);
+ EXPECT_FALSE(non_intersect.Intersects(data.tiling_rect()));
+ EXPECT_RECT_EQ(gfx::Rect(),
+ data.ExpandRectToTileBoundsWithBorders(non_intersect));
+}
+
TEST_P(TilingDataTest, Assignment) {
gfx::Point origin = GetParam();
« no previous file with comments | « cc/base/tiling_data.cc ('k') | cc/resources/picture_layer_tiling.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698