Index: cc/test/fake_picture_pile_impl.cc |
diff --git a/cc/test/fake_picture_pile_impl.cc b/cc/test/fake_picture_pile_impl.cc |
index bdba09255fe419c72ffa8d202409fe98cc91e4db..8353d271ee25a35d3bbbf706c40bb4c9d663c31b 100644 |
--- a/cc/test/fake_picture_pile_impl.cc |
+++ b/cc/test/fake_picture_pile_impl.cc |
@@ -10,7 +10,6 @@ |
#include "base/synchronization/waitable_event.h" |
#include "cc/resources/picture_pile.h" |
-#include "cc/test/fake_picture_pile.h" |
#include "cc/test/impl_side_painting_settings.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -29,43 +28,47 @@ FakePicturePileImpl::FakePicturePileImpl( |
FakePicturePileImpl::~FakePicturePileImpl() {} |
-scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateFilledPile( |
+scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreatePile( |
const gfx::Size& tile_size, |
- const gfx::Size& layer_bounds) { |
+ const gfx::Size& layer_bounds, |
+ bool is_filled) { |
FakePicturePile pile(ImplSidePaintingSettings().minimum_contents_scale, |
ImplSidePaintingSettings().default_tile_grid_size); |
pile.tiling().SetBorderTexels(0); |
pile.tiling().SetTilingSize(layer_bounds); |
pile.tiling().SetMaxTextureSize(tile_size); |
- pile.SetRecordedViewport(gfx::Rect(layer_bounds)); |
- pile.SetHasAnyRecordings(true); |
- |
+ pile.SetRecordedViewport(is_filled ? gfx::Rect(layer_bounds) : gfx::Rect()); |
+ pile.SetHasAnyRecordings(is_filled); |
+ if (is_filled) { |
+ for (int x = 0; x < pile.tiling().num_tiles_x(); ++x) { |
+ for (int y = 0; y < pile.tiling().num_tiles_y(); ++y) |
+ pile.AddRecordingAt(x, y); |
+ } |
+ } |
scoped_refptr<FakePicturePileImpl> pile_impl( |
new FakePicturePileImpl(&pile, nullptr)); |
- for (int x = 0; x < pile_impl->tiling().num_tiles_x(); ++x) { |
- for (int y = 0; y < pile_impl->tiling().num_tiles_y(); ++y) |
- pile_impl->AddRecordingAt(x, y); |
- } |
return pile_impl; |
} |
+scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateFilledPile( |
+ const gfx::Size& tile_size, |
+ const gfx::Size& layer_bounds) { |
+ bool is_filled = true; |
+ return CreatePile(tile_size, layer_bounds, is_filled); |
+} |
+ |
scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateEmptyPile( |
const gfx::Size& tile_size, |
const gfx::Size& layer_bounds) { |
- FakePicturePile pile(ImplSidePaintingSettings().minimum_contents_scale, |
- ImplSidePaintingSettings().default_tile_grid_size); |
- pile.tiling().SetBorderTexels(0); |
- pile.tiling().SetTilingSize(layer_bounds); |
- pile.tiling().SetMaxTextureSize(tile_size); |
- pile.SetRecordedViewport(gfx::Rect()); |
- pile.SetHasAnyRecordings(false); |
- return make_scoped_refptr(new FakePicturePileImpl(&pile, nullptr)); |
+ bool is_filled = false; |
+ return CreatePile(tile_size, layer_bounds, is_filled); |
} |
scoped_refptr<FakePicturePileImpl> |
FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings( |
const gfx::Size& tile_size, |
- const gfx::Size& layer_bounds) { |
+ const gfx::Size& layer_bounds, |
+ bool is_solid_color) { |
FakePicturePile pile(ImplSidePaintingSettings().minimum_contents_scale, |
ImplSidePaintingSettings().default_tile_grid_size); |
pile.tiling().SetBorderTexels(0); |
@@ -74,6 +77,7 @@ FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings( |
// This simulates a false positive for this flag. |
pile.SetRecordedViewport(gfx::Rect()); |
pile.SetHasAnyRecordings(true); |
+ pile.SetIsSolidColor(is_solid_color); |
return make_scoped_refptr(new FakePicturePileImpl(&pile, nullptr)); |
} |
@@ -87,10 +91,9 @@ FakePicturePileImpl::CreateInfiniteFilledPile() { |
pile.tiling().SetMaxTextureSize(size); |
pile.SetRecordedViewport(gfx::Rect(size)); |
pile.SetHasAnyRecordings(true); |
- |
+ pile.AddRecordingAt(0, 0); |
scoped_refptr<FakePicturePileImpl> pile_impl( |
new FakePicturePileImpl(&pile, nullptr)); |
- pile_impl->AddRecordingAt(0, 0); |
return pile_impl; |
} |
@@ -109,38 +112,6 @@ void FakePicturePileImpl::PlaybackToCanvas(SkCanvas* canvas, |
PicturePileImpl::PlaybackToCanvas(canvas, canvas_rect, contents_scale); |
} |
-void FakePicturePileImpl::AddRecordingAt(int x, int y) { |
- EXPECT_GE(x, 0); |
- EXPECT_GE(y, 0); |
- EXPECT_LT(x, tiling_.num_tiles_x()); |
- EXPECT_LT(y, tiling_.num_tiles_y()); |
- |
- if (HasRecordingAt(x, y)) |
- return; |
- gfx::Rect bounds(tiling().TileBounds(x, y)); |
- bounds.Inset(-buffer_pixels(), -buffer_pixels()); |
- |
- scoped_refptr<Picture> picture( |
- Picture::Create(bounds, &client_, tile_grid_size_, true, |
- RecordingSource::RECORD_NORMALLY)); |
- picture_map_[std::pair<int, int>(x, y)].SetPicture(picture); |
- EXPECT_TRUE(HasRecordingAt(x, y)); |
- |
- has_any_recordings_ = true; |
-} |
- |
-void FakePicturePileImpl::RemoveRecordingAt(int x, int y) { |
- EXPECT_GE(x, 0); |
- EXPECT_GE(y, 0); |
- EXPECT_LT(x, tiling_.num_tiles_x()); |
- EXPECT_LT(y, tiling_.num_tiles_y()); |
- |
- if (!HasRecordingAt(x, y)) |
- return; |
- picture_map_.erase(std::pair<int, int>(x, y)); |
- EXPECT_FALSE(HasRecordingAt(x, y)); |
-} |
- |
bool FakePicturePileImpl::HasRecordingAt(int x, int y) const { |
PictureMap::const_iterator found = picture_map_.find(PictureMapKey(x, y)); |
if (found == picture_map_.end()) |
@@ -148,46 +119,4 @@ bool FakePicturePileImpl::HasRecordingAt(int x, int y) const { |
return !!found->second.GetPicture(); |
} |
-void FakePicturePileImpl::RerecordPile() { |
- for (int y = 0; y < num_tiles_y(); ++y) { |
- for (int x = 0; x < num_tiles_x(); ++x) { |
- RemoveRecordingAt(x, y); |
- AddRecordingAt(x, y); |
- } |
- } |
-} |
- |
-void FakePicturePileImpl::SetMinContentsScale(float min_contents_scale) { |
- if (min_contents_scale_ == min_contents_scale) |
- return; |
- |
- // Picture contents are played back scaled. When the final contents scale is |
- // less than 1 (i.e. low res), then multiple recorded pixels will be used |
- // to raster one final pixel. To avoid splitting a final pixel across |
- // pictures (which would result in incorrect rasterization due to blending), a |
- // buffer margin is added so that any picture can be snapped to integral |
- // final pixels. |
- // |
- // For example, if a 1/4 contents scale is used, then that would be 3 buffer |
- // pixels, since that's the minimum number of pixels to add so that resulting |
- // content can be snapped to a four pixel aligned grid. |
- int buffer_pixels = static_cast<int>(ceil(1 / min_contents_scale) - 1); |
- buffer_pixels = std::max(0, buffer_pixels); |
- SetBufferPixels(buffer_pixels); |
- min_contents_scale_ = min_contents_scale; |
-} |
- |
-void FakePicturePileImpl::SetBufferPixels(int new_buffer_pixels) { |
- if (new_buffer_pixels == buffer_pixels()) |
- return; |
- |
- Clear(); |
- tiling_.SetBorderTexels(new_buffer_pixels); |
-} |
- |
-void FakePicturePileImpl::Clear() { |
- picture_map_.clear(); |
- recorded_viewport_ = gfx::Rect(); |
-} |
- |
} // namespace cc |