summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cc/BUILD.gn3
-rw-r--r--cc/cc.gyp2
-rw-r--r--cc/cc_tests.gyp1
-rw-r--r--cc/debug/picture_record_benchmark.cc2
-rw-r--r--cc/debug/rasterize_and_record_benchmark.cc3
-rw-r--r--cc/layers/picture_layer.cc16
-rw-r--r--cc/layers/picture_layer.h2
-rw-r--r--cc/resources/picture_pile.cc175
-rw-r--r--cc/resources/picture_pile.h77
-rw-r--r--cc/resources/picture_pile_base.cc205
-rw-r--r--cc/resources/picture_pile_base.h137
-rw-r--r--cc/resources/picture_pile_impl.cc6
-rw-r--r--cc/resources/picture_pile_impl.h18
-rw-r--r--cc/resources/picture_pile_unittest.cc216
-rw-r--r--cc/resources/recording_source.h3
-rw-r--r--cc/test/fake_picture_pile.h53
-rw-r--r--cc/test/fake_picture_pile_impl.cc27
-rw-r--r--cc/test/fake_picture_pile_impl.h2
-rw-r--r--ui/compositor/layer.cc1
19 files changed, 416 insertions, 533 deletions
diff --git a/cc/BUILD.gn b/cc/BUILD.gn
index 0b59c7e..37e471d 100644
--- a/cc/BUILD.gn
+++ b/cc/BUILD.gn
@@ -355,8 +355,6 @@ component("cc") {
"resources/picture_layer_tiling_set.h",
"resources/picture_pile.cc",
"resources/picture_pile.h",
- "resources/picture_pile_base.cc",
- "resources/picture_pile_base.h",
"resources/picture_pile_impl.cc",
"resources/picture_pile_impl.h",
"resources/pixel_buffer_raster_worker_pool.cc",
@@ -544,6 +542,7 @@ source_set("test_support") {
"test/fake_picture_layer_impl.h",
"test/fake_picture_layer_tiling_client.cc",
"test/fake_picture_layer_tiling_client.h",
+ "test/fake_picture_pile.h",
"test/fake_picture_pile_impl.cc",
"test/fake_picture_pile_impl.h",
"test/fake_proxy.cc",
diff --git a/cc/cc.gyp b/cc/cc.gyp
index 21fb242..1fea22f 100644
--- a/cc/cc.gyp
+++ b/cc/cc.gyp
@@ -383,8 +383,6 @@
'resources/picture_layer_tiling_set.h',
'resources/picture_pile.cc',
'resources/picture_pile.h',
- 'resources/picture_pile_base.cc',
- 'resources/picture_pile_base.h',
'resources/picture_pile_impl.cc',
'resources/picture_pile_impl.h',
'resources/pixel_buffer_raster_worker_pool.cc',
diff --git a/cc/cc_tests.gyp b/cc/cc_tests.gyp
index 75267ef..db58318 100644
--- a/cc/cc_tests.gyp
+++ b/cc/cc_tests.gyp
@@ -170,6 +170,7 @@
'test/fake_picture_layer_impl.h',
'test/fake_picture_layer_tiling_client.cc',
'test/fake_picture_layer_tiling_client.h',
+ 'test/fake_picture_pile.h',
'test/fake_picture_pile_impl.cc',
'test/fake_picture_pile_impl.h',
'test/fake_proxy.cc',
diff --git a/cc/debug/picture_record_benchmark.cc b/cc/debug/picture_record_benchmark.cc
index 5f832ae..ab50c7c 100644
--- a/cc/debug/picture_record_benchmark.cc
+++ b/cc/debug/picture_record_benchmark.cc
@@ -10,8 +10,10 @@
#include "base/values.h"
#include "cc/layers/layer.h"
#include "cc/layers/picture_layer.h"
+#include "cc/resources/picture.h"
#include "cc/trees/layer_tree_host.h"
#include "cc/trees/layer_tree_host_common.h"
+#include "third_party/skia/include/core/SkBBHFactory.h"
#include "ui/gfx/geometry/rect.h"
namespace cc {
diff --git a/cc/debug/rasterize_and_record_benchmark.cc b/cc/debug/rasterize_and_record_benchmark.cc
index f24dce3..a2052ab 100644
--- a/cc/debug/rasterize_and_record_benchmark.cc
+++ b/cc/debug/rasterize_and_record_benchmark.cc
@@ -15,6 +15,7 @@
#include "cc/debug/rasterize_and_record_benchmark_impl.h"
#include "cc/layers/layer.h"
#include "cc/layers/picture_layer.h"
+#include "cc/resources/picture_pile.h"
#include "cc/trees/layer_tree_host.h"
#include "cc/trees/layer_tree_host_common.h"
#include "ui/gfx/geometry/rect.h"
@@ -106,7 +107,7 @@ void RasterizeAndRecordBenchmark::RunOnLayer(PictureLayer* layer) {
gfx::Size tile_grid_size = host_->settings().default_tile_size;
SkTileGridFactory::TileGridInfo tile_grid_info;
- PicturePileBase::ComputeTileGridInfo(tile_grid_size, &tile_grid_info);
+ PicturePile::ComputeTileGridInfo(tile_grid_size, &tile_grid_info);
gfx::Rect visible_content_rect = gfx::ScaleToEnclosingRect(
layer->visible_content_rect(), 1.f / layer->contents_scale_x());
diff --git a/cc/layers/picture_layer.cc b/cc/layers/picture_layer.cc
index a6b68cc..5d45cae 100644
--- a/cc/layers/picture_layer.cc
+++ b/cc/layers/picture_layer.cc
@@ -7,6 +7,7 @@
#include "base/auto_reset.h"
#include "cc/layers/content_layer_client.h"
#include "cc/layers/picture_layer_impl.h"
+#include "cc/resources/picture_pile.h"
#include "cc/trees/layer_tree_impl.h"
#include "third_party/skia/include/core/SkPictureRecorder.h"
#include "ui/gfx/geometry/rect_conversions.h"
@@ -40,17 +41,18 @@ void PictureLayer::PushPropertiesTo(LayerImpl* base_layer) {
gfx::Size impl_bounds = layer_impl->bounds();
gfx::Size recording_source_bounds = recording_source_->GetSize();
- // If update called, then pile size must match bounds pushed to impl layer.
+ // If update called, then recording source size must match bounds pushed to
+ // impl layer.
DCHECK_IMPLIES(update_source_frame_number_ == source_frame_number,
impl_bounds == recording_source_bounds)
- << " bounds " << impl_bounds.ToString() << " pile "
+ << " bounds " << impl_bounds.ToString() << " recording source "
<< recording_source_bounds.ToString();
if (update_source_frame_number_ != source_frame_number &&
recording_source_bounds != impl_bounds) {
// Update may not get called for the layer (if it's not in the viewport
- // for example, even though it has resized making the pile no longer
- // valid. In this case just destroy the pile.
+ // for example, even though it has resized making the recording source no
+ // longer valid. In this case just destroy the recording source.
recording_source_->SetEmptyBounds();
}
@@ -136,8 +138,8 @@ bool PictureLayer::Update(ResourceUpdateQueue* queue,
if (updated) {
SetNeedsPushProperties();
} else {
- // If this invalidation did not affect the pile, then it can be cleared as
- // an optimization.
+ // If this invalidation did not affect the recording source, then it can be
+ // cleared as an optimization.
recording_invalidation_.Clear();
}
@@ -162,7 +164,7 @@ void PictureLayer::UpdateCanUseLCDText() {
}
skia::RefPtr<SkPicture> PictureLayer::GetPicture() const {
- // We could either flatten the PicturePile into a single SkPicture,
+ // We could either flatten the RecordingSource into a single SkPicture,
// or paint a fresh one depending on what we intend to do with the
// picture. For now we just paint a fresh one to get consistent results.
if (!DrawsContent())
diff --git a/cc/layers/picture_layer.h b/cc/layers/picture_layer.h
index 3da9668..2969ee1 100644
--- a/cc/layers/picture_layer.h
+++ b/cc/layers/picture_layer.h
@@ -9,12 +9,12 @@
#include "cc/debug/devtools_instrumentation.h"
#include "cc/debug/micro_benchmark_controller.h"
#include "cc/layers/layer.h"
-#include "cc/resources/picture_pile.h"
#include "cc/trees/occlusion_tracker.h"
namespace cc {
class ContentLayerClient;
+class RecordingSource;
class ResourceUpdateQueue;
class CC_EXPORT PictureLayer : public Layer {
diff --git a/cc/resources/picture_pile.cc b/cc/resources/picture_pile.cc
index 7f80929..ab138ca 100644
--- a/cc/resources/picture_pile.cc
+++ b/cc/resources/picture_pile.cc
@@ -22,6 +22,24 @@ const int kPixelDistanceToRecord = 8000;
// operations.
const int kOpCountThatIsOkToAnalyze = 10;
+// Dimensions of the tiles in this picture pile as well as the dimensions of
+// the base picture in each tile.
+const int kBasePictureSize = 512;
+const int kTileGridBorderPixels = 1;
+#ifdef NDEBUG
+const bool kDefaultClearCanvasSetting = false;
+#else
+const bool kDefaultClearCanvasSetting = true;
+#endif
+
+// Invalidation frequency settings. kInvalidationFrequencyThreshold is a value
+// between 0 and 1 meaning invalidation frequency between 0% and 100% that
+// indicates when to stop invalidating offscreen regions.
+// kFrequentInvalidationDistanceThreshold defines what it means to be
+// "offscreen" in terms of distance to visible in css pixels.
+const float kInvalidationFrequencyThreshold = 0.75f;
+const int kFrequentInvalidationDistanceThreshold = 512;
+
// TODO(humper): The density threshold here is somewhat arbitrary; need a
// way to set // this from the command line so we can write a benchmark
// script and find a sweet spot.
@@ -149,8 +167,21 @@ float ClusterTiles(const std::vector<gfx::Rect>& invalid_tiles,
namespace cc {
PicturePile::PicturePile()
- : is_suitable_for_gpu_rasterization_(true),
- pixel_record_distance_(kPixelDistanceToRecord) {
+ : min_contents_scale_(0),
+ slow_down_raster_scale_factor_for_debug_(0),
+ contents_opaque_(false),
+ contents_fill_bounds_completely_(false),
+ clear_canvas_with_debug_color_(kDefaultClearCanvasSetting),
+ has_any_recordings_(false),
+ is_mask_(false),
+ is_solid_color_(false),
+ solid_color_(SK_ColorTRANSPARENT),
+ pixel_record_distance_(kPixelDistanceToRecord),
+ is_suitable_for_gpu_rasterization_(true) {
+ tiling_.SetMaxTextureSize(gfx::Size(kBasePictureSize, kBasePictureSize));
+ tile_grid_info_.fTileInterval.setEmpty();
+ tile_grid_info_.fMargin.setEmpty();
+ tile_grid_info_.fOffset.setZero();
}
PicturePile::~PicturePile() {
@@ -173,7 +204,7 @@ bool PicturePile::UpdateAndExpandInvalidation(
bool updated = false;
Region resize_invalidation;
- gfx::Size old_tiling_size = tiling_size();
+ gfx::Size old_tiling_size = GetSize();
if (old_tiling_size != layer_size) {
tiling_.SetTilingSize(layer_size);
updated = true;
@@ -182,17 +213,17 @@ bool PicturePile::UpdateAndExpandInvalidation(
gfx::Rect interest_rect = visible_layer_rect;
interest_rect.Inset(-pixel_record_distance_, -pixel_record_distance_);
recorded_viewport_ = interest_rect;
- recorded_viewport_.Intersect(gfx::Rect(tiling_size()));
+ recorded_viewport_.Intersect(gfx::Rect(GetSize()));
gfx::Rect interest_rect_over_tiles =
tiling_.ExpandRectToTileBounds(interest_rect);
gfx::Size min_tiling_size(
- std::min(tiling_size().width(), old_tiling_size.width()),
- std::min(tiling_size().height(), old_tiling_size.height()));
+ std::min(GetSize().width(), old_tiling_size.width()),
+ std::min(GetSize().height(), old_tiling_size.height()));
gfx::Size max_tiling_size(
- std::max(tiling_size().width(), old_tiling_size.width()),
- std::max(tiling_size().height(), old_tiling_size.height()));
+ std::max(GetSize().width(), old_tiling_size.width()),
+ std::max(GetSize().height(), old_tiling_size.height()));
if (old_tiling_size != layer_size) {
has_any_recordings_ = false;
@@ -388,7 +419,7 @@ bool PicturePile::UpdateAndExpandInvalidation(
// Detect cases where the full pile is invalidated, in this situation we
// can just drop/invalidate everything.
if (invalidation->Contains(gfx::Rect(old_tiling_size)) ||
- invalidation->Contains(gfx::Rect(tiling_size()))) {
+ invalidation->Contains(gfx::Rect(GetSize()))) {
for (auto& it : picture_map_)
updated = it.second.Invalidate(frame_number) || updated;
} else {
@@ -539,7 +570,7 @@ bool PicturePile::UpdateAndExpandInvalidation(
}
gfx::Size PicturePile::GetSize() const {
- return tiling_size();
+ return tiling_.tiling_size();
}
void PicturePile::SetEmptyBounds() {
@@ -548,23 +579,51 @@ void PicturePile::SetEmptyBounds() {
}
void PicturePile::SetMinContentsScale(float min_contents_scale) {
- PicturePileBase::SetMinContentsScale(min_contents_scale);
+ DCHECK(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;
+}
+
+// static
+void PicturePile::ComputeTileGridInfo(const gfx::Size& tile_grid_size,
+ SkTileGridFactory::TileGridInfo* info) {
+ DCHECK(info);
+ info->fTileInterval.set(tile_grid_size.width() - 2 * kTileGridBorderPixels,
+ tile_grid_size.height() - 2 * kTileGridBorderPixels);
+ DCHECK_GT(info->fTileInterval.width(), 0);
+ DCHECK_GT(info->fTileInterval.height(), 0);
+ info->fMargin.set(kTileGridBorderPixels, kTileGridBorderPixels);
+ // Offset the tile grid coordinate space to take into account the fact
+ // that the top-most and left-most tiles do not have top and left borders
+ // respectively.
+ info->fOffset.set(-kTileGridBorderPixels, -kTileGridBorderPixels);
}
void PicturePile::SetTileGridSize(const gfx::Size& tile_grid_size) {
- PicturePileBase::SetTileGridSize(tile_grid_size);
+ ComputeTileGridInfo(tile_grid_size, &tile_grid_info_);
}
void PicturePile::SetSlowdownRasterScaleFactor(int factor) {
slow_down_raster_scale_factor_for_debug_ = factor;
}
-void PicturePile::SetShowDebugPictureBorders(bool show) {
- show_debug_picture_borders_ = show;
-}
-
void PicturePile::SetIsMask(bool is_mask) {
- set_is_mask(is_mask);
+ is_mask_ = is_mask;
}
void PicturePile::SetUnsuitableForGpuRasterizationForTesting() {
@@ -576,11 +635,12 @@ bool PicturePile::IsSuitableForGpuRasterization() const {
}
scoped_refptr<RasterSource> PicturePile::CreateRasterSource() const {
- return PicturePileImpl::CreateFromOther(this);
+ return scoped_refptr<RasterSource>(
+ PicturePileImpl::CreateFromPicturePile(this));
}
SkTileGridFactory::TileGridInfo PicturePile::GetTileGridInfoForTesting() const {
- return PicturePileBase::GetTileGridInfoForTesting();
+ return tile_grid_info_;
}
bool PicturePile::CanRasterSlowTileCheck(const gfx::Rect& layer_rect) const {
@@ -628,4 +688,81 @@ void PicturePile::DetermineIfSolidColor() {
is_solid_color_ = canvas.GetColorIfSolid(&solid_color_);
}
+gfx::Rect PicturePile::PaddedRect(const PictureMapKey& key) const {
+ gfx::Rect tile = tiling_.TileBounds(key.first, key.second);
+ return PadRect(tile);
+}
+
+gfx::Rect PicturePile::PadRect(const gfx::Rect& rect) const {
+ gfx::Rect padded_rect = rect;
+ padded_rect.Inset(-buffer_pixels(), -buffer_pixels(), -buffer_pixels(),
+ -buffer_pixels());
+ return padded_rect;
+}
+
+void PicturePile::Clear() {
+ picture_map_.clear();
+ recorded_viewport_ = gfx::Rect();
+ has_any_recordings_ = false;
+ is_solid_color_ = false;
+}
+
+PicturePile::PictureInfo::PictureInfo() : last_frame_number_(0) {
+}
+
+PicturePile::PictureInfo::~PictureInfo() {
+}
+
+void PicturePile::PictureInfo::AdvanceInvalidationHistory(int frame_number) {
+ DCHECK_GE(frame_number, last_frame_number_);
+ if (frame_number == last_frame_number_)
+ return;
+
+ invalidation_history_ <<= (frame_number - last_frame_number_);
+ last_frame_number_ = frame_number;
+}
+
+bool PicturePile::PictureInfo::Invalidate(int frame_number) {
+ AdvanceInvalidationHistory(frame_number);
+ invalidation_history_.set(0);
+
+ bool did_invalidate = !!picture_.get();
+ picture_ = NULL;
+ return did_invalidate;
+}
+
+bool PicturePile::PictureInfo::NeedsRecording(int frame_number,
+ int distance_to_visible) {
+ AdvanceInvalidationHistory(frame_number);
+
+ // We only need recording if we don't have a picture. Furthermore, we only
+ // need a recording if we're within frequent invalidation distance threshold
+ // or the invalidation is not frequent enough (below invalidation frequency
+ // threshold).
+ return !picture_.get() &&
+ ((distance_to_visible <= kFrequentInvalidationDistanceThreshold) ||
+ (GetInvalidationFrequency() < kInvalidationFrequencyThreshold));
+}
+
+void PicturePile::SetBufferPixels(int new_buffer_pixels) {
+ if (new_buffer_pixels == buffer_pixels())
+ return;
+
+ Clear();
+ tiling_.SetBorderTexels(new_buffer_pixels);
+}
+
+void PicturePile::PictureInfo::SetPicture(scoped_refptr<Picture> picture) {
+ picture_ = picture;
+}
+
+const Picture* PicturePile::PictureInfo::GetPicture() const {
+ return picture_.get();
+}
+
+float PicturePile::PictureInfo::GetInvalidationFrequency() const {
+ return invalidation_history_.count() /
+ static_cast<float>(INVALIDATION_FRAMES_TRACKED);
+}
+
} // namespace cc
diff --git a/cc/resources/picture_pile.h b/cc/resources/picture_pile.h
index 4ad57b3..ffd9b52 100644
--- a/cc/resources/picture_pile.h
+++ b/cc/resources/picture_pile.h
@@ -5,21 +5,21 @@
#ifndef CC_RESOURCES_PICTURE_PILE_H_
#define CC_RESOURCES_PICTURE_PILE_H_
+#include <bitset>
+
#include "base/memory/ref_counted.h"
-#include "cc/resources/picture_pile_base.h"
+#include "cc/base/tiling_data.h"
#include "cc/resources/recording_source.h"
namespace cc {
-class ContentLayerClient;
class PicturePileImpl;
-class Region;
-class RenderingStatsInstrumentation;
-class CC_EXPORT PicturePile : public PicturePileBase, public RecordingSource {
+class CC_EXPORT PicturePile : public RecordingSource {
public:
PicturePile();
~PicturePile() override;
+ // RecordingSource overrides.
bool UpdateAndExpandInvalidation(
ContentLayerClient* painter,
Region* invalidation,
@@ -30,32 +30,91 @@ class CC_EXPORT PicturePile : public PicturePileBase, public RecordingSource {
const gfx::Rect& visible_layer_rect,
int frame_number,
Picture::RecordingMode recording_mode) override;
- gfx::Size GetSize() const override;
+ gfx::Size GetSize() const final;
void SetEmptyBounds() override;
void SetMinContentsScale(float min_contents_scale) override;
void SetTileGridSize(const gfx::Size& tile_grid_size) override;
void SetSlowdownRasterScaleFactor(int factor) override;
- void SetShowDebugPictureBorders(bool show) override;
void SetIsMask(bool is_mask) override;
bool IsSuitableForGpuRasterization() const override;
scoped_refptr<RasterSource> CreateRasterSource() const override;
void SetUnsuitableForGpuRasterizationForTesting() override;
SkTileGridFactory::TileGridInfo GetTileGridInfoForTesting() const override;
- void SetPixelRecordDistanceForTesting(int d) { pixel_record_distance_ = d; }
+ static void ComputeTileGridInfo(const gfx::Size& tile_grid_size,
+ SkTileGridFactory::TileGridInfo* info);
protected:
+ class CC_EXPORT PictureInfo {
+ public:
+ enum { INVALIDATION_FRAMES_TRACKED = 32 };
+
+ PictureInfo();
+ ~PictureInfo();
+
+ bool Invalidate(int frame_number);
+ bool NeedsRecording(int frame_number, int distance_to_visible);
+ void SetPicture(scoped_refptr<Picture> picture);
+ const Picture* GetPicture() const;
+
+ float GetInvalidationFrequencyForTesting() const {
+ return GetInvalidationFrequency();
+ }
+
+ private:
+ void AdvanceInvalidationHistory(int frame_number);
+ float GetInvalidationFrequency() const;
+
+ int last_frame_number_;
+ scoped_refptr<const Picture> picture_;
+ std::bitset<INVALIDATION_FRAMES_TRACKED> invalidation_history_;
+ };
+
+ typedef std::pair<int, int> PictureMapKey;
+ typedef base::hash_map<PictureMapKey, PictureInfo> PictureMap;
+
// An internal CanRaster check that goes to the picture_map rather than
// using the recorded_viewport hint.
bool CanRasterSlowTileCheck(const gfx::Rect& layer_rect) const;
+ void Clear();
+
+ gfx::Rect PaddedRect(const PictureMapKey& key) const;
+ gfx::Rect PadRect(const gfx::Rect& rect) const;
+
+ int buffer_pixels() const { return tiling_.border_texels(); }
+
+ // A picture pile is a tiled set of pictures. The picture map is a map of tile
+ // indices to picture infos.
+ PictureMap picture_map_;
+ TilingData tiling_;
+
+ // If non-empty, all pictures tiles inside this rect are recorded. There may
+ // be recordings outside this rect, but everything inside the rect is
+ // recorded.
+ gfx::Rect recorded_viewport_;
+ float min_contents_scale_;
+ SkTileGridFactory::TileGridInfo tile_grid_info_;
+ SkColor background_color_;
+ int slow_down_raster_scale_factor_for_debug_;
+ bool contents_opaque_;
+ bool contents_fill_bounds_completely_;
+ bool clear_canvas_with_debug_color_;
+ // A hint about whether there are any recordings. This may be a false
+ // positive.
+ bool has_any_recordings_;
+ bool is_mask_;
+ bool is_solid_color_;
+ SkColor solid_color_;
+ int pixel_record_distance_;
+
private:
friend class PicturePileImpl;
void DetermineIfSolidColor();
+ void SetBufferPixels(int buffer_pixels);
bool is_suitable_for_gpu_rasterization_;
- int pixel_record_distance_;
DISALLOW_COPY_AND_ASSIGN(PicturePile);
};
diff --git a/cc/resources/picture_pile_base.cc b/cc/resources/picture_pile_base.cc
deleted file mode 100644
index 1184cf1..0000000
--- a/cc/resources/picture_pile_base.cc
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "cc/resources/picture_pile_base.h"
-
-#include <algorithm>
-#include <set>
-#include <vector>
-
-#include "base/debug/trace_event_argument.h"
-#include "base/logging.h"
-#include "base/values.h"
-#include "cc/debug/traced_value.h"
-#include "third_party/skia/include/core/SkColor.h"
-#include "ui/gfx/geometry/rect_conversions.h"
-
-namespace {
-// Dimensions of the tiles in this picture pile as well as the dimensions of
-// the base picture in each tile.
-const int kBasePictureSize = 512;
-const int kTileGridBorderPixels = 1;
-#ifdef NDEBUG
-const bool kDefaultClearCanvasSetting = false;
-#else
-const bool kDefaultClearCanvasSetting = true;
-#endif
-
-// Invalidation frequency settings. kInvalidationFrequencyThreshold is a value
-// between 0 and 1 meaning invalidation frequency between 0% and 100% that
-// indicates when to stop invalidating offscreen regions.
-// kFrequentInvalidationDistanceThreshold defines what it means to be
-// "offscreen" in terms of distance to visible in css pixels.
-const float kInvalidationFrequencyThreshold = 0.75f;
-const int kFrequentInvalidationDistanceThreshold = 512;
-
-} // namespace
-
-namespace cc {
-
-PicturePileBase::PicturePileBase()
- : min_contents_scale_(0),
- background_color_(SkColorSetARGBInline(0, 0, 0, 0)),
- slow_down_raster_scale_factor_for_debug_(0),
- contents_opaque_(false),
- contents_fill_bounds_completely_(false),
- show_debug_picture_borders_(false),
- clear_canvas_with_debug_color_(kDefaultClearCanvasSetting),
- has_any_recordings_(false),
- is_mask_(false),
- is_solid_color_(false),
- solid_color_(SK_ColorTRANSPARENT) {
- tiling_.SetMaxTextureSize(gfx::Size(kBasePictureSize, kBasePictureSize));
- tile_grid_info_.fTileInterval.setEmpty();
- tile_grid_info_.fMargin.setEmpty();
- tile_grid_info_.fOffset.setZero();
-}
-
-PicturePileBase::PicturePileBase(const PicturePileBase* other)
- : picture_map_(other->picture_map_),
- tiling_(other->tiling_),
- recorded_viewport_(other->recorded_viewport_),
- min_contents_scale_(other->min_contents_scale_),
- tile_grid_info_(other->tile_grid_info_),
- background_color_(other->background_color_),
- slow_down_raster_scale_factor_for_debug_(
- other->slow_down_raster_scale_factor_for_debug_),
- contents_opaque_(other->contents_opaque_),
- contents_fill_bounds_completely_(other->contents_fill_bounds_completely_),
- show_debug_picture_borders_(other->show_debug_picture_borders_),
- clear_canvas_with_debug_color_(other->clear_canvas_with_debug_color_),
- has_any_recordings_(other->has_any_recordings_),
- is_mask_(other->is_mask_),
- is_solid_color_(other->is_solid_color_),
- solid_color_(other->solid_color_) {
-}
-
-PicturePileBase::~PicturePileBase() {
-}
-
-void PicturePileBase::SetMinContentsScale(float min_contents_scale) {
- DCHECK(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;
-}
-
-// static
-void PicturePileBase::ComputeTileGridInfo(
- const gfx::Size& tile_grid_size,
- SkTileGridFactory::TileGridInfo* info) {
- DCHECK(info);
- info->fTileInterval.set(tile_grid_size.width() - 2 * kTileGridBorderPixels,
- tile_grid_size.height() - 2 * kTileGridBorderPixels);
- DCHECK_GT(info->fTileInterval.width(), 0);
- DCHECK_GT(info->fTileInterval.height(), 0);
- info->fMargin.set(kTileGridBorderPixels, kTileGridBorderPixels);
- // Offset the tile grid coordinate space to take into account the fact
- // that the top-most and left-most tiles do not have top and left borders
- // respectively.
- info->fOffset.set(-kTileGridBorderPixels, -kTileGridBorderPixels);
-}
-
-void PicturePileBase::SetTileGridSize(const gfx::Size& tile_grid_size) {
- ComputeTileGridInfo(tile_grid_size, &tile_grid_info_);
-}
-
-void PicturePileBase::SetBufferPixels(int new_buffer_pixels) {
- if (new_buffer_pixels == buffer_pixels())
- return;
-
- Clear();
- tiling_.SetBorderTexels(new_buffer_pixels);
-}
-
-void PicturePileBase::Clear() {
- picture_map_.clear();
- recorded_viewport_ = gfx::Rect();
- has_any_recordings_ = false;
- is_solid_color_ = false;
-}
-
-bool PicturePileBase::HasRecordingAt(int x, int y) {
- PictureMap::const_iterator found = picture_map_.find(PictureMapKey(x, y));
- if (found == picture_map_.end())
- return false;
- return !!found->second.GetPicture();
-}
-
-gfx::Rect PicturePileBase::PaddedRect(const PictureMapKey& key) const {
- gfx::Rect tile = tiling_.TileBounds(key.first, key.second);
- return PadRect(tile);
-}
-
-gfx::Rect PicturePileBase::PadRect(const gfx::Rect& rect) const {
- gfx::Rect padded_rect = rect;
- padded_rect.Inset(
- -buffer_pixels(), -buffer_pixels(), -buffer_pixels(), -buffer_pixels());
- return padded_rect;
-}
-
-PicturePileBase::PictureInfo::PictureInfo() : last_frame_number_(0) {}
-
-PicturePileBase::PictureInfo::~PictureInfo() {}
-
-void PicturePileBase::PictureInfo::AdvanceInvalidationHistory(
- int frame_number) {
- DCHECK_GE(frame_number, last_frame_number_);
- if (frame_number == last_frame_number_)
- return;
-
- invalidation_history_ <<= (frame_number - last_frame_number_);
- last_frame_number_ = frame_number;
-}
-
-bool PicturePileBase::PictureInfo::Invalidate(int frame_number) {
- AdvanceInvalidationHistory(frame_number);
- invalidation_history_.set(0);
-
- bool did_invalidate = !!picture_.get();
- picture_ = NULL;
- return did_invalidate;
-}
-
-bool PicturePileBase::PictureInfo::NeedsRecording(int frame_number,
- int distance_to_visible) {
- AdvanceInvalidationHistory(frame_number);
-
- // We only need recording if we don't have a picture. Furthermore, we only
- // need a recording if we're within frequent invalidation distance threshold
- // or the invalidation is not frequent enough (below invalidation frequency
- // threshold).
- return !picture_.get() &&
- ((distance_to_visible <= kFrequentInvalidationDistanceThreshold) ||
- (GetInvalidationFrequency() < kInvalidationFrequencyThreshold));
-}
-
-void PicturePileBase::PictureInfo::SetPicture(scoped_refptr<Picture> picture) {
- picture_ = picture;
-}
-
-const Picture* PicturePileBase::PictureInfo::GetPicture() const {
- return picture_.get();
-}
-
-float PicturePileBase::PictureInfo::GetInvalidationFrequency() const {
- return invalidation_history_.count() /
- static_cast<float>(INVALIDATION_FRAMES_TRACKED);
-}
-
-} // namespace cc
diff --git a/cc/resources/picture_pile_base.h b/cc/resources/picture_pile_base.h
deleted file mode 100644
index 66d37d8..0000000
--- a/cc/resources/picture_pile_base.h
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CC_RESOURCES_PICTURE_PILE_BASE_H_
-#define CC_RESOURCES_PICTURE_PILE_BASE_H_
-
-#include <bitset>
-#include <list>
-#include <utility>
-
-#include "base/containers/hash_tables.h"
-#include "cc/base/cc_export.h"
-#include "cc/base/region.h"
-#include "cc/base/tiling_data.h"
-#include "cc/resources/picture.h"
-#include "ui/gfx/geometry/size.h"
-
-namespace base {
-namespace debug {
-class TracedValue;
-}
-class Value;
-}
-
-namespace cc {
-
-class CC_EXPORT PicturePileBase {
- public:
- PicturePileBase();
- explicit PicturePileBase(const PicturePileBase* other);
-
- gfx::Size tiling_size() const { return tiling_.tiling_size(); }
- void SetMinContentsScale(float min_contents_scale);
-
- // If non-empty, all pictures tiles inside this rect are recorded. There may
- // be recordings outside this rect, but everything inside the rect is
- // recorded.
- gfx::Rect recorded_viewport() const { return recorded_viewport_; }
-
- int num_tiles_x() const { return tiling_.num_tiles_x(); }
- int num_tiles_y() const { return tiling_.num_tiles_y(); }
- gfx::Rect tile_bounds(int x, int y) const { return tiling_.TileBounds(x, y); }
- bool HasRecordingAt(int x, int y);
-
- bool is_solid_color() const { return is_solid_color_; }
- SkColor solid_color() const { return solid_color_; }
-
- void set_is_mask(bool is_mask) { is_mask_ = is_mask; }
-
- static void ComputeTileGridInfo(const gfx::Size& tile_grid_size,
- SkTileGridFactory::TileGridInfo* info);
-
- void SetTileGridSize(const gfx::Size& tile_grid_size);
- TilingData& tiling() { return tiling_; }
-
- SkTileGridFactory::TileGridInfo GetTileGridInfoForTesting() const {
- return tile_grid_info_;
- }
-
- void SetRecordedViewportForTesting(const gfx::Rect& viewport) {
- recorded_viewport_ = viewport;
- }
- void SetHasAnyRecordingsForTesting(bool has_recordings) {
- has_any_recordings_ = has_recordings;
- }
-
- protected:
- class CC_EXPORT PictureInfo {
- public:
- enum {
- INVALIDATION_FRAMES_TRACKED = 32
- };
-
- PictureInfo();
- ~PictureInfo();
-
- bool Invalidate(int frame_number);
- bool NeedsRecording(int frame_number, int distance_to_visible);
- void SetPicture(scoped_refptr<Picture> picture);
- const Picture* GetPicture() const;
-
- float GetInvalidationFrequencyForTesting() const {
- return GetInvalidationFrequency();
- }
-
- private:
- void AdvanceInvalidationHistory(int frame_number);
- float GetInvalidationFrequency() const;
-
- int last_frame_number_;
- scoped_refptr<const Picture> picture_;
- std::bitset<INVALIDATION_FRAMES_TRACKED> invalidation_history_;
- };
-
- typedef std::pair<int, int> PictureMapKey;
- typedef base::hash_map<PictureMapKey, PictureInfo> PictureMap;
-
- virtual ~PicturePileBase();
-
- int buffer_pixels() const { return tiling_.border_texels(); }
- void Clear();
-
- gfx::Rect PaddedRect(const PictureMapKey& key) const;
- gfx::Rect PadRect(const gfx::Rect& rect) const;
-
- // A picture pile is a tiled set of pictures. The picture map is a map of tile
- // indices to picture infos.
- PictureMap picture_map_;
- TilingData tiling_;
- gfx::Rect recorded_viewport_;
- float min_contents_scale_;
- SkTileGridFactory::TileGridInfo tile_grid_info_;
- SkColor background_color_;
- int slow_down_raster_scale_factor_for_debug_;
- bool contents_opaque_;
- bool contents_fill_bounds_completely_;
- bool show_debug_picture_borders_;
- bool clear_canvas_with_debug_color_;
- // A hint about whether there are any recordings. This may be a false
- // positive.
- bool has_any_recordings_;
- bool is_mask_;
- bool is_solid_color_;
- SkColor solid_color_;
-
- private:
- friend class PicturePileImpl;
-
- void SetBufferPixels(int buffer_pixels);
-
- DISALLOW_COPY_AND_ASSIGN(PicturePileBase);
-};
-
-} // namespace cc
-
-#endif // CC_RESOURCES_PICTURE_PILE_BASE_H_
diff --git a/cc/resources/picture_pile_impl.cc b/cc/resources/picture_pile_impl.cc
index 7514e07..7ec9252 100644
--- a/cc/resources/picture_pile_impl.cc
+++ b/cc/resources/picture_pile_impl.cc
@@ -20,8 +20,8 @@ scoped_refptr<PicturePileImpl> PicturePileImpl::Create() {
return make_scoped_refptr(new PicturePileImpl);
}
-scoped_refptr<PicturePileImpl> PicturePileImpl::CreateFromOther(
- const PicturePileBase* other) {
+scoped_refptr<PicturePileImpl> PicturePileImpl::CreateFromPicturePile(
+ const PicturePile* other) {
return make_scoped_refptr(new PicturePileImpl(other));
}
@@ -39,7 +39,7 @@ PicturePileImpl::PicturePileImpl()
should_attempt_to_use_distance_field_text_(false) {
}
-PicturePileImpl::PicturePileImpl(const PicturePileBase* other)
+PicturePileImpl::PicturePileImpl(const PicturePile* other)
: picture_map_(other->picture_map_),
tiling_(other->tiling_),
background_color_(other->background_color_),
diff --git a/cc/resources/picture_pile_impl.h b/cc/resources/picture_pile_impl.h
index 787903d..6986db4 100644
--- a/cc/resources/picture_pile_impl.h
+++ b/cc/resources/picture_pile_impl.h
@@ -13,7 +13,7 @@
#include "base/time/time.h"
#include "cc/base/cc_export.h"
#include "cc/debug/rendering_stats_instrumentation.h"
-#include "cc/resources/picture_pile_base.h"
+#include "cc/resources/picture_pile.h"
#include "cc/resources/raster_source.h"
#include "skia/ext/analysis_canvas.h"
#include "skia/ext/refptr.h"
@@ -21,12 +21,11 @@
namespace cc {
-// TODO(vmpstr): Clean up PicturePileBase and make it a member.
class CC_EXPORT PicturePileImpl : public RasterSource {
public:
static scoped_refptr<PicturePileImpl> Create();
- static scoped_refptr<PicturePileImpl> CreateFromOther(
- const PicturePileBase* other);
+ static scoped_refptr<PicturePileImpl> CreateFromPicturePile(
+ const PicturePile* other);
// RasterSource overrides. See RasterSource header for full description.
// When slow-down-raster-scale-factor is set to a value greater than 1, the
@@ -88,14 +87,13 @@ class CC_EXPORT PicturePileImpl : public RasterSource {
friend class PicturePile;
friend class PixelRefIterator;
- // TODO(vmpstr): Change this when pictures are split from invalidation info,
- // and when PicturePileBase goes away.
- using PictureMapKey = PicturePileBase::PictureMapKey;
- using PictureMap = PicturePileBase::PictureMap;
- using PictureInfo = PicturePileBase::PictureInfo;
+ // TODO(vmpstr): Change this when pictures are split from invalidation info.
+ using PictureMapKey = PicturePile::PictureMapKey;
+ using PictureMap = PicturePile::PictureMap;
+ using PictureInfo = PicturePile::PictureInfo;
PicturePileImpl();
- explicit PicturePileImpl(const PicturePileBase* other);
+ explicit PicturePileImpl(const PicturePile* other);
~PicturePileImpl() override;
int buffer_pixels() const { return tiling_.border_texels(); }
diff --git a/cc/resources/picture_pile_unittest.cc b/cc/resources/picture_pile_unittest.cc
index 8ca060b..25e0d12 100644
--- a/cc/resources/picture_pile_unittest.cc
+++ b/cc/resources/picture_pile_unittest.cc
@@ -7,6 +7,7 @@
#include "cc/resources/picture_pile.h"
#include "cc/test/fake_content_layer_client.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"
@@ -14,31 +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(gfx::Rect layer_rect) {
- layer_rect.Intersect(gfx::Rect(tiling_.tiling_size()));
- if (recorded_viewport_.Contains(layer_rect))
- return true;
- return CanRasterSlowTileCheck(layer_rect);
- }
-
- bool HasRecordings() const { return has_any_recordings_; }
-
- typedef PicturePile::PictureInfo PictureInfo;
- typedef PicturePile::PictureMapKey PictureMapKey;
- typedef PicturePile::PictureMap PictureMap;
-};
-
class PicturePileTestBase {
public:
PicturePileTestBase()
@@ -82,7 +58,7 @@ class PicturePileTestBase {
}
FakeContentLayerClient client_;
- TestPicturePile pile_;
+ FakePicturePile pile_;
SkColor background_color_;
float min_scale_;
int frame_number_;
@@ -96,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);
@@ -179,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(
@@ -201,8 +177,8 @@ 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();
@@ -244,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());
}
}
@@ -270,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());
}
@@ -281,7 +257,7 @@ 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());
}
}
@@ -301,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;
@@ -317,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());
@@ -352,9 +328,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 the invalidation frequency to be less than 1, since we just
// updated with no invalidations.
@@ -419,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));
@@ -601,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());
}
}
@@ -619,9 +595,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(j < 5, it != map.end() && it->second.GetPicture());
}
}
@@ -649,9 +625,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);
bool expect_tile;
switch (corner) {
case TOP_LEFT:
@@ -711,9 +687,9 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
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());
}
}
@@ -741,9 +717,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);
bool expect_tile;
switch (corner) {
case TOP_LEFT:
@@ -800,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());
}
}
@@ -832,9 +808,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);
bool expect_tile;
switch (corner) {
case TOP_LEFT:
@@ -915,9 +891,9 @@ 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());
}
}
@@ -941,9 +917,9 @@ 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);
bool expect_tile;
switch (corner) {
case TOP_LEFT:
@@ -1007,9 +983,9 @@ 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);
bool expect_tile;
switch (corner) {
case TOP_LEFT:
@@ -1073,9 +1049,9 @@ 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);
bool expect_tile;
switch (corner) {
case TOP_LEFT:
@@ -1172,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());
}
}
@@ -1187,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());
}
}
@@ -1213,9 +1189,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());
}
}
@@ -1236,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());
}
}
@@ -1262,9 +1238,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());
}
}
@@ -1285,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());
}
}
@@ -1315,9 +1291,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());
}
}
@@ -1353,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());
}
}
@@ -1368,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());
}
}
@@ -1389,9 +1365,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());
}
}
@@ -1411,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());
}
}
@@ -1432,9 +1408,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());
}
}
@@ -1454,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());
}
}
@@ -1475,9 +1451,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());
}
}
diff --git a/cc/resources/recording_source.h b/cc/resources/recording_source.h
index 3b3f2de..cbbeb70 100644
--- a/cc/resources/recording_source.h
+++ b/cc/resources/recording_source.h
@@ -14,9 +14,7 @@
namespace cc {
class ContentLayerClient;
-class PicturePileImpl;
class Region;
-class RenderingStatsInstrumentation;
class RasterSource;
class CC_EXPORT RecordingSource {
@@ -43,7 +41,6 @@ class CC_EXPORT RecordingSource {
virtual void SetMinContentsScale(float min_contents_scale) = 0;
virtual void SetTileGridSize(const gfx::Size& tile_grid_size) = 0;
virtual void SetSlowdownRasterScaleFactor(int factor) = 0;
- virtual void SetShowDebugPictureBorders(bool show) = 0;
virtual void SetIsMask(bool is_mask) = 0;
virtual bool IsSuitableForGpuRasterization() const = 0;
diff --git a/cc/test/fake_picture_pile.h b/cc/test/fake_picture_pile.h
new file mode 100644
index 0000000..e486e3b
--- /dev/null
+++ b/cc/test/fake_picture_pile.h
@@ -0,0 +1,53 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CC_TEST_FAKE_PICTURE_PILE_H_
+#define CC_TEST_FAKE_PICTURE_PILE_H_
+
+#include "cc/resources/picture_pile.h"
+
+namespace cc {
+
+class FakePicturePile : public PicturePile {
+ public:
+ ~FakePicturePile() 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(gfx::Rect layer_rect) {
+ layer_rect.Intersect(gfx::Rect(tiling_.tiling_size()));
+ if (recorded_viewport_.Contains(layer_rect))
+ return true;
+ return CanRasterSlowTileCheck(layer_rect);
+ }
+
+ bool HasRecordings() const { return has_any_recordings_; }
+
+ void SetRecordedViewport(const gfx::Rect& viewport) {
+ recorded_viewport_ = viewport;
+ }
+
+ void SetHasAnyRecordings(bool has_recordings) {
+ has_any_recordings_ = has_recordings;
+ }
+
+ TilingData& tiling() { return tiling_; }
+
+ bool is_solid_color() const { return is_solid_color_; }
+ SkColor solid_color() const { return solid_color_; }
+
+ void SetPixelRecordDistance(int d) { pixel_record_distance_ = d; }
+
+ typedef PicturePile::PictureInfo PictureInfo;
+ typedef PicturePile::PictureMapKey PictureMapKey;
+ typedef PicturePile::PictureMap PictureMap;
+};
+} // namespace cc
+
+#endif // CC_TEST_FAKE_PICTURE_PILE_H_
diff --git a/cc/test/fake_picture_pile_impl.cc b/cc/test/fake_picture_pile_impl.cc
index e688d22..3d31c12 100644
--- a/cc/test/fake_picture_pile_impl.cc
+++ b/cc/test/fake_picture_pile_impl.cc
@@ -9,6 +9,7 @@
#include <utility>
#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"
@@ -16,7 +17,7 @@ namespace cc {
FakePicturePileImpl::FakePicturePileImpl() {}
-FakePicturePileImpl::FakePicturePileImpl(const PicturePileBase* other)
+FakePicturePileImpl::FakePicturePileImpl(const PicturePile* other)
: PicturePileImpl(other),
tile_grid_info_(other->GetTileGridInfoForTesting()) {
}
@@ -26,12 +27,12 @@ FakePicturePileImpl::~FakePicturePileImpl() {}
scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateFilledPile(
const gfx::Size& tile_size,
const gfx::Size& layer_bounds) {
- PicturePile pile;
+ FakePicturePile pile;
pile.tiling().SetTilingSize(layer_bounds);
pile.tiling().SetMaxTextureSize(tile_size);
pile.SetTileGridSize(ImplSidePaintingSettings().default_tile_grid_size);
- pile.SetRecordedViewportForTesting(gfx::Rect(layer_bounds));
- pile.SetHasAnyRecordingsForTesting(true);
+ pile.SetRecordedViewport(gfx::Rect(layer_bounds));
+ pile.SetHasAnyRecordings(true);
auto pile_impl = make_scoped_refptr(new FakePicturePileImpl(&pile));
for (int x = 0; x < pile_impl->tiling().num_tiles_x(); ++x) {
@@ -44,12 +45,12 @@ scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateFilledPile(
scoped_refptr<FakePicturePileImpl> FakePicturePileImpl::CreateEmptyPile(
const gfx::Size& tile_size,
const gfx::Size& layer_bounds) {
- PicturePile pile;
+ FakePicturePile pile;
pile.tiling().SetTilingSize(layer_bounds);
pile.tiling().SetMaxTextureSize(tile_size);
pile.SetTileGridSize(ImplSidePaintingSettings().default_tile_grid_size);
- pile.SetRecordedViewportForTesting(gfx::Rect());
- pile.SetHasAnyRecordingsForTesting(false);
+ pile.SetRecordedViewport(gfx::Rect());
+ pile.SetHasAnyRecordings(false);
return make_scoped_refptr(new FakePicturePileImpl(&pile));
}
@@ -57,26 +58,26 @@ scoped_refptr<FakePicturePileImpl>
FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings(
const gfx::Size& tile_size,
const gfx::Size& layer_bounds) {
- PicturePile pile;
+ FakePicturePile pile;
pile.tiling().SetTilingSize(layer_bounds);
pile.tiling().SetMaxTextureSize(tile_size);
pile.SetTileGridSize(ImplSidePaintingSettings().default_tile_grid_size);
// This simulates a false positive for this flag.
- pile.SetRecordedViewportForTesting(gfx::Rect());
- pile.SetHasAnyRecordingsForTesting(true);
+ pile.SetRecordedViewport(gfx::Rect());
+ pile.SetHasAnyRecordings(true);
return make_scoped_refptr(new FakePicturePileImpl(&pile));
}
scoped_refptr<FakePicturePileImpl>
FakePicturePileImpl::CreateInfiniteFilledPile() {
- PicturePile pile;
+ FakePicturePile pile;
gfx::Size size(std::numeric_limits<int>::max(),
std::numeric_limits<int>::max());
pile.tiling().SetTilingSize(size);
pile.tiling().SetMaxTextureSize(size);
pile.SetTileGridSize(size);
- pile.SetRecordedViewportForTesting(gfx::Rect(size));
- pile.SetHasAnyRecordingsForTesting(true);
+ pile.SetRecordedViewport(gfx::Rect(size));
+ pile.SetHasAnyRecordings(true);
auto pile_impl = make_scoped_refptr(new FakePicturePileImpl(&pile));
pile_impl->AddRecordingAt(0, 0);
diff --git a/cc/test/fake_picture_pile_impl.h b/cc/test/fake_picture_pile_impl.h
index ab27238..f1a9d31 100644
--- a/cc/test/fake_picture_pile_impl.h
+++ b/cc/test/fake_picture_pile_impl.h
@@ -84,7 +84,7 @@ class FakePicturePileImpl : public PicturePileImpl {
protected:
FakePicturePileImpl();
- explicit FakePicturePileImpl(const PicturePileBase* other);
+ explicit FakePicturePileImpl(const PicturePile* other);
~FakePicturePileImpl() override;
FakeContentLayerClient client_;
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index 5f8800d..e95e32d 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -9,6 +9,7 @@
#include "base/command_line.h"
#include "base/debug/trace_event.h"
#include "base/json/json_writer.h"
+#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "cc/base/scoped_ptr_algorithm.h"