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

Unified Diff: cc/resources/picture_layer_tiling_unittest.cc

Issue 13820002: cc: Don't DCHECK for layers with non-invertible transforms. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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/resources/picture_layer_tiling.cc ('k') | cc/trees/layer_tree_host_common.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/picture_layer_tiling_unittest.cc
diff --git a/cc/resources/picture_layer_tiling_unittest.cc b/cc/resources/picture_layer_tiling_unittest.cc
index 91043e67b48006e13d72f42781c97fd55828fcdb..27ee39a50a8e87e099dbcfdcf4ade8faef9f26ff 100644
--- a/cc/resources/picture_layer_tiling_unittest.cc
+++ b/cc/resources/picture_layer_tiling_unittest.cc
@@ -68,6 +68,20 @@ class PictureLayerTilingIteratorTest : public testing::Test {
VerifyTilesExactlyCoverRect(rect_scale, rect, rect);
}
+ void VerifyTiles(float rect_scale,
+ gfx::Rect rect,
+ base::Callback<void(Tile*)> callback) {
+ Region remaining = rect;
+ for (PictureLayerTiling::CoverageIterator iter(
+ tiling_.get(), rect_scale, rect);
+ iter;
+ ++iter) {
+ remaining.Subtract(iter.geometry_rect());
+ callback.Run(*iter);
+ }
+ EXPECT_TRUE(remaining.IsEmpty());
+ }
+
void VerifyTilesCoverNonContainedRect(float rect_scale, gfx::Rect dest_rect) {
float dest_to_contents_scale = tiling_->contents_scale() / rect_scale;
gfx::Rect clamped_rect(gfx::ToEnclosingRect(gfx::ScaleRect(
@@ -358,5 +372,61 @@ TEST(PictureLayerTilingTest, ExpandRectOutOfBounds) {
EXPECT_TRUE(out.IsEmpty());
}
+TEST(PictureLayerTilingTest, EmptyStartingRect) {
+ // If a layer has a non-invertible transform, then the starting rect
+ // for the layer would be empty.
+ gfx::Rect in(40, 40, 0, 0);
+ gfx::Rect bounds(0, 0, 10, 10);
+ int64 target_area = 400 * 400;
+ gfx::Rect out = PictureLayerTiling::ExpandRectEquallyToAreaBoundedBy(
+ in, target_area, bounds);
+ EXPECT_TRUE(out.IsEmpty());
+}
+
+static void TileExists(bool live, Tile* tile) {
+ ASSERT_TRUE(tile != NULL);
+ EXPECT_EQ(live, tile->priority(ACTIVE_TREE).is_live);
+}
+
+TEST_F(PictureLayerTilingIteratorTest, TilesExist) {
+ gfx::Size layer_bounds(1099, 801);
+ Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
+ VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
+ VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
+
+ tiling_->UpdateTilePriorities(
+ ACTIVE_TREE,
+ layer_bounds, // device viewport
+ gfx::Rect(layer_bounds), // viewport in layer space
+ layer_bounds, // last layer bounds
+ layer_bounds, // current layer bounds
+ 1.f, // last contents scale
+ 1.f, // current contents scale
+ gfx::Transform(), // last screen transform
+ gfx::Transform(), // current screen transform
+ 1, // current frame number
+ 1.0, // current frame time
+ false, // store screen space quads on tiles
+ 10000); // max tiles in tile manager
+ VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
+
+ // Make the viewport rect empty. All tiles are killed and become zombies.
+ tiling_->UpdateTilePriorities(
+ ACTIVE_TREE,
+ layer_bounds, // device viewport
+ gfx::Rect(), // viewport in layer space
+ layer_bounds, // last layer bounds
+ layer_bounds, // current layer bounds
+ 1.f, // last contents scale
+ 1.f, // current contents scale
+ gfx::Transform(), // last screen transform
+ gfx::Transform(), // current screen transform
+ 2, // current frame number
+ 2.0, // current frame time
+ false, // store screen space quads on tiles
+ 10000); // max tiles in tile manager
+ VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
+}
+
} // namespace
} // namespace cc
« no previous file with comments | « cc/resources/picture_layer_tiling.cc ('k') | cc/trees/layer_tree_host_common.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698