| 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
|
|
|