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

Unified Diff: cc/resources/picture_pile_unittest.cc

Issue 723343002: Update from https://crrev.com/304121 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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_pile_impl.cc ('k') | cc/resources/raster_source.h » ('j') | 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 24bed3e64c0303e8ab5a4975d199e2ff40b0e6a2..25e0d128510f2cfef273dc992d5ebfad3a39a0ae 100644
--- a/cc/resources/picture_pile_unittest.cc
+++ b/cc/resources/picture_pile_unittest.cc
@@ -7,7 +7,7 @@
#include "cc/resources/picture_pile.h"
#include "cc/test/fake_content_layer_client.h"
-#include "cc/test/fake_rendering_stats_instrumentation.h"
+#include "cc/test/fake_picture_pile.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/rect_conversions.h"
#include "ui/gfx/geometry/size_conversions.h"
@@ -15,26 +15,6 @@
namespace cc {
namespace {
-class TestPicturePile : public PicturePile {
- public:
- ~TestPicturePile() override {}
-
- using PicturePile::buffer_pixels;
- using PicturePile::CanRasterSlowTileCheck;
- using PicturePile::Clear;
-
- PictureMap& picture_map() { return picture_map_; }
- const gfx::Rect& recorded_viewport() const { return recorded_viewport_; }
-
- bool CanRasterLayerRect(const gfx::Rect& layer_rect) {
- return CanRaster(1.f, layer_rect);
- }
-
- typedef PicturePile::PictureInfo PictureInfo;
- typedef PicturePile::PictureMapKey PictureMapKey;
- typedef PicturePile::PictureMap PictureMap;
-};
-
class PicturePileTestBase {
public:
PicturePileTestBase()
@@ -56,36 +36,29 @@ class PicturePileTestBase {
UpdateAndExpandInvalidation(&invalidation, tiling_size, viewport_rect);
}
- gfx::Size tiling_size() const { return pile_.tiling_size(); }
- gfx::Rect tiling_rect() const { return gfx::Rect(pile_.tiling_size()); }
+ gfx::Size tiling_size() const { return pile_.GetSize(); }
+ gfx::Rect tiling_rect() const { return gfx::Rect(pile_.GetSize()); }
bool UpdateAndExpandInvalidation(Region* invalidation,
const gfx::Size& layer_size,
const gfx::Rect& visible_layer_rect) {
frame_number_++;
- return pile_.UpdateAndExpandInvalidation(&client_,
- invalidation,
- background_color_,
- contents_opaque_,
- false,
- layer_size,
- visible_layer_rect,
- frame_number_,
- Picture::RECORD_NORMALLY,
- &stats_instrumentation_);
+ return pile_.UpdateAndExpandInvalidation(
+ &client_, invalidation, background_color_, contents_opaque_, false,
+ layer_size, visible_layer_rect, frame_number_,
+ Picture::RECORD_NORMALLY);
}
bool UpdateWholePile() {
Region invalidation = tiling_rect();
- bool result = UpdateAndExpandInvalidation(
- &invalidation, tiling_size(), tiling_rect());
+ bool result = UpdateAndExpandInvalidation(&invalidation, tiling_size(),
+ tiling_rect());
EXPECT_EQ(tiling_rect().ToString(), invalidation.ToString());
return result;
}
FakeContentLayerClient client_;
- FakeRenderingStatsInstrumentation stats_instrumentation_;
- TestPicturePile pile_;
+ FakePicturePile pile_;
SkColor background_color_;
float min_scale_;
int frame_number_;
@@ -99,7 +72,7 @@ class PicturePileTest : public PicturePileTestBase, public testing::Test {
TEST_F(PicturePileTest, InvalidationOnTileBorderOutsideInterestRect) {
// Don't expand the interest rect past what we invalidate.
- pile_.SetPixelRecordDistanceForTesting(0);
+ pile_.SetPixelRecordDistance(0);
gfx::Size tile_size(100, 100);
pile_.tiling().SetMaxTextureSize(tile_size);
@@ -182,8 +155,8 @@ TEST_F(PicturePileTest, SmallInvalidateInflated) {
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;
+ FakePicturePile::PictureInfo& picture_info =
+ pile_.picture_map().find(FakePicturePile::PictureMapKey(0, 0))->second;
// We should have a picture.
EXPECT_TRUE(!!picture_info.GetPicture());
gfx::Rect picture_rect = gfx::ScaleToEnclosedRect(
@@ -204,14 +177,14 @@ TEST_F(PicturePileTest, LargeInvalidateInflated) {
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;
+ FakePicturePile::PictureInfo& picture_info =
+ pile_.picture_map().find(FakePicturePile::PictureMapKey(0, 0))->second;
EXPECT_TRUE(!!picture_info.GetPicture());
int expected_inflation = pile_.buffer_pixels();
const Picture* base_picture = picture_info.GetPicture();
- gfx::Rect base_picture_rect(pile_.tiling_size());
+ gfx::Rect base_picture_rect(tiling_size());
base_picture_rect.Inset(-expected_inflation, -expected_inflation);
EXPECT_EQ(base_picture_rect.ToString(),
base_picture->LayerRect().ToString());
@@ -219,7 +192,7 @@ TEST_F(PicturePileTest, LargeInvalidateInflated) {
TEST_F(PicturePileTest, InvalidateOnTileBoundaryInflated) {
gfx::Size new_tiling_size =
- gfx::ToCeiledSize(gfx::ScaleSize(pile_.tiling_size(), 2.f));
+ gfx::ToCeiledSize(gfx::ScaleSize(tiling_size(), 2.f));
// This creates initial pictures.
SetTilingSize(new_tiling_size);
@@ -247,20 +220,20 @@ TEST_F(PicturePileTest, InvalidateOnTileBoundaryInflated) {
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 =
+ FakePicturePile::PictureInfo& picture_info =
pile_.picture_map()
- .find(TestPicturePile::PictureMapKey(i, j))
+ .find(FakePicturePile::PictureMapKey(i, j))
->second;
// Expect (1, 1) and (1, 0) to be invalidated once more
// than the rest of the tiles.
if (i == 1 && (j == 0 || j == 1)) {
EXPECT_FLOAT_EQ(
- 2.0f / TestPicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
+ 2.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
picture_info.GetInvalidationFrequencyForTesting());
} else {
EXPECT_FLOAT_EQ(
- 1.0f / TestPicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
+ 1.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
picture_info.GetInvalidationFrequencyForTesting());
}
}
@@ -273,7 +246,7 @@ TEST_F(PicturePileTest, InvalidateOnFullLayer) {
// Everything was invalidated once so far.
for (auto& it : pile_.picture_map()) {
EXPECT_FLOAT_EQ(
- 1.0f / TestPicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
+ 1.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
it.second.GetInvalidationFrequencyForTesting());
}
@@ -284,14 +257,14 @@ TEST_F(PicturePileTest, InvalidateOnFullLayer) {
// Everything was invalidated again.
for (auto& it : pile_.picture_map()) {
EXPECT_FLOAT_EQ(
- 2.0f / TestPicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
+ 2.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
it.second.GetInvalidationFrequencyForTesting());
}
}
TEST_F(PicturePileTest, StopRecordingOffscreenInvalidations) {
gfx::Size new_tiling_size =
- gfx::ToCeiledSize(gfx::ScaleSize(pile_.tiling_size(), 4.f));
+ gfx::ToCeiledSize(gfx::ScaleSize(tiling_size(), 4.f));
SetTilingSize(new_tiling_size);
gfx::Rect viewport(tiling_size().width(), 1);
@@ -304,9 +277,9 @@ TEST_F(PicturePileTest, StopRecordingOffscreenInvalidations) {
// 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) {
- TestPicturePile::PictureInfo& picture_info =
+ FakePicturePile::PictureInfo& picture_info =
pile_.picture_map()
- .find(TestPicturePile::PictureMapKey(i, j))
+ .find(FakePicturePile::PictureMapKey(i, j))
->second;
EXPECT_FLOAT_EQ(1.0f, picture_info.GetInvalidationFrequencyForTesting())
<< "i " << i << " j " << j;
@@ -320,9 +293,9 @@ TEST_F(PicturePileTest, StopRecordingOffscreenInvalidations) {
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 =
+ FakePicturePile::PictureInfo& picture_info =
pile_.picture_map()
- .find(TestPicturePile::PictureMapKey(i, j))
+ .find(FakePicturePile::PictureMapKey(i, j))
->second;
EXPECT_FLOAT_EQ(1.0f, picture_info.GetInvalidationFrequencyForTesting());
@@ -349,15 +322,15 @@ TEST_F(PicturePileTest, StopRecordingOffscreenInvalidations) {
// Now update with no invalidation and full viewport
Region empty_invalidation;
- UpdateAndExpandInvalidation(
- &empty_invalidation, tiling_size(), tiling_rect());
+ UpdateAndExpandInvalidation(&empty_invalidation, tiling_size(),
+ tiling_rect());
EXPECT_EQ(Region().ToString(), empty_invalidation.ToString());
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 =
+ FakePicturePile::PictureInfo& picture_info =
pile_.picture_map()
- .find(TestPicturePile::PictureMapKey(i, j))
+ .find(FakePicturePile::PictureMapKey(i, j))
->second;
// Expect the invalidation frequency to be less than 1, since we just
// updated with no invalidations.
@@ -388,7 +361,7 @@ TEST_F(PicturePileTest, FrequentInvalidationCanRaster) {
// tiles touching it, but is true for adjacent tiles, even if it
// overlaps on borders (edge case).
gfx::Size new_tiling_size =
- gfx::ToCeiledSize(gfx::ScaleSize(pile_.tiling_size(), 4.f));
+ gfx::ToCeiledSize(gfx::ScaleSize(tiling_size(), 4.f));
SetTilingSize(new_tiling_size);
gfx::Rect tile01_borders = pile_.tiling().TileBoundsWithBorder(0, 1);
@@ -422,10 +395,10 @@ TEST_F(PicturePileTest, FrequentInvalidationCanRaster) {
// Sanity check some pictures exist and others don't.
EXPECT_TRUE(pile_.picture_map()
- .find(TestPicturePile::PictureMapKey(0, 1))
+ .find(FakePicturePile::PictureMapKey(0, 1))
->second.GetPicture());
EXPECT_FALSE(pile_.picture_map()
- .find(TestPicturePile::PictureMapKey(0, 2))
+ .find(FakePicturePile::PictureMapKey(0, 2))
->second.GetPicture());
EXPECT_TRUE(pile_.CanRasterLayerRect(tile01_noborders));
@@ -454,8 +427,8 @@ TEST_F(PicturePileTest, NoInvalidationValidViewport) {
// No invalidation, changing viewport.
invalidation = Region();
- UpdateAndExpandInvalidation(
- &invalidation, tiling_size(), gfx::Rect(5, 5, 5, 5));
+ UpdateAndExpandInvalidation(&invalidation, tiling_size(),
+ gfx::Rect(5, 5, 5, 5));
EXPECT_TRUE(!pile_.recorded_viewport().IsEmpty());
EXPECT_EQ(Region().ToString(), invalidation.ToString());
}
@@ -604,9 +577,9 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
@@ -616,14 +589,15 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
grow_down_tiling_size,
CornerSinglePixelRect(corner, grow_down_tiling_size));
- // We should have lost the recordings in the bottom row.
+ // We should have lost all of the recordings in the bottom row as none of them
+ // are in the current interest rect (which is either the above or below it).
EXPECT_EQ(6, pile_.tiling().num_tiles_x());
EXPECT_EQ(8, pile_.tiling().num_tiles_y());
for (int i = 0; i < 6; ++i) {
for (int j = 0; j < 6; ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_EQ(j < 5, it != map.end() && it->second.GetPicture());
}
}
@@ -645,20 +619,58 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
base_tiling_size,
CornerSinglePixelRect(corner, base_tiling_size));
- // We should have lost the recordings that are now outside the tiling only.
+ // When shrinking, we should have lost all the recordings in the bottom row
+ // not touching the interest rect.
EXPECT_EQ(6, pile_.tiling().num_tiles_x());
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
- EXPECT_EQ(j < 6, it != map.end() && it->second.GetPicture());
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
+ bool expect_tile;
+ switch (corner) {
+ case TOP_LEFT:
+ case TOP_RIGHT:
+ expect_tile = j < 5;
+ break;
+ case BOTTOM_LEFT:
+ // The interest rect in the bottom left tile means we'll record it.
+ expect_tile = j < 5 || (j == 5 && i == 0);
+ break;
+ case BOTTOM_RIGHT:
+ // The interest rect in the bottom right tile means we'll record it.
+ expect_tile = j < 5 || (j == 5 && i == 5);
+ break;
+ }
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture());
}
}
- // No invalidation when shrinking.
- expected_invalidation.Clear();
+ // When shrinking, the previously exposed region is invalidated.
+ expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size),
+ gfx::Rect(base_tiling_size));
+ // The whole bottom row of tiles (except any with the interest rect) are
+ // dropped.
+ gfx::Rect bottom_row_minus_existing_corner = gfx::UnionRects(
+ pile_.tiling().TileBounds(0, 5), pile_.tiling().TileBounds(5, 5));
+ switch (corner) {
+ case TOP_LEFT:
+ case TOP_RIGHT:
+ // No tiles are kept in the changed region because it doesn't
+ // intersect with the interest rect.
+ break;
+ case BOTTOM_LEFT:
+ bottom_row_minus_existing_corner.Subtract(
+ pile_.tiling().TileBounds(0, 5));
+ break;
+ case BOTTOM_RIGHT:
+ bottom_row_minus_existing_corner.Subtract(
+ pile_.tiling().TileBounds(5, 5));
+ break;
+ }
+
+ expected_invalidation.Union(bottom_row_minus_existing_corner);
EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
invalidation.Clear();
@@ -668,14 +680,16 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
grow_right_tiling_size,
CornerSinglePixelRect(corner, grow_right_tiling_size));
- // We should have lost the recordings in the right column.
+ // We should have lost all of the recordings in the right column as none of
+ // them are in the current interest rect (which is either entirely left or
+ // right of it).
EXPECT_EQ(8, pile_.tiling().num_tiles_x());
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < 6; ++i) {
for (int j = 0; j < 6; ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_EQ(i < 5, it != map.end() && it->second.GetPicture());
}
}
@@ -697,20 +711,57 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
base_tiling_size,
CornerSinglePixelRect(corner, base_tiling_size));
- // We should have lost the recordings that are now outside the tiling only.
+ // When shrinking, we should have lost all the recordings in the right column
+ // not touching the interest rect.
EXPECT_EQ(6, pile_.tiling().num_tiles_x());
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
- EXPECT_EQ(i < 6, it != map.end() && it->second.GetPicture());
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
+ bool expect_tile;
+ switch (corner) {
+ case TOP_LEFT:
+ case BOTTOM_LEFT:
+ // No tiles are kept in the changed region because it doesn't
+ // intersect with the interest rect.
+ expect_tile = i < 5;
+ break;
+ case TOP_RIGHT:
+ // The interest rect in the top right tile means we'll record it.
+ expect_tile = i < 5 || (j == 0 && i == 5);
+ break;
+ case BOTTOM_RIGHT:
+ // The interest rect in the bottom right tile means we'll record it.
+ expect_tile = i < 5 || (j == 5 && i == 5);
+ break;
+ }
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture());
}
}
- // No invalidation when shrinking.
- expected_invalidation.Clear();
+ // When shrinking, the previously exposed region is invalidated.
+ expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size),
+ gfx::Rect(base_tiling_size));
+ // The whole right column of tiles (except for ones with the interest rect)
+ // are dropped.
+ gfx::Rect right_column_minus_existing_corner = gfx::UnionRects(
+ pile_.tiling().TileBounds(5, 0), pile_.tiling().TileBounds(5, 5));
+ switch (corner) {
+ case TOP_LEFT:
+ case BOTTOM_LEFT:
+ break;
+ case TOP_RIGHT:
+ right_column_minus_existing_corner.Subtract(
+ pile_.tiling().TileBounds(5, 0));
+ break;
+ case BOTTOM_RIGHT:
+ right_column_minus_existing_corner.Subtract(
+ pile_.tiling().TileBounds(5, 5));
+ break;
+ }
+ expected_invalidation.Union(right_column_minus_existing_corner);
EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
invalidation.Clear();
@@ -725,9 +776,9 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
EXPECT_EQ(8, pile_.tiling().num_tiles_y());
for (int i = 0; i < 6; ++i) {
for (int j = 0; j < 6; ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_EQ(i < 5 && j < 5, it != map.end() && it->second.GetPicture());
}
}
@@ -735,7 +786,7 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
// We invalidated all new pixels in the recording.
expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size),
gfx::Rect(base_tiling_size));
- // But the new pixels don't cover the whole right_column.
+ // But the new pixels don't cover the whole right column or bottom row.
Region right_column_and_bottom_row =
UnionRegions(gfx::UnionRects(pile_.tiling().TileBounds(5, 0),
pile_.tiling().TileBounds(5, 5)),
@@ -748,22 +799,66 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
invalidation.Clear();
UpdateWholePile();
- UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect());
+ UpdateAndExpandInvalidation(&invalidation, base_tiling_size,
+ CornerSinglePixelRect(corner, base_tiling_size));
- // We should have lost the recordings that are now outside the tiling only.
+ // We should have lost the recordings in the right column and bottom row,
+ // except where it intersects the interest rect.
EXPECT_EQ(6, pile_.tiling().num_tiles_x());
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
- EXPECT_EQ(i < 6 && j < 6, it != map.end() && it->second.GetPicture());
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
+ bool expect_tile;
+ switch (corner) {
+ case TOP_LEFT:
+ expect_tile = i < 5 && j < 5;
+ break;
+ case TOP_RIGHT:
+ // The interest rect in the top right tile means we'll record it.
+ expect_tile = (i < 5 && j < 5) || (j == 0 && i == 5);
+ break;
+ case BOTTOM_LEFT:
+ // The interest rect in the bottom left tile means we'll record it.
+ expect_tile = (i < 5 && j < 5) || (j == 5 && i == 0);
+ break;
+ case BOTTOM_RIGHT:
+ // The interest rect in the bottom right tile means we'll record it.
+ expect_tile = (i < 5 && j < 5) || (j == 5 && i == 5);
+ break;
+ }
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture())
+ << i << "," << j;
}
}
- // No invalidation when shrinking.
- expected_invalidation.Clear();
+ // We invalidated all previous pixels in the recording.
+ expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size),
+ gfx::Rect(base_tiling_size));
+ // The whole right column and bottom row of tiles (except for ones with the
+ // interest rect) are dropped.
+ Region right_column_and_bottom_row_minus_existing_corner =
+ right_column_and_bottom_row;
+ switch (corner) {
+ case TOP_LEFT:
+ break;
+ case BOTTOM_LEFT:
+ right_column_and_bottom_row_minus_existing_corner.Subtract(
+ pile_.tiling().TileBounds(0, 5));
+ break;
+ case TOP_RIGHT:
+ right_column_and_bottom_row_minus_existing_corner.Subtract(
+ pile_.tiling().TileBounds(5, 0));
+ break;
+ case BOTTOM_RIGHT:
+ right_column_and_bottom_row_minus_existing_corner.Subtract(
+ pile_.tiling().TileBounds(5, 5));
+ break;
+ }
+ expected_invalidation.Union(
+ right_column_and_bottom_row_minus_existing_corner);
EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
invalidation.Clear();
}
@@ -796,268 +891,235 @@ TEST_P(PicturePileResizeCornerTest, SmallResizePileOutsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
- UpdateAndExpandInvalidation(
- &invalidation,
- grow_down_tiling_size,
- CornerSinglePixelRect(corner, grow_down_tiling_size));
+ // In this test (unlike the large resize test), as all growing and shrinking
+ // happens within tiles, the resulting invalidation is symmetrical, so use
+ // this enum to repeat the test both ways.
+ enum ChangeDirection { GROW, SHRINK, LAST_DIRECTION = SHRINK };
- // We should have lost the recordings in the bottom row that do not intersect
- // the interest rect.
- EXPECT_EQ(6, pile_.tiling().num_tiles_x());
- EXPECT_EQ(6, pile_.tiling().num_tiles_y());
- for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
- bool expect_tile;
+ // Grow downward.
+ for (int dir = 0; dir <= LAST_DIRECTION; ++dir) {
+ gfx::Size new_tiling_size =
+ dir == GROW ? grow_down_tiling_size : base_tiling_size;
+ UpdateWholePile();
+ UpdateAndExpandInvalidation(&invalidation, new_tiling_size,
+ CornerSinglePixelRect(corner, new_tiling_size));
+
+ // We should have lost the recordings in the bottom row that do not
+ // intersect the interest rect.
+ EXPECT_EQ(6, pile_.tiling().num_tiles_x());
+ EXPECT_EQ(6, pile_.tiling().num_tiles_y());
+ for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
+ for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
+ bool expect_tile;
+ switch (corner) {
+ case TOP_LEFT:
+ case TOP_RIGHT:
+ expect_tile = j < 5;
+ break;
+ case BOTTOM_LEFT:
+ // The interest rect in the bottom left tile means we'll record it.
+ expect_tile = j < 5 || (j == 5 && i == 0);
+ break;
+ case BOTTOM_RIGHT:
+ // The interest rect in the bottom right tile means we'll record it.
+ expect_tile = j < 5 || (j == 5 && i == 5);
+ break;
+ }
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture());
+ }
+ }
+
+ // We invalidated the bottom row outside the new interest rect. The tile
+ // that insects the interest rect in invalidated only on its newly
+ // exposed or previously exposed pixels.
+ if (dir == GROW) {
+ // Only calculate the expected invalidation while growing, as the tile
+ // bounds post-growing is the newly exposed / previously exposed sizes.
+ // Post-shrinking, the tile bounds are smaller, so can't be used.
switch (corner) {
case TOP_LEFT:
case TOP_RIGHT:
- expect_tile = j < 5;
+ expected_invalidation = gfx::UnionRects(
+ pile_.tiling().TileBounds(0, 5), pile_.tiling().TileBounds(5, 5));
break;
case BOTTOM_LEFT:
- // The interest rect in the bottom left tile means we'll record it.
- expect_tile = j < 5 || (j == 5 && i == 0);
+ expected_invalidation = gfx::UnionRects(
+ pile_.tiling().TileBounds(1, 5), pile_.tiling().TileBounds(5, 5));
+ expected_invalidation.Union(SubtractRects(
+ pile_.tiling().TileBounds(0, 5), gfx::Rect(base_tiling_size)));
break;
case BOTTOM_RIGHT:
- // The interest rect in the bottom right tile means we'll record it.
- expect_tile = j < 5 || (j == 5 && i == 5);
+ expected_invalidation = gfx::UnionRects(
+ pile_.tiling().TileBounds(0, 5), pile_.tiling().TileBounds(4, 5));
+ expected_invalidation.Union(SubtractRects(
+ pile_.tiling().TileBounds(5, 5), gfx::Rect(base_tiling_size)));
break;
}
- EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture());
}
+ EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
+ invalidation.Clear();
}
- // We invalidated the bottom row outside the new interest rect. The tile that
- // insects the interest rect in invalidated only on its new pixels.
- switch (corner) {
- case TOP_LEFT:
- case TOP_RIGHT:
- expected_invalidation = gfx::UnionRects(pile_.tiling().TileBounds(0, 5),
- pile_.tiling().TileBounds(5, 5));
- break;
- case BOTTOM_LEFT:
- expected_invalidation = gfx::UnionRects(pile_.tiling().TileBounds(1, 5),
- pile_.tiling().TileBounds(5, 5));
- expected_invalidation.Union(SubtractRects(pile_.tiling().TileBounds(0, 5),
- gfx::Rect(base_tiling_size)));
- break;
- case BOTTOM_RIGHT:
- expected_invalidation = gfx::UnionRects(pile_.tiling().TileBounds(0, 5),
- pile_.tiling().TileBounds(4, 5));
- expected_invalidation.Union(SubtractRects(pile_.tiling().TileBounds(5, 5),
- gfx::Rect(base_tiling_size)));
- break;
- }
- EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
- invalidation.Clear();
-
- UpdateWholePile();
- UpdateAndExpandInvalidation(&invalidation,
- base_tiling_size,
- CornerSinglePixelRect(corner, base_tiling_size));
-
- // We should have lost nothing.
- EXPECT_EQ(6, pile_.tiling().num_tiles_x());
- EXPECT_EQ(6, pile_.tiling().num_tiles_y());
- for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
- EXPECT_TRUE(it != map.end() && it->second.GetPicture());
+ // Grow right.
+ for (int dir = 0; dir <= LAST_DIRECTION; ++dir) {
+ gfx::Size new_tiling_size =
+ dir == GROW ? grow_right_tiling_size : base_tiling_size;
+ UpdateWholePile();
+ UpdateAndExpandInvalidation(&invalidation, new_tiling_size,
+ CornerSinglePixelRect(corner, new_tiling_size));
+
+ // We should have lost the recordings in the right column.
+ EXPECT_EQ(6, pile_.tiling().num_tiles_x());
+ EXPECT_EQ(6, pile_.tiling().num_tiles_y());
+ for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
+ for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
+ bool expect_tile;
+ switch (corner) {
+ case TOP_LEFT:
+ case BOTTOM_LEFT:
+ expect_tile = i < 5;
+ break;
+ case TOP_RIGHT:
+ // The interest rect in the top right tile means we'll record it.
+ expect_tile = i < 5 || (j == 0 && i == 5);
+ break;
+ case BOTTOM_RIGHT:
+ // The interest rect in the bottom right tile means we'll record it.
+ expect_tile = i < 5 || (j == 5 && i == 5);
+ break;
+ }
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture());
+ }
}
- }
-
- // We invalidated nothing.
- expected_invalidation.Clear();
- EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
- invalidation.Clear();
-
- UpdateWholePile();
- UpdateAndExpandInvalidation(
- &invalidation,
- grow_right_tiling_size,
- CornerSinglePixelRect(corner, grow_right_tiling_size));
- // We should have lost the recordings in the right column.
- EXPECT_EQ(6, pile_.tiling().num_tiles_x());
- EXPECT_EQ(6, pile_.tiling().num_tiles_y());
- for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
- bool expect_tile;
+ // We invalidated the right column outside the new interest rect. The tile
+ // that insects the interest rect in invalidated only on its new or
+ // previously exposed pixels.
+ if (dir == GROW) {
+ // Calculate the expected invalidation the first time through the loop.
switch (corner) {
case TOP_LEFT:
case BOTTOM_LEFT:
- expect_tile = i < 5;
+ expected_invalidation = gfx::UnionRects(
+ pile_.tiling().TileBounds(5, 0), pile_.tiling().TileBounds(5, 5));
break;
case TOP_RIGHT:
- // The interest rect in the top right tile means we'll record it.
- expect_tile = i < 5 || (j == 0 && i == 5);
+ expected_invalidation = gfx::UnionRects(
+ pile_.tiling().TileBounds(5, 1), pile_.tiling().TileBounds(5, 5));
+ expected_invalidation.Union(SubtractRects(
+ pile_.tiling().TileBounds(5, 0), gfx::Rect(base_tiling_size)));
break;
case BOTTOM_RIGHT:
- // The interest rect in the bottom right tile means we'll record it.
- expect_tile = i < 5 || (j == 5 && i == 5);
+ expected_invalidation = gfx::UnionRects(
+ pile_.tiling().TileBounds(5, 0), pile_.tiling().TileBounds(5, 4));
+ expected_invalidation.Union(SubtractRects(
+ pile_.tiling().TileBounds(5, 5), gfx::Rect(base_tiling_size)));
break;
}
- EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture());
}
+ EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
+ invalidation.Clear();
}
- // We invalidated the right column outside the new interest rect. The tile
- // that insects the interest rect in invalidated only on its new pixels.
- switch (corner) {
- case TOP_LEFT:
- case BOTTOM_LEFT:
- expected_invalidation = gfx::UnionRects(pile_.tiling().TileBounds(5, 0),
- pile_.tiling().TileBounds(5, 5));
- break;
- case TOP_RIGHT:
- expected_invalidation = gfx::UnionRects(pile_.tiling().TileBounds(5, 1),
- pile_.tiling().TileBounds(5, 5));
- expected_invalidation.Union(SubtractRects(pile_.tiling().TileBounds(5, 0),
- gfx::Rect(base_tiling_size)));
- break;
- case BOTTOM_RIGHT:
- expected_invalidation = gfx::UnionRects(pile_.tiling().TileBounds(5, 0),
- pile_.tiling().TileBounds(5, 4));
- expected_invalidation.Union(SubtractRects(pile_.tiling().TileBounds(5, 5),
- gfx::Rect(base_tiling_size)));
- break;
- }
- EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
- invalidation.Clear();
-
- UpdateWholePile();
- UpdateAndExpandInvalidation(&invalidation,
- base_tiling_size,
- CornerSinglePixelRect(corner, base_tiling_size));
-
- // We should have lost nothing.
- EXPECT_EQ(6, pile_.tiling().num_tiles_x());
- EXPECT_EQ(6, pile_.tiling().num_tiles_y());
- for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
- EXPECT_TRUE(it != map.end() && it->second.GetPicture());
+ // Grow both.
+ for (int dir = 0; dir <= LAST_DIRECTION; ++dir) {
+ gfx::Size new_tiling_size =
+ dir == GROW ? grow_both_tiling_size : base_tiling_size;
+ UpdateWholePile();
+ UpdateAndExpandInvalidation(&invalidation, new_tiling_size,
+ CornerSinglePixelRect(corner, new_tiling_size));
+
+ // We should have lost the recordings in the right column and bottom row.
+ // The tile that insects the interest rect in invalidated only on its new
+ // or previously exposed pixels.
+ EXPECT_EQ(6, pile_.tiling().num_tiles_x());
+ EXPECT_EQ(6, pile_.tiling().num_tiles_y());
+ for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
+ for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
+ bool expect_tile;
+ switch (corner) {
+ case TOP_LEFT:
+ expect_tile = i < 5 && j < 5;
+ break;
+ case TOP_RIGHT:
+ // The interest rect in the top right tile means we'll record it.
+ expect_tile = (i < 5 && j < 5) || (j == 0 && i == 5);
+ break;
+ case BOTTOM_LEFT:
+ // The interest rect in the bottom left tile means we'll record it.
+ expect_tile = (i < 5 && j < 5) || (j == 5 && i == 0);
+ break;
+ case BOTTOM_RIGHT:
+ // The interest rect in the bottom right tile means we'll record it.
+ expect_tile = (i < 5 && j < 5) || (j == 5 && i == 5);
+ break;
+ }
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture())
+ << i << "," << j;
+ }
}
- }
- // We invalidated nothing.
- expected_invalidation.Clear();
- EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
- invalidation.Clear();
-
- UpdateWholePile();
- UpdateAndExpandInvalidation(
- &invalidation,
- grow_both_tiling_size,
- CornerSinglePixelRect(corner, grow_both_tiling_size));
-
- // We should have lost the recordings in the right column and bottom row. The
- // tile that insects the interest rect in invalidated only on its new pixels.
- EXPECT_EQ(6, pile_.tiling().num_tiles_x());
- EXPECT_EQ(6, pile_.tiling().num_tiles_y());
- for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
- bool expect_tile;
+ // We invalidated the right column and the bottom row outside the new
+ // interest rect. The tile that insects the interest rect in invalidated
+ // only on its new or previous exposed pixels.
+ if (dir == GROW) {
+ // Calculate the expected invalidation the first time through the loop.
switch (corner) {
case TOP_LEFT:
- expect_tile = i < 5 && j < 5;
+ expected_invalidation = gfx::UnionRects(
+ pile_.tiling().TileBounds(5, 0), pile_.tiling().TileBounds(5, 5));
+ expected_invalidation.Union(
+ gfx::UnionRects(pile_.tiling().TileBounds(0, 5),
+ pile_.tiling().TileBounds(5, 5)));
break;
case TOP_RIGHT:
- // The interest rect in the top right tile means we'll record it.
- expect_tile = (i < 5 && j < 5) || (j == 0 && i == 5);
+ expected_invalidation = gfx::UnionRects(
+ pile_.tiling().TileBounds(5, 1), pile_.tiling().TileBounds(5, 5));
+ expected_invalidation.Union(
+ gfx::UnionRects(pile_.tiling().TileBounds(0, 5),
+ pile_.tiling().TileBounds(5, 5)));
+ expected_invalidation.Union(SubtractRects(
+ pile_.tiling().TileBounds(5, 0), gfx::Rect(base_tiling_size)));
break;
case BOTTOM_LEFT:
- // The interest rect in the bottom left tile means we'll record it.
- expect_tile = (i < 5 && j < 5) || (j == 5 && i == 0);
+ expected_invalidation = gfx::UnionRects(
+ pile_.tiling().TileBounds(5, 0), pile_.tiling().TileBounds(5, 5));
+ expected_invalidation.Union(
+ gfx::UnionRects(pile_.tiling().TileBounds(1, 5),
+ pile_.tiling().TileBounds(5, 5)));
+ expected_invalidation.Union(SubtractRects(
+ pile_.tiling().TileBounds(0, 5), gfx::Rect(base_tiling_size)));
break;
case BOTTOM_RIGHT:
- // The interest rect in the bottom right tile means we'll record it.
- expect_tile = (i < 5 && j < 5) || (j == 5 && i == 5);
+ expected_invalidation = gfx::UnionRects(
+ pile_.tiling().TileBounds(5, 0), pile_.tiling().TileBounds(5, 4));
+ expected_invalidation.Union(
+ gfx::UnionRects(pile_.tiling().TileBounds(0, 5),
+ pile_.tiling().TileBounds(4, 5)));
+ expected_invalidation.Union(SubtractRegions(
+ pile_.tiling().TileBounds(5, 5), gfx::Rect(base_tiling_size)));
break;
}
- EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture())
- << i << "," << j;
- }
- }
-
- // We invalidated the right column and the bottom row outside the new interest
- // rect. The tile that insects the interest rect in invalidated only on its
- // new pixels.
- switch (corner) {
- case TOP_LEFT:
- expected_invalidation = gfx::UnionRects(pile_.tiling().TileBounds(5, 0),
- pile_.tiling().TileBounds(5, 5));
- expected_invalidation.Union(gfx::UnionRects(
- pile_.tiling().TileBounds(0, 5), pile_.tiling().TileBounds(5, 5)));
- break;
- case TOP_RIGHT:
- expected_invalidation = gfx::UnionRects(pile_.tiling().TileBounds(5, 1),
- pile_.tiling().TileBounds(5, 5));
- expected_invalidation.Union(gfx::UnionRects(
- pile_.tiling().TileBounds(0, 5), pile_.tiling().TileBounds(5, 5)));
- expected_invalidation.Union(SubtractRects(pile_.tiling().TileBounds(5, 0),
- gfx::Rect(base_tiling_size)));
- break;
- case BOTTOM_LEFT:
- expected_invalidation = gfx::UnionRects(pile_.tiling().TileBounds(5, 0),
- pile_.tiling().TileBounds(5, 5));
- expected_invalidation.Union(gfx::UnionRects(
- pile_.tiling().TileBounds(1, 5), pile_.tiling().TileBounds(5, 5)));
- expected_invalidation.Union(SubtractRects(pile_.tiling().TileBounds(0, 5),
- gfx::Rect(base_tiling_size)));
- break;
- case BOTTOM_RIGHT:
- expected_invalidation = gfx::UnionRects(pile_.tiling().TileBounds(5, 0),
- pile_.tiling().TileBounds(5, 4));
- expected_invalidation.Union(gfx::UnionRects(
- pile_.tiling().TileBounds(0, 5), pile_.tiling().TileBounds(4, 5)));
- expected_invalidation.Union(SubtractRegions(
- pile_.tiling().TileBounds(5, 5), gfx::Rect(base_tiling_size)));
- break;
- }
- EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
- invalidation.Clear();
-
- UpdateWholePile();
- UpdateAndExpandInvalidation(&invalidation,
- base_tiling_size,
- CornerSinglePixelRect(corner, base_tiling_size));
-
- // We should have lost nothing.
- EXPECT_EQ(6, pile_.tiling().num_tiles_x());
- EXPECT_EQ(6, pile_.tiling().num_tiles_y());
- for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
- EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
+ EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
+ invalidation.Clear();
}
-
- // We invalidated nothing.
- expected_invalidation.Clear();
- EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
- invalidation.Clear();
}
INSTANTIATE_TEST_CASE_P(
@@ -1086,9 +1148,9 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
@@ -1101,9 +1163,9 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
EXPECT_EQ(8, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
@@ -1127,15 +1189,18 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
- // No invalidation when shrinking.
- EXPECT_EQ(Region().ToString(), invalidation.ToString());
+ // We invalidated the previously exposed pixels on the bottom row of tiles.
+ expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size),
+ gfx::Rect(base_tiling_size));
+ EXPECT_TRUE(expected_invalidation.Contains(bottom_row_new_pixels));
+ EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
invalidation.Clear();
UpdateWholePile();
@@ -1147,9 +1212,9 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
@@ -1173,15 +1238,18 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
- // No invalidation when shrinking.
- EXPECT_EQ(Region().ToString(), invalidation.ToString());
+ // We invalidated the previously exposed pixels on the right column of tiles.
+ expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size),
+ gfx::Rect(base_tiling_size));
+ EXPECT_TRUE(expected_invalidation.Contains(right_column_new_pixels));
+ EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
invalidation.Clear();
UpdateWholePile();
@@ -1193,9 +1261,9 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
EXPECT_EQ(8, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
@@ -1223,15 +1291,20 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
- // No invalidation when shrinking.
- EXPECT_EQ(Region().ToString(), invalidation.ToString());
+ // We invalidated the previously exposed pixels on the bottom row and right
+ // column of tiles.
+ expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size),
+ gfx::Rect(base_tiling_size));
+ EXPECT_TRUE(
+ expected_invalidation.Contains(bottom_row_and_right_column_new_pixels));
+ EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
invalidation.Clear();
}
@@ -1256,9 +1329,9 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
@@ -1271,9 +1344,9 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
@@ -1292,15 +1365,17 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
- // No invalidation when shrinking.
- EXPECT_EQ(Region().ToString(), invalidation.ToString());
+ // We invalidated the previously exposed pixels.
+ expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size),
+ gfx::Rect(base_tiling_size));
+ EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
invalidation.Clear();
UpdateWholePile();
@@ -1312,9 +1387,9 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
@@ -1333,15 +1408,17 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
- // No invalidation when shrinking.
- EXPECT_EQ(Region().ToString(), invalidation.ToString());
+ // We invalidated the previously exposed pixels.
+ expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size),
+ gfx::Rect(base_tiling_size));
+ EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
invalidation.Clear();
UpdateWholePile();
@@ -1353,9 +1430,9 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
@@ -1374,15 +1451,17 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
EXPECT_EQ(6, pile_.tiling().num_tiles_y());
for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- TestPicturePile::PictureMapKey key(i, j);
- TestPicturePile::PictureMap& map = pile_.picture_map();
- TestPicturePile::PictureMap::iterator it = map.find(key);
+ FakePicturePile::PictureMapKey key(i, j);
+ FakePicturePile::PictureMap& map = pile_.picture_map();
+ FakePicturePile::PictureMap::iterator it = map.find(key);
EXPECT_TRUE(it != map.end() && it->second.GetPicture());
}
}
- // No invalidation when shrinking.
- EXPECT_EQ(Region().ToString(), invalidation.ToString());
+ // We invalidated the previously exposed pixels.
+ expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size),
+ gfx::Rect(base_tiling_size));
+ EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
invalidation.Clear();
}
@@ -1458,12 +1537,12 @@ TEST_F(PicturePileTest, NonSolidRectangleOnOffsettedLayerIsNonSolid) {
TEST_F(PicturePileTest, SetEmptyBounds) {
EXPECT_TRUE(pile_.is_solid_color());
- EXPECT_FALSE(pile_.tiling_size().IsEmpty());
+ EXPECT_FALSE(pile_.GetSize().IsEmpty());
EXPECT_FALSE(pile_.picture_map().empty());
EXPECT_TRUE(pile_.HasRecordings());
pile_.SetEmptyBounds();
EXPECT_FALSE(pile_.is_solid_color());
- EXPECT_TRUE(pile_.tiling_size().IsEmpty());
+ EXPECT_TRUE(pile_.GetSize().IsEmpty());
EXPECT_TRUE(pile_.picture_map().empty());
EXPECT_FALSE(pile_.HasRecordings());
}
« no previous file with comments | « cc/resources/picture_pile_impl.cc ('k') | cc/resources/raster_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698