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

Unified Diff: cc/resources/picture_pile_unittest.cc

Issue 198833004: Clean up repeated code in picture pile unittest (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/picture_pile_unittest.cc
diff --git a/cc/resources/picture_pile_unittest.cc b/cc/resources/picture_pile_unittest.cc
index 91ec355424ea1c7e80114d542e4485a228549076..d87f92840763978a03ac71b96ae2ece3007bc019 100644
--- a/cc/resources/picture_pile_unittest.cc
+++ b/cc/resources/picture_pile_unittest.cc
@@ -29,48 +29,59 @@ class TestPicturePile : public PicturePile {
virtual ~TestPicturePile() {}
};
-TEST(PicturePileTest, SmallInvalidateInflated) {
- FakeContentLayerClient client;
- FakeRenderingStatsInstrumentation stats_instrumentation;
- scoped_refptr<TestPicturePile> pile = new TestPicturePile;
- SkColor background_color = SK_ColorBLUE;
-
- float min_scale = 0.125;
- gfx::Size base_picture_size = pile->tiling().max_texture_size();
-
- gfx::Size layer_size = base_picture_size;
- pile->Resize(layer_size);
- pile->SetTileGridSize(gfx::Size(1000, 1000));
- pile->SetMinContentsScale(min_scale);
-
- // Update the whole layer.
- pile->Update(&client,
- background_color,
- false,
- gfx::Rect(layer_size),
- gfx::Rect(layer_size),
- 1,
- &stats_instrumentation);
+class PicturePileTest : public testing::Test {
+ public:
+ PicturePileTest()
+ : pile_(new TestPicturePile()),
+ background_color_(SK_ColorBLUE),
+ min_scale_(0.125),
+ frame_number_(0),
+ contents_opaque_(false) {
+ pile_->Resize(pile_->tiling().max_texture_size());
+ pile_->SetTileGridSize(gfx::Size(1000, 1000));
+ pile_->SetMinContentsScale(min_scale_);
+ }
+
+ gfx::Rect layer_rect() const { return gfx::Rect(pile_->size()); }
+
+ bool Update(const Region& invalidation, const gfx::Rect& visible_layer_rect) {
+ frame_number_++;
+ return pile_->Update(&client_,
+ background_color_,
+ contents_opaque_,
+ invalidation,
+ visible_layer_rect,
+ frame_number_,
+ &stats_instrumentation_);
+ }
+
+ bool UpdateWholeLayer() { return Update(layer_rect(), layer_rect()); }
+
+ FakeContentLayerClient client_;
+ FakeRenderingStatsInstrumentation stats_instrumentation_;
+ scoped_refptr<TestPicturePile> pile_;
+ SkColor background_color_;
+ float min_scale_;
+ int frame_number_;
+ bool contents_opaque_;
+};
+
+TEST_F(PicturePileTest, SmallInvalidateInflated) {
+ UpdateWholeLayer();
// Invalidate something inside a tile.
gfx::Rect invalidate_rect(50, 50, 1, 1);
- pile->Update(&client,
- background_color,
- false,
- invalidate_rect,
- gfx::Rect(layer_size),
- 2,
- &stats_instrumentation);
+ Update(invalidate_rect, layer_rect());
- EXPECT_EQ(1, pile->tiling().num_tiles_x());
- EXPECT_EQ(1, pile->tiling().num_tiles_y());
+ EXPECT_EQ(1, pile_->tiling().num_tiles_x());
+ EXPECT_EQ(1, pile_->tiling().num_tiles_y());
TestPicturePile::PictureInfo& picture_info =
- pile->picture_map().find(TestPicturePile::PictureMapKey(0, 0))->second;
+ pile_->picture_map().find(TestPicturePile::PictureMapKey(0, 0))->second;
// We should have a picture.
EXPECT_TRUE(!!picture_info.GetPicture());
gfx::Rect picture_rect = gfx::ScaleToEnclosedRect(
- picture_info.GetPicture()->LayerRect(), min_scale);
+ picture_info.GetPicture()->LayerRect(), min_scale_);
// The the picture should be large enough that scaling it never makes a rect
// smaller than 1 px wide or tall.
@@ -78,117 +89,63 @@ TEST(PicturePileTest, SmallInvalidateInflated) {
picture_rect.ToString();
}
-TEST(PicturePileTest, LargeInvalidateInflated) {
- FakeContentLayerClient client;
- FakeRenderingStatsInstrumentation stats_instrumentation;
- scoped_refptr<TestPicturePile> pile = new TestPicturePile;
- SkColor background_color = SK_ColorBLUE;
-
- float min_scale = 0.125;
- gfx::Size base_picture_size = pile->tiling().max_texture_size();
-
- gfx::Size layer_size = base_picture_size;
- pile->Resize(layer_size);
- pile->SetTileGridSize(gfx::Size(1000, 1000));
- pile->SetMinContentsScale(min_scale);
-
- // Update the whole layer.
- pile->Update(&client,
- background_color,
- false,
- gfx::Rect(layer_size),
- gfx::Rect(layer_size),
- 1,
- &stats_instrumentation);
+TEST_F(PicturePileTest, LargeInvalidateInflated) {
+ UpdateWholeLayer();
// Invalidate something inside a tile.
gfx::Rect invalidate_rect(50, 50, 100, 100);
- pile->Update(&client,
- background_color,
- false,
- invalidate_rect,
- gfx::Rect(layer_size),
- 2,
- &stats_instrumentation);
+ Update(invalidate_rect, layer_rect());
- EXPECT_EQ(1, pile->tiling().num_tiles_x());
- EXPECT_EQ(1, pile->tiling().num_tiles_y());
+ EXPECT_EQ(1, pile_->tiling().num_tiles_x());
+ EXPECT_EQ(1, pile_->tiling().num_tiles_y());
TestPicturePile::PictureInfo& picture_info =
- pile->picture_map().find(TestPicturePile::PictureMapKey(0, 0))->second;
+ pile_->picture_map().find(TestPicturePile::PictureMapKey(0, 0))->second;
EXPECT_TRUE(!!picture_info.GetPicture());
- int expected_inflation = pile->buffer_pixels();
+ int expected_inflation = pile_->buffer_pixels();
Picture* base_picture = picture_info.GetPicture();
- gfx::Rect base_picture_rect(layer_size);
+ gfx::Rect base_picture_rect(pile_->size());
base_picture_rect.Inset(-expected_inflation, -expected_inflation);
EXPECT_EQ(base_picture_rect.ToString(),
base_picture->LayerRect().ToString());
}
-TEST(PicturePileTest, InvalidateOnTileBoundaryInflated) {
- FakeContentLayerClient client;
- FakeRenderingStatsInstrumentation stats_instrumentation;
- scoped_refptr<TestPicturePile> pile = new TestPicturePile;
- SkColor background_color = SK_ColorBLUE;
-
- float min_scale = 0.125;
- gfx::Size base_picture_size = pile->tiling().max_texture_size();
-
- gfx::Size layer_size =
- gfx::ToFlooredSize(gfx::ScaleSize(base_picture_size, 2.f));
- pile->Resize(layer_size);
- pile->SetTileGridSize(gfx::Size(1000, 1000));
- pile->SetMinContentsScale(min_scale);
+TEST_F(PicturePileTest, InvalidateOnTileBoundaryInflated) {
+ gfx::Size layer_size = gfx::ToFlooredSize(gfx::ScaleSize(pile_->size(), 2.f));
+ pile_->Resize(layer_size);
// Due to border pixels, we should have 3 tiles.
- EXPECT_EQ(3, pile->tiling().num_tiles_x());
- EXPECT_EQ(3, pile->tiling().num_tiles_y());
+ EXPECT_EQ(3, pile_->tiling().num_tiles_x());
+ EXPECT_EQ(3, pile_->tiling().num_tiles_y());
// We should have 1/.125 - 1 = 7 border pixels.
- EXPECT_EQ(7, pile->buffer_pixels());
- EXPECT_EQ(7, pile->tiling().border_texels());
+ EXPECT_EQ(7, pile_->buffer_pixels());
+ EXPECT_EQ(7, pile_->tiling().border_texels());
// Update the whole layer to create initial pictures.
- pile->Update(&client,
- background_color,
- false,
- gfx::Rect(layer_size),
- gfx::Rect(layer_size),
- 0,
- &stats_instrumentation);
+ UpdateWholeLayer();
// Invalidate everything again to have a non zero invalidation
// frequency.
- pile->Update(&client,
- background_color,
- false,
- gfx::Rect(layer_size),
- gfx::Rect(layer_size),
- 1,
- &stats_instrumentation);
+ UpdateWholeLayer();
// Invalidate something just over a tile boundary by a single pixel.
// This will invalidate the tile (1, 1), as well as 1 row of pixels in (1, 0).
gfx::Rect invalidate_rect(
- pile->tiling().TileBoundsWithBorder(0, 0).right(),
- pile->tiling().TileBoundsWithBorder(0, 0).bottom() - 1,
+ pile_->tiling().TileBoundsWithBorder(0, 0).right(),
+ pile_->tiling().TileBoundsWithBorder(0, 0).bottom() - 1,
50,
50);
- pile->Update(&client,
- background_color,
- false,
- invalidate_rect,
- gfx::Rect(layer_size),
- 2,
- &stats_instrumentation);
-
- for (int i = 0; i < pile->tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile->tiling().num_tiles_y(); ++j) {
+ Update(invalidate_rect, layer_rect());
+
+ for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) {
+ for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) {
TestPicturePile::PictureInfo& picture_info =
- pile->picture_map().find(
- TestPicturePile::PictureMapKey(i, j))->second;
+ pile_->picture_map()
+ .find(TestPicturePile::PictureMapKey(i, j))
+ ->second;
// Expect (1, 1) and (1, 0) to be invalidated once more
// than the rest of the tiles.
@@ -205,60 +162,38 @@ TEST(PicturePileTest, InvalidateOnTileBoundaryInflated) {
}
}
-TEST(PicturePileTest, StopRecordingOffscreenInvalidations) {
- FakeContentLayerClient client;
- FakeRenderingStatsInstrumentation stats_instrumentation;
- scoped_refptr<TestPicturePile> pile = new TestPicturePile;
- SkColor background_color = SK_ColorBLUE;
-
- float min_scale = 0.125;
- gfx::Size base_picture_size = pile->tiling().max_texture_size();
-
- gfx::Size layer_size =
- gfx::ToFlooredSize(gfx::ScaleSize(base_picture_size, 4.f));
- pile->Resize(layer_size);
- pile->SetTileGridSize(gfx::Size(1000, 1000));
- pile->SetMinContentsScale(min_scale);
+TEST_F(PicturePileTest, StopRecordingOffscreenInvalidations) {
+ gfx::Size layer_size = gfx::ToFlooredSize(gfx::ScaleSize(pile_->size(), 4.f));
+ pile_->Resize(layer_size);
gfx::Rect viewport(0, 0, layer_size.width(), 1);
// Update the whole layer until the invalidation frequency is high.
- int frame;
- for (frame = 0; frame < 33; ++frame) {
- pile->Update(&client,
- background_color,
- false,
- gfx::Rect(layer_size),
- viewport,
- frame,
- &stats_instrumentation);
+ for (int frame = 0; frame < 33; ++frame) {
+ UpdateWholeLayer();
}
// Make sure we have a high invalidation frequency.
- for (int i = 0; i < pile->tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile->tiling().num_tiles_y(); ++j) {
+ for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) {
+ for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) {
TestPicturePile::PictureInfo& picture_info =
- pile->picture_map().find(
- TestPicturePile::PictureMapKey(i, j))->second;
+ pile_->picture_map()
+ .find(TestPicturePile::PictureMapKey(i, j))
+ ->second;
EXPECT_FLOAT_EQ(1.0f, picture_info.GetInvalidationFrequencyForTesting())
<< "i " << i << " j " << j;
}
}
// Update once more with a small viewport 0,0 layer_width by 1
- pile->Update(&client,
- background_color,
- false,
- gfx::Rect(layer_size),
- viewport,
- frame,
- &stats_instrumentation);
-
- for (int i = 0; i < pile->tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile->tiling().num_tiles_y(); ++j) {
+ Update(layer_rect(), viewport);
+
+ for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) {
+ for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) {
TestPicturePile::PictureInfo& picture_info =
- pile->picture_map().find(
- TestPicturePile::PictureMapKey(i, j))->second;
+ pile_->picture_map()
+ .find(TestPicturePile::PictureMapKey(i, j))
+ ->second;
EXPECT_FLOAT_EQ(1.0f, picture_info.GetInvalidationFrequencyForTesting());
// If the y far enough away we expect to find no picture (no re-recording
@@ -271,19 +206,14 @@ TEST(PicturePileTest, StopRecordingOffscreenInvalidations) {
}
// Now update with no invalidation and full viewport
- pile->Update(&client,
- background_color,
- false,
- gfx::Rect(),
- gfx::Rect(layer_size),
- frame+1,
- &stats_instrumentation);
-
- for (int i = 0; i < pile->tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile->tiling().num_tiles_y(); ++j) {
+ Update(gfx::Rect(), layer_rect());
+
+ for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) {
+ for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) {
TestPicturePile::PictureInfo& picture_info =
- pile->picture_map().find(
- TestPicturePile::PictureMapKey(i, j))->second;
+ pile_->picture_map()
+ .find(TestPicturePile::PictureMapKey(i, j))
+ ->second;
// Expect the invalidation frequency to be less than 1, since we just
// updated with no invalidations.
float expected_frequency =
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698