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

Unified Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 616543004: cc: Use visible_rect_for_tile_priority_ where approriate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: partial revert of https://codereview.chromium.org/517893002 Created 6 years, 3 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
Index: cc/layers/picture_layer_impl_unittest.cc
diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc
index 474f519ab7c557d85a2f5ecf1f985e885360dcc7..50f8cd6ffc1cf266b1b53e3da3f993f09f51fb61 100644
--- a/cc/layers/picture_layer_impl_unittest.cc
+++ b/cc/layers/picture_layer_impl_unittest.cc
@@ -420,8 +420,7 @@ TEST_F(PictureLayerImplTest, ExternalViewportRectForPrioritizingTiles) {
}
}
-TEST_F(PictureLayerImplTest,
- ResourcelessSoftwareDrawHasValidViewportForTilePriority) {
+TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
base::TimeTicks time_ticks;
time_ticks += base::TimeDelta::FromMilliseconds(1);
host_impl_.SetCurrentBeginFrameArgs(
@@ -442,6 +441,8 @@ TEST_F(PictureLayerImplTest,
SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false);
// UpdateTiles with valid viewport. Should update tile viewport.
+ // Note viewport is considered invalid if and only if in resourceless
+ // software draw.
bool resourceless_software_draw = false;
gfx::Rect viewport = gfx::Rect(layer_bounds);
gfx::Transform transform;
@@ -464,9 +465,8 @@ TEST_F(PictureLayerImplTest,
gfx::Transform screen_space_transform_for_tile_priority =
active_layer_->screen_space_transform_for_tile_priority();
- // PictureLayerImpl does not make a special case for
- // resource_less_software_draw, so the tile viewport and matrix should be
- // respected.
+ // Expand viewport and set it as invalid for prioritizing tiles.
+ // Should update viewport and transform, but not update visible rect.
time_ticks += base::TimeDelta::FromMilliseconds(200);
host_impl_.SetCurrentBeginFrameArgs(
CreateBeginFrameArgsForTesting(time_ticks));
@@ -483,18 +483,31 @@ TEST_F(PictureLayerImplTest,
resourceless_software_draw);
active_layer_->UpdateTiles(Occlusion());
- visible_rect_for_tile_priority =
- gfx::ScaleToEnclosingRect(visible_rect_for_tile_priority, 2);
- viewport_rect_for_tile_priority =
- gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority, 2);
- screen_space_transform_for_tile_priority = transform;
EXPECT_RECT_EQ(visible_rect_for_tile_priority,
active_layer_->visible_rect_for_tile_priority());
danakj 2014/09/30 21:05:53 comment to explain this expectation
boliu 2014/09/30 23:52:02 Done.
- EXPECT_RECT_EQ(viewport_rect_for_tile_priority,
- active_layer_->viewport_rect_for_tile_priority());
+ EXPECT_RECT_EQ(viewport, active_layer_->viewport_rect_for_tile_priority());
EXPECT_TRANSFORMATION_MATRIX_EQ(
- screen_space_transform_for_tile_priority,
- active_layer_->screen_space_transform_for_tile_priority());
+ transform, active_layer_->screen_space_transform_for_tile_priority());
+
+ // Keep expanded viewport but mark it valid. Should update tile viewport.
+ time_ticks += base::TimeDelta::FromMilliseconds(200);
+ host_impl_.SetCurrentBeginFrameArgs(
+ CreateBeginFrameArgsForTesting(time_ticks));
+ resourceless_software_draw = false;
+ host_impl_.SetExternalDrawConstraints(transform,
+ viewport,
+ viewport,
+ viewport,
+ transform,
+ resourceless_software_draw);
+ active_layer_->UpdateTiles(Occlusion());
+
+ EXPECT_FALSE(visible_rect_for_tile_priority ==
danakj 2014/09/30 21:05:53 EXPECT_NE can you find something to EXPECT_EQ ins
boliu 2014/09/30 23:52:02 Yes, found things to EXPECT_EQ to. Although need t
+ active_layer_->visible_rect_for_tile_priority());
+ EXPECT_FALSE(viewport_rect_for_tile_priority ==
+ active_layer_->viewport_rect_for_tile_priority());
+ EXPECT_FALSE(screen_space_transform_for_tile_priority ==
+ active_layer_->screen_space_transform_for_tile_priority());
}
TEST_F(PictureLayerImplTest, ClonePartialInvalidation) {
@@ -1425,8 +1438,7 @@ TEST_F(PictureLayerImplTest, MarkRequiredOffscreenTiles) {
host_impl_.pending_tree()->UpdateDrawProperties();
EXPECT_EQ(tiling->resolution(), HIGH_RESOLUTION);
- pending_layer_->draw_properties().visible_content_rect =
- gfx::Rect(0, 0, 100, 200);
+ pending_layer_->set_visible_rect_for_tile_priority(gfx::Rect(0, 0, 100, 200));
danakj 2014/09/30 21:05:53 can you set the viewport on the host_impl_ instead
boliu 2014/09/30 23:52:02 Done.
// Fake set priorities.
for (PictureLayerTiling::CoverageIterator iter(
@@ -1439,7 +1451,8 @@ TEST_F(PictureLayerImplTest, MarkRequiredOffscreenTiles) {
TilePriority priority;
priority.resolution = HIGH_RESOLUTION;
gfx::Rect tile_bounds = iter.geometry_rect();
- if (pending_layer_->visible_content_rect().Intersects(tile_bounds)) {
+ if (pending_layer_->visible_rect_for_tile_priority().Intersects(
+ tile_bounds)) {
priority.priority_bin = TilePriority::NOW;
priority.distance_to_visible = 0.f;
} else {
@@ -3130,8 +3143,7 @@ TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) {
AssertNoTilesRequired(pending_layer_->LowResTiling());
}
-TEST_F(NoLowResPictureLayerImplTest,
- ResourcelessSoftwareDrawHasValidViewportForTilePriority) {
+TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) {
base::TimeTicks time_ticks;
time_ticks += base::TimeDelta::FromMilliseconds(1);
host_impl_.SetCurrentBeginFrameArgs(
@@ -3152,6 +3164,8 @@ TEST_F(NoLowResPictureLayerImplTest,
SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false);
// UpdateTiles with valid viewport. Should update tile viewport.
+ // Note viewport is considered invalid if and only if in resourceless
+ // software draw.
bool resourceless_software_draw = false;
gfx::Rect viewport = gfx::Rect(layer_bounds);
gfx::Transform transform;
@@ -3174,9 +3188,8 @@ TEST_F(NoLowResPictureLayerImplTest,
gfx::Transform screen_space_transform_for_tile_priority =
active_layer_->screen_space_transform_for_tile_priority();
- // PictureLayerImpl does not make a special case for
- // resource_less_software_draw, so the tile viewport and matrix should be
- // respected.
+ // Expand viewport and set it as invalid for prioritizing tiles.
+ // Should update viewport and transform, but not update visible rect.
time_ticks += base::TimeDelta::FromMilliseconds(200);
host_impl_.SetCurrentBeginFrameArgs(
CreateBeginFrameArgsForTesting(time_ticks));
@@ -3193,19 +3206,31 @@ TEST_F(NoLowResPictureLayerImplTest,
resourceless_software_draw);
active_layer_->UpdateTiles(Occlusion());
- visible_rect_for_tile_priority =
- gfx::ScaleToEnclosingRect(visible_rect_for_tile_priority, 2);
- viewport_rect_for_tile_priority =
- gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority, 2);
- screen_space_transform_for_tile_priority = transform;
-
EXPECT_RECT_EQ(visible_rect_for_tile_priority,
active_layer_->visible_rect_for_tile_priority());
- EXPECT_RECT_EQ(viewport_rect_for_tile_priority,
- active_layer_->viewport_rect_for_tile_priority());
+ EXPECT_RECT_EQ(viewport, active_layer_->viewport_rect_for_tile_priority());
EXPECT_TRANSFORMATION_MATRIX_EQ(
- screen_space_transform_for_tile_priority,
- active_layer_->screen_space_transform_for_tile_priority());
+ transform, active_layer_->screen_space_transform_for_tile_priority());
+
+ // Keep expanded viewport but mark it valid. Should update tile viewport.
+ time_ticks += base::TimeDelta::FromMilliseconds(200);
+ host_impl_.SetCurrentBeginFrameArgs(
+ CreateBeginFrameArgsForTesting(time_ticks));
+ resourceless_software_draw = false;
+ host_impl_.SetExternalDrawConstraints(transform,
+ viewport,
+ viewport,
+ viewport,
+ transform,
+ resourceless_software_draw);
+ active_layer_->UpdateTiles(Occlusion());
+
+ EXPECT_FALSE(visible_rect_for_tile_priority ==
danakj 2014/09/30 21:05:53 same comments
boliu 2014/09/30 23:52:02 Done same as above.
+ active_layer_->visible_rect_for_tile_priority());
+ EXPECT_FALSE(viewport_rect_for_tile_priority ==
+ active_layer_->viewport_rect_for_tile_priority());
+ EXPECT_FALSE(screen_space_transform_for_tile_priority ==
+ active_layer_->screen_space_transform_for_tile_priority());
}
TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) {

Powered by Google App Engine
This is Rietveld 408576698