Index: cc/resources/picture_pile_impl_unittest.cc |
diff --git a/cc/resources/picture_pile_impl_unittest.cc b/cc/resources/picture_pile_impl_unittest.cc |
index 6e9afc7fda851cb6d642008763146066bc0e0422..72a815868b561071efd798a32fa2ac4997280a2f 100644 |
--- a/cc/resources/picture_pile_impl_unittest.cc |
+++ b/cc/resources/picture_pile_impl_unittest.cc |
@@ -19,21 +19,25 @@ TEST(PicturePileImplTest, AnalyzeIsSolidUnscaled) { |
gfx::Size tile_size(100, 100); |
gfx::Size layer_bounds(400, 400); |
- scoped_refptr<FakePicturePileImpl> pile = |
- FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
+ scoped_ptr<FakePicturePile> recording_source = |
+ FakePicturePile::CreateFilledPile(tile_size, layer_bounds); |
- SkColor solid_color = SkColorSetARGB(255, 12, 23, 34); |
SkPaint solid_paint; |
+ SkColor solid_color = SkColorSetARGB(255, 12, 23, 34); |
solid_paint.setColor(solid_color); |
SkColor non_solid_color = SkColorSetARGB(128, 45, 56, 67); |
SkPaint non_solid_paint; |
non_solid_paint.setColor(non_solid_color); |
- pile->add_draw_rect_with_paint(gfx::Rect(0, 0, 400, 400), solid_paint); |
- pile->RerecordPile(); |
+ recording_source->add_draw_rect_with_paint(gfx::Rect(0, 0, 400, 400), |
+ solid_paint); |
+ recording_source->RerecordPile(); |
+ |
+ scoped_refptr<FakePicturePileImpl> pile = |
+ FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
- // Ensure everything is solid |
+ // Ensure everything is solid. |
for (int y = 0; y <= 300; y += 100) { |
for (int x = 0; x <= 300; x += 100) { |
RasterSource::SolidColorAnalysis analysis; |
@@ -44,9 +48,11 @@ TEST(PicturePileImplTest, AnalyzeIsSolidUnscaled) { |
} |
} |
- // One pixel non solid |
- pile->add_draw_rect_with_paint(gfx::Rect(50, 50, 1, 1), non_solid_paint); |
- pile->RerecordPile(); |
+ // Add one non-solid pixel and recreate the raster source. |
+ recording_source->add_draw_rect_with_paint(gfx::Rect(50, 50, 1, 1), |
+ non_solid_paint); |
+ recording_source->RerecordPile(); |
+ pile = FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
RasterSource::SolidColorAnalysis analysis; |
pile->PerformSolidColorAnalysis(gfx::Rect(0, 0, 100, 100), 1.0, &analysis); |
@@ -56,7 +62,7 @@ TEST(PicturePileImplTest, AnalyzeIsSolidUnscaled) { |
EXPECT_TRUE(analysis.is_solid_color); |
EXPECT_EQ(analysis.solid_color, solid_color); |
- // Boundaries should be clipped |
+ // Boundaries should be clipped. |
analysis.is_solid_color = false; |
pile->PerformSolidColorAnalysis(gfx::Rect(350, 0, 100, 100), 1.0, &analysis); |
EXPECT_TRUE(analysis.is_solid_color); |
@@ -78,8 +84,8 @@ TEST(PicturePileImplTest, AnalyzeIsSolidScaled) { |
gfx::Size tile_size(100, 100); |
gfx::Size layer_bounds(400, 400); |
- scoped_refptr<FakePicturePileImpl> pile = |
- FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
+ scoped_ptr<FakePicturePile> recording_source = |
+ FakePicturePile::CreateFilledPile(tile_size, layer_bounds); |
SkColor solid_color = SkColorSetARGB(255, 12, 23, 34); |
SkPaint solid_paint; |
@@ -89,10 +95,14 @@ TEST(PicturePileImplTest, AnalyzeIsSolidScaled) { |
SkPaint non_solid_paint; |
non_solid_paint.setColor(non_solid_color); |
- pile->add_draw_rect_with_paint(gfx::Rect(0, 0, 400, 400), solid_paint); |
- pile->RerecordPile(); |
+ recording_source->add_draw_rect_with_paint(gfx::Rect(0, 0, 400, 400), |
+ solid_paint); |
+ recording_source->RerecordPile(); |
- // Ensure everything is solid |
+ scoped_refptr<FakePicturePileImpl> pile = |
+ FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
+ |
+ // Ensure everything is solid. |
for (int y = 0; y <= 30; y += 10) { |
for (int x = 0; x <= 30; x += 10) { |
RasterSource::SolidColorAnalysis analysis; |
@@ -103,9 +113,11 @@ TEST(PicturePileImplTest, AnalyzeIsSolidScaled) { |
} |
} |
- // One pixel non solid |
- pile->add_draw_rect_with_paint(gfx::Rect(50, 50, 1, 1), non_solid_paint); |
- pile->RerecordPile(); |
+ // Add one non-solid pixel and recreate the raster source. |
+ recording_source->add_draw_rect_with_paint(gfx::Rect(50, 50, 1, 1), |
+ non_solid_paint); |
+ recording_source->RerecordPile(); |
+ pile = FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
RasterSource::SolidColorAnalysis analysis; |
pile->PerformSolidColorAnalysis(gfx::Rect(0, 0, 10, 10), 0.1f, &analysis); |
@@ -115,7 +127,7 @@ TEST(PicturePileImplTest, AnalyzeIsSolidScaled) { |
EXPECT_TRUE(analysis.is_solid_color); |
EXPECT_EQ(analysis.solid_color, solid_color); |
- // Boundaries should be clipped |
+ // Boundaries should be clipped. |
analysis.is_solid_color = false; |
pile->PerformSolidColorAnalysis(gfx::Rect(35, 0, 10, 10), 0.1f, &analysis); |
EXPECT_TRUE(analysis.is_solid_color); |
@@ -209,24 +221,30 @@ TEST(PicturePileImplTest, PixelRefIteratorNoDiscardableRefs) { |
gfx::Size tile_size(128, 128); |
gfx::Size layer_bounds(256, 256); |
- scoped_refptr<FakePicturePileImpl> pile = |
- FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- |
+ scoped_ptr<FakePicturePile> recording_source = |
+ FakePicturePile::CreateFilledPile(tile_size, layer_bounds); |
SkPaint simple_paint; |
simple_paint.setColor(SkColorSetARGB(255, 12, 23, 34)); |
SkBitmap non_discardable_bitmap; |
CreateBitmap(gfx::Size(128, 128), "notdiscardable", &non_discardable_bitmap); |
- pile->add_draw_rect_with_paint(gfx::Rect(0, 0, 256, 256), simple_paint); |
- pile->add_draw_rect_with_paint(gfx::Rect(128, 128, 512, 512), simple_paint); |
- pile->add_draw_rect_with_paint(gfx::Rect(512, 0, 256, 256), simple_paint); |
- pile->add_draw_rect_with_paint(gfx::Rect(0, 512, 256, 256), simple_paint); |
- pile->add_draw_bitmap(non_discardable_bitmap, gfx::Point(128, 0)); |
- pile->add_draw_bitmap(non_discardable_bitmap, gfx::Point(0, 128)); |
- pile->add_draw_bitmap(non_discardable_bitmap, gfx::Point(150, 150)); |
+ recording_source->add_draw_rect_with_paint(gfx::Rect(0, 0, 256, 256), |
+ simple_paint); |
+ recording_source->add_draw_rect_with_paint(gfx::Rect(128, 128, 512, 512), |
+ simple_paint); |
+ recording_source->add_draw_rect_with_paint(gfx::Rect(512, 0, 256, 256), |
+ simple_paint); |
+ recording_source->add_draw_rect_with_paint(gfx::Rect(0, 512, 256, 256), |
+ simple_paint); |
+ recording_source->add_draw_bitmap(non_discardable_bitmap, gfx::Point(128, 0)); |
+ recording_source->add_draw_bitmap(non_discardable_bitmap, gfx::Point(0, 128)); |
+ recording_source->add_draw_bitmap(non_discardable_bitmap, |
+ gfx::Point(150, 150)); |
+ recording_source->RerecordPile(); |
- pile->RerecordPile(); |
+ scoped_refptr<FakePicturePileImpl> pile = |
+ FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
// Tile sized iterators. |
{ |
@@ -282,8 +300,8 @@ TEST(PicturePileImplTest, PixelRefIteratorDiscardableRefs) { |
gfx::Size tile_size(128, 128); |
gfx::Size layer_bounds(256, 256); |
- scoped_refptr<FakePicturePileImpl> pile = |
- FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
+ scoped_ptr<FakePicturePile> recording_source = |
+ FakePicturePile::CreateFilledPile(tile_size, layer_bounds); |
SkBitmap discardable_bitmap[2][2]; |
CreateBitmap(gfx::Size(32, 32), "discardable", &discardable_bitmap[0][0]); |
@@ -296,11 +314,15 @@ TEST(PicturePileImplTest, PixelRefIteratorDiscardableRefs) { |
// |---|---| |
// | x | x | |
// |---|---| |
- pile->add_draw_bitmap(discardable_bitmap[0][0], gfx::Point(0, 0)); |
- pile->add_draw_bitmap(discardable_bitmap[1][0], gfx::Point(0, 130)); |
- pile->add_draw_bitmap(discardable_bitmap[1][1], gfx::Point(140, 140)); |
+ recording_source->add_draw_bitmap(discardable_bitmap[0][0], gfx::Point(0, 0)); |
+ recording_source->add_draw_bitmap(discardable_bitmap[1][0], |
+ gfx::Point(0, 130)); |
+ recording_source->add_draw_bitmap(discardable_bitmap[1][1], |
+ gfx::Point(140, 140)); |
+ recording_source->RerecordPile(); |
- pile->RerecordPile(); |
+ scoped_refptr<FakePicturePileImpl> pile = |
+ FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
// Tile sized iterators. These should find only one pixel ref. |
{ |
@@ -392,8 +414,8 @@ TEST(PicturePileImplTest, PixelRefIteratorDiscardableRefsOneTile) { |
gfx::Size tile_size(256, 256); |
gfx::Size layer_bounds(512, 512); |
- scoped_refptr<FakePicturePileImpl> pile = |
- FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
+ scoped_ptr<FakePicturePile> recording_source = |
+ FakePicturePile::CreateFilledPile(tile_size, layer_bounds); |
SkBitmap discardable_bitmap[2][2]; |
CreateBitmap(gfx::Size(32, 32), "discardable", &discardable_bitmap[0][0]); |
@@ -406,11 +428,15 @@ TEST(PicturePileImplTest, PixelRefIteratorDiscardableRefsOneTile) { |
// |---|---| |
// | | x | |
// |---|---| |
- pile->add_draw_bitmap(discardable_bitmap[0][0], gfx::Point(0, 0)); |
- pile->add_draw_bitmap(discardable_bitmap[0][1], gfx::Point(260, 0)); |
- pile->add_draw_bitmap(discardable_bitmap[1][1], gfx::Point(260, 260)); |
+ recording_source->add_draw_bitmap(discardable_bitmap[0][0], gfx::Point(0, 0)); |
+ recording_source->add_draw_bitmap(discardable_bitmap[0][1], |
+ gfx::Point(260, 0)); |
+ recording_source->add_draw_bitmap(discardable_bitmap[1][1], |
+ gfx::Point(260, 260)); |
+ recording_source->RerecordPile(); |
- pile->RerecordPile(); |
+ scoped_refptr<FakePicturePileImpl> pile = |
+ FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
// Tile sized iterators. These should find only one pixel ref. |
{ |
@@ -523,8 +549,8 @@ TEST(PicturePileImplTest, PixelRefIteratorDiscardableRefsBaseNonDiscardable) { |
gfx::Size tile_size(256, 256); |
gfx::Size layer_bounds(512, 512); |
- scoped_refptr<FakePicturePileImpl> pile = |
- FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
+ scoped_ptr<FakePicturePile> recording_source = |
+ FakePicturePile::CreateFilledPile(tile_size, layer_bounds); |
SkBitmap non_discardable_bitmap; |
CreateBitmap(gfx::Size(512, 512), "notdiscardable", &non_discardable_bitmap); |
@@ -541,12 +567,16 @@ TEST(PicturePileImplTest, PixelRefIteratorDiscardableRefsBaseNonDiscardable) { |
// |---|---| |
// | | x | |
// |---|---| |
- pile->add_draw_bitmap(non_discardable_bitmap, gfx::Point(0, 0)); |
- pile->add_draw_bitmap(discardable_bitmap[0][0], gfx::Point(0, 0)); |
- pile->add_draw_bitmap(discardable_bitmap[0][1], gfx::Point(260, 0)); |
- pile->add_draw_bitmap(discardable_bitmap[1][1], gfx::Point(260, 260)); |
+ recording_source->add_draw_bitmap(non_discardable_bitmap, gfx::Point(0, 0)); |
+ recording_source->add_draw_bitmap(discardable_bitmap[0][0], gfx::Point(0, 0)); |
+ recording_source->add_draw_bitmap(discardable_bitmap[0][1], |
+ gfx::Point(260, 0)); |
+ recording_source->add_draw_bitmap(discardable_bitmap[1][1], |
+ gfx::Point(260, 260)); |
+ recording_source->RerecordPile(); |
- pile->RerecordPile(); |
+ scoped_refptr<FakePicturePileImpl> pile = |
+ FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
// Tile sized iterators. These should find only one pixel ref. |
{ |
@@ -640,19 +670,25 @@ TEST(PicturePileImplTest, RasterFullContents) { |
float contents_scale = 1.5f; |
float raster_divisions = 2.f; |
- scoped_refptr<FakePicturePileImpl> pile = |
- FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
+ scoped_ptr<FakePicturePile> recording_source = |
+ FakePicturePile::CreateFilledPile(tile_size, layer_bounds); |
+ recording_source->SetBackgroundColor(SK_ColorBLACK); |
+ recording_source->SetIsSolidColor(false); |
+ recording_source->SetRequiresClear(false); |
+ recording_source->SetClearCanvasWithDebugColor(false); |
+ |
// Because the caller sets content opaque, it also promises that it |
// has at least filled in layer_bounds opaquely. |
SkPaint white_paint; |
white_paint.setColor(SK_ColorWHITE); |
- pile->add_draw_rect_with_paint(gfx::Rect(layer_bounds), white_paint); |
+ recording_source->add_draw_rect_with_paint(gfx::Rect(layer_bounds), |
+ white_paint); |
- pile->SetMinContentsScale(contents_scale); |
- pile->set_background_color(SK_ColorBLACK); |
- pile->SetRequiresClear(false); |
- pile->set_clear_canvas_with_debug_color(false); |
- pile->RerecordPile(); |
+ recording_source->SetMinContentsScale(contents_scale); |
+ recording_source->RerecordPile(); |
+ |
+ scoped_refptr<FakePicturePileImpl> pile = |
+ FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
gfx::Size content_bounds( |
gfx::ToCeiledSize(gfx::ScaleSize(layer_bounds, contents_scale))); |
@@ -703,14 +739,16 @@ TEST(PicturePileImpl, RasterContentsTransparent) { |
gfx::Size layer_bounds(5, 3); |
float contents_scale = 0.5f; |
- scoped_refptr<FakePicturePileImpl> pile = |
- FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- pile->set_background_color(SK_ColorTRANSPARENT); |
- pile->SetRequiresClear(true); |
- pile->SetMinContentsScale(contents_scale); |
- pile->set_clear_canvas_with_debug_color(false); |
- pile->RerecordPile(); |
+ scoped_ptr<FakePicturePile> recording_source = |
+ FakePicturePile::CreateFilledPile(tile_size, layer_bounds); |
+ recording_source->SetBackgroundColor(SK_ColorTRANSPARENT); |
+ recording_source->SetRequiresClear(true); |
+ recording_source->SetMinContentsScale(contents_scale); |
+ recording_source->SetClearCanvasWithDebugColor(false); |
+ recording_source->RerecordPile(); |
+ scoped_refptr<FakePicturePileImpl> pile = |
+ FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
gfx::Size content_bounds( |
gfx::ToCeiledSize(gfx::ScaleSize(layer_bounds, contents_scale))); |
@@ -743,21 +781,24 @@ TEST_P(OverlapTest, NoOverlap) { |
// Pick an opaque color to not have to deal with premultiplication off-by-one. |
SkColor test_color = SkColorSetARGB(255, 45, 56, 67); |
- scoped_refptr<FakePicturePileImpl> pile = |
- FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- pile->set_background_color(SK_ColorTRANSPARENT); |
- pile->SetRequiresClear(true); |
- pile->SetMinContentsScale(MinContentsScale()); |
- pile->set_clear_canvas_with_debug_color(true); |
+ scoped_ptr<FakePicturePile> recording_source = |
+ FakePicturePile::CreateFilledPile(tile_size, layer_bounds); |
+ recording_source->SetBackgroundColor(SK_ColorTRANSPARENT); |
+ recording_source->SetRequiresClear(true); |
+ recording_source->SetMinContentsScale(MinContentsScale()); |
+ recording_source->SetClearCanvasWithDebugColor(true); |
+ |
SkPaint color_paint; |
color_paint.setColor(test_color); |
// Additive paint, so that if two paints overlap, the color will change. |
color_paint.setXfermodeMode(SkXfermode::kPlus_Mode); |
// Paint outside the layer to make sure that blending works. |
- pile->add_draw_rect_with_paint(gfx::RectF(bigger_than_layer_bounds), |
- color_paint); |
- pile->RerecordPile(); |
+ recording_source->add_draw_rect_with_paint( |
+ gfx::RectF(bigger_than_layer_bounds), color_paint); |
+ recording_source->RerecordPile(); |
+ scoped_refptr<FakePicturePileImpl> pile = |
+ FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
gfx::Size content_bounds( |
gfx::ToCeiledSize(gfx::ScaleSize(layer_bounds, contents_scale))); |
@@ -793,25 +834,33 @@ TEST(PicturePileImplTest, PixelRefIteratorBorders) { |
gfx::Size tile_size(128, 128); |
gfx::Size layer_bounds(320, 128); |
- // Fake picture pile impl uses a tile grid the size of the tile. So, |
+ // Fake picture pile uses a tile grid the size of the tile. So, |
// any iteration that intersects with a tile will return all pixel refs |
// inside of it. |
- scoped_refptr<FakePicturePileImpl> pile = |
- FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- pile->SetMinContentsScale(0.5f); |
+ scoped_ptr<FakePicturePile> recording_source = |
+ FakePicturePile::CreateFilledPile(tile_size, layer_bounds); |
+ recording_source->SetMinContentsScale(0.5f); |
// Bitmaps 0-2 are exactly on tiles 0-2, so that they overlap the borders |
// of adjacent tiles. |
- gfx::Rect bitmap_rects[] = {pile->tiling().TileBounds(0, 0), |
- pile->tiling().TileBounds(1, 0), |
- pile->tiling().TileBounds(2, 0), }; |
+ gfx::Rect bitmap_rects[] = { |
+ recording_source->tiling().TileBounds(0, 0), |
+ recording_source->tiling().TileBounds(1, 0), |
+ recording_source->tiling().TileBounds(2, 0), |
+ }; |
SkBitmap discardable_bitmap[arraysize(bitmap_rects)]; |
for (size_t i = 0; i < arraysize(bitmap_rects); ++i) { |
CreateBitmap(bitmap_rects[i].size(), "discardable", &discardable_bitmap[i]); |
- pile->add_draw_bitmap(discardable_bitmap[i], bitmap_rects[i].origin()); |
+ recording_source->add_draw_bitmap(discardable_bitmap[i], |
+ bitmap_rects[i].origin()); |
} |
+ recording_source->RerecordPile(); |
+ |
+ scoped_refptr<FakePicturePileImpl> pile = |
+ FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
+ |
// Sanity check that bitmaps 0-2 intersect the borders of their adjacent |
// tiles, but not the actual tiles. |
EXPECT_TRUE( |
@@ -827,8 +876,6 @@ TEST(PicturePileImplTest, PixelRefIteratorBorders) { |
bitmap_rects[2].Intersects(pile->tiling().TileBoundsWithBorder(1, 0))); |
EXPECT_FALSE(bitmap_rects[2].Intersects(pile->tiling().TileBounds(1, 0))); |
- pile->RerecordPile(); |
- |
// Tile-sized iterators. |
{ |
// Because tile 0's borders extend onto tile 1, it will include both |