summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorenne <enne@chromium.org>2015-04-07 12:11:01 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-07 19:12:54 +0000
commit4b219b204e672f48ba743919342191a001a27b9b (patch)
treefcd185686fac67fe4b89115fb8e1441861a500cc
parenta22ce7ae22a39dd3c1693a082b727a4d725fe306 (diff)
downloadchromium_src-4b219b204e672f48ba743919342191a001a27b9b.zip
chromium_src-4b219b204e672f48ba743919342191a001a27b9b.tar.gz
chromium_src-4b219b204e672f48ba743919342191a001a27b9b.tar.bz2
cc: Remove invalidation history
Now that Blink handles animated gifs, this code is not needed. BUG=467197 Review URL: https://codereview.chromium.org/1061203002 Cr-Commit-Position: refs/heads/master@{#324084}
-rw-r--r--cc/layers/picture_layer.cc1
-rw-r--r--cc/resources/display_list_recording_source.cc4
-rw-r--r--cc/resources/display_list_recording_source.h1
-rw-r--r--cc/resources/picture_pile.cc115
-rw-r--r--cc/resources/picture_pile.h32
-rw-r--r--cc/resources/picture_pile_impl.cc24
-rw-r--r--cc/resources/picture_pile_impl.h2
-rw-r--r--cc/resources/picture_pile_unittest.cc293
-rw-r--r--cc/resources/recording_source.h2
-rw-r--r--cc/test/fake_picture_pile.cc6
-rw-r--r--cc/test/fake_picture_pile.h1
-rw-r--r--cc/test/fake_picture_pile_impl.cc4
12 files changed, 69 insertions, 416 deletions
diff --git a/cc/layers/picture_layer.cc b/cc/layers/picture_layer.cc
index 2234e2c..d41b541 100644
--- a/cc/layers/picture_layer.cc
+++ b/cc/layers/picture_layer.cc
@@ -95,7 +95,6 @@ void PictureLayer::SetLayerTreeHost(LayerTreeHost* host) {
host->settings().default_tile_grid_size));
}
}
- recording_source_->DidMoveToNewCompositor();
recording_source_->SetSlowdownRasterScaleFactor(
host->debug_state().slow_down_raster_scale_factor);
recording_source_->SetGatherPixelRefs(host->settings().gather_pixel_refs);
diff --git a/cc/resources/display_list_recording_source.cc b/cc/resources/display_list_recording_source.cc
index e6488687..3a47c90 100644
--- a/cc/resources/display_list_recording_source.cc
+++ b/cc/resources/display_list_recording_source.cc
@@ -123,10 +123,6 @@ bool DisplayListRecordingSource::UpdateAndExpandInvalidation(
return true;
}
-void DisplayListRecordingSource::DidMoveToNewCompositor() {
- // No invalidation history to worry about here.
-}
-
gfx::Size DisplayListRecordingSource::GetSize() const {
return size_;
}
diff --git a/cc/resources/display_list_recording_source.h b/cc/resources/display_list_recording_source.h
index a87c848..54ccad07 100644
--- a/cc/resources/display_list_recording_source.h
+++ b/cc/resources/display_list_recording_source.h
@@ -24,7 +24,6 @@ class CC_EXPORT DisplayListRecordingSource : public RecordingSource {
const gfx::Rect& visible_layer_rect,
int frame_number,
RecordingMode recording_mode) override;
- void DidMoveToNewCompositor() override;
scoped_refptr<RasterSource> CreateRasterSource(
bool can_use_lcd_text) const override;
gfx::Size GetSize() const final;
diff --git a/cc/resources/picture_pile.cc b/cc/resources/picture_pile.cc
index 76570ed..1b81447 100644
--- a/cc/resources/picture_pile.cc
+++ b/cc/resources/picture_pile.cc
@@ -25,16 +25,6 @@ const int kOpCountThatIsOkToAnalyze = 10;
// the base picture in each tile.
const int kBasePictureSize = 512;
-// 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.
-// TODO(vmpstr): Remove invalidation frequency after frequently invalidated
-// content is not painted at a higher level.
-const float kInvalidationFrequencyThreshold = 0.75f;
-const int kFrequentInvalidationDistanceThreshold = 1024;
-
// 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.
@@ -216,11 +206,6 @@ bool PicturePile::UpdateAndExpandInvalidation(
return true;
}
-void PicturePile::DidMoveToNewCompositor() {
- for (auto& map_pair : picture_map_)
- map_pair.second.ResetInvalidationHistory();
-}
-
bool PicturePile::ApplyInvalidationAndResize(const gfx::Rect& interest_rect,
Region* invalidation,
const gfx::Size& layer_size,
@@ -265,7 +250,7 @@ bool PicturePile::ApplyInvalidationAndResize(const gfx::Rect& interest_rect,
for (const auto& key_picture_pair : picture_map_) {
const PictureMapKey& key = key_picture_pair.first;
if (key.first < min_toss_x && key.second < min_toss_y) {
- has_any_recordings_ |= !!key_picture_pair.second.GetPicture();
+ has_any_recordings_ = true;
continue;
}
to_erase.push_back(key);
@@ -437,8 +422,8 @@ bool PicturePile::ApplyInvalidationAndResize(const gfx::Rect& interest_rect,
// can just drop/invalidate everything.
if (invalidation->Contains(gfx::Rect(old_tiling_size)) ||
invalidation->Contains(gfx::Rect(GetSize()))) {
- for (auto& it : picture_map_)
- updated = it.second.Invalidate(frame_number) || updated;
+ updated = !picture_map_.empty();
+ picture_map_.clear();
} else {
// Expand invalidation that is on tiles that aren't in the interest rect and
// will not be re-recorded below. These tiles are no longer valid and should
@@ -478,8 +463,9 @@ bool PicturePile::ApplyInvalidationAndResize(const gfx::Rect& interest_rect,
if (picture_it == picture_map_.end())
continue;
- // Inform the grid cell that it has been invalidated in this frame.
- updated = picture_it->second.Invalidate(frame_number) || updated;
+ updated = true;
+ picture_map_.erase(key);
+
// Invalidate drops the picture so the whole tile better be invalidated
// if it won't be re-recorded below.
DCHECK_IMPLIES(!tiling_.TileBounds(key.first, key.second)
@@ -506,29 +492,8 @@ void PicturePile::GetInvalidTileRects(const gfx::Rect& interest_rect,
for (TilingData::Iterator it(&tiling_, interest_rect, include_borders); it;
++it) {
const PictureMapKey& key = it.index();
- PictureInfo& info = picture_map_[key];
-
- gfx::Rect rect = PaddedRect(key);
- int distance_to_visible =
- rect.ManhattanInternalDistance(visible_layer_rect);
-
- if (info.NeedsRecording(frame_number, distance_to_visible)) {
- gfx::Rect tile = tiling_.TileBounds(key.first, key.second);
- invalid_tiles->push_back(tile);
- } else if (!info.GetPicture()) {
- if (recorded_viewport_.Intersects(rect)) {
- // Recorded viewport is just an optimization for a fully recorded
- // interest rect. In this case, a tile in that rect has declined
- // to be recorded (probably due to frequent invalidations).
- // TODO(enne): Shrink the recorded_viewport_ rather than clearing.
- recorded_viewport_ = gfx::Rect();
- }
-
- // If a tile in the interest rect is not recorded, the entire tile needs
- // to be considered invalid, so that we know not to keep around raster
- // tiles that intersect this recording tile.
- invalidation->Union(tiling_.TileBounds(it.index_x(), it.index_y()));
- }
+ if (picture_map_.find(key) == picture_map_.end())
+ invalid_tiles->push_back(tiling_.TileBounds(key.first, key.second));
}
}
@@ -570,8 +535,7 @@ void PicturePile::CreatePictures(ContentLayerClient* painter,
const PictureMapKey& key = it.index();
gfx::Rect tile = PaddedRect(key);
if (padded_record_rect.Contains(tile)) {
- PictureInfo& info = picture_map_[key];
- info.SetPicture(picture);
+ picture_map_[key] = picture;
found_tile_for_recorded_picture = true;
}
}
@@ -657,8 +621,6 @@ bool PicturePile::CanRasterSlowTileCheck(const gfx::Rect& layer_rect) const {
PictureMap::const_iterator map_iter = picture_map_.find(tile_iter.index());
if (map_iter == picture_map_.end())
return false;
- if (!map_iter->second.GetPicture())
- return false;
}
return true;
}
@@ -672,7 +634,7 @@ void PicturePile::DetermineIfSolidColor() {
}
PictureMap::const_iterator it = picture_map_.begin();
- const Picture* picture = it->second.GetPicture();
+ const Picture* picture = it->second.get();
// Missing recordings due to frequent invalidations or being too far away
// from the interest rect will cause the a null picture to exist.
@@ -685,7 +647,7 @@ void PicturePile::DetermineIfSolidColor() {
// Make sure all of the mapped images point to the same picture.
for (++it; it != picture_map_.end(); ++it) {
- if (it->second.GetPicture() != picture)
+ if (it->second.get() != picture)
return;
}
@@ -715,48 +677,6 @@ void PicturePile::Clear() {
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::PictureInfo::ResetInvalidationHistory() {
- invalidation_history_.reset();
- last_frame_number_ = 0;
-}
-
void PicturePile::SetBufferPixels(int new_buffer_pixels) {
if (new_buffer_pixels == buffer_pixels())
return;
@@ -765,17 +685,4 @@ void PicturePile::SetBufferPixels(int new_buffer_pixels) {
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 f3c9569..9f29e06 100644
--- a/cc/resources/picture_pile.h
+++ b/cc/resources/picture_pile.h
@@ -29,7 +29,6 @@ class CC_EXPORT PicturePile : public RecordingSource {
const gfx::Rect& visible_layer_rect,
int frame_number,
RecordingMode recording_mode) override;
- void DidMoveToNewCompositor() override;
scoped_refptr<RasterSource> CreateRasterSource(
bool can_use_lcd_text) const override;
gfx::Size GetSize() const final;
@@ -42,36 +41,9 @@ class CC_EXPORT PicturePile : public RecordingSource {
void SetUnsuitableForGpuRasterizationForTesting() override;
gfx::Size GetTileGridSizeForTesting() const override;
- 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();
- }
-
- void ResetInvalidationHistory();
-
- 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;
+ typedef base::hash_map<PictureMapKey, scoped_refptr<const Picture>>
+ PictureMap;
// An internal CanRaster check that goes to the picture_map rather than
// using the recorded_viewport hint.
diff --git a/cc/resources/picture_pile_impl.cc b/cc/resources/picture_pile_impl.cc
index 9c68137..be05358 100644
--- a/cc/resources/picture_pile_impl.cc
+++ b/cc/resources/picture_pile_impl.cc
@@ -135,10 +135,8 @@ void PicturePileImpl::CoalesceRasters(const gfx::Rect& canvas_rect,
PictureMap::const_iterator map_iter = picture_map_.find(tile_iter.index());
if (map_iter == picture_map_.end())
continue;
- const PictureInfo& info = map_iter->second;
- const Picture* picture = info.GetPicture();
- if (!picture)
- continue;
+ const Picture* picture = map_iter->second.get();
+ DCHECK(picture);
// This is intentionally *enclosed* rect, so that the clip is aligned on
// integral post-scale content pixels and does not extend past the edges
@@ -269,8 +267,8 @@ size_t PicturePileImpl::GetPictureMemoryUsage() const {
size_t total_size = 0;
std::set<const Picture*> pictures_seen;
for (const auto& map_value : picture_map_) {
- const Picture* picture = map_value.second.GetPicture();
- if (picture && pictures_seen.insert(picture).second)
+ const Picture* picture = map_value.second.get();
+ if (pictures_seen.insert(picture).second)
total_size += picture->ApproximateMemoryUsage();
}
@@ -357,8 +355,6 @@ bool PicturePileImpl::CanRasterSlowTileCheck(
PictureMap::const_iterator map_iter = picture_map_.find(tile_iter.index());
if (map_iter == picture_map_.end())
return false;
- if (!map_iter->second.GetPicture())
- return false;
}
return true;
}
@@ -382,8 +378,8 @@ void PicturePileImpl::AsValueInto(
if (map_iter == picture_map_.end())
continue;
- const Picture* picture = map_iter->second.GetPicture();
- if (picture && (appended_pictures.count(picture) == 0)) {
+ const Picture* picture = map_iter->second.get();
+ if (appended_pictures.count(picture) == 0) {
appended_pictures.insert(picture);
TracedValue::AppendIDRef(picture, pictures);
}
@@ -439,8 +435,8 @@ void PicturePileImpl::PixelRefIterator::AdvanceToTilePictureWithPixelRefs() {
if (it == picture_pile_->picture_map_.end())
continue;
- const Picture* picture = it->second.GetPicture();
- if (!picture || (processed_pictures_.count(picture) != 0) ||
+ const Picture* picture = it->second.get();
+ if ((processed_pictures_.count(picture) != 0) ||
!picture->WillPlayBackBitmaps())
continue;
@@ -454,8 +450,8 @@ void PicturePileImpl::PixelRefIterator::AdvanceToTilePictureWithPixelRefs() {
void PicturePileImpl::DidBeginTracing() {
std::set<const void*> processed_pictures;
for (const auto& map_pair : picture_map_) {
- const Picture* picture = map_pair.second.GetPicture();
- if (picture && (processed_pictures.count(picture) == 0)) {
+ const Picture* picture = map_pair.second.get();
+ if (processed_pictures.count(picture) == 0) {
picture->EmitTraceSnapshot();
processed_pictures.insert(picture);
}
diff --git a/cc/resources/picture_pile_impl.h b/cc/resources/picture_pile_impl.h
index 72f9a5c..4b7af42 100644
--- a/cc/resources/picture_pile_impl.h
+++ b/cc/resources/picture_pile_impl.h
@@ -96,10 +96,8 @@ class CC_EXPORT PicturePileImpl : public RasterSource {
friend class PicturePile;
friend class PixelRefIterator;
- // 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 PicturePile* other, bool can_use_lcd_text);
diff --git a/cc/resources/picture_pile_unittest.cc b/cc/resources/picture_pile_unittest.cc
index bfeb082..882bbf4 100644
--- a/cc/resources/picture_pile_unittest.cc
+++ b/cc/resources/picture_pile_unittest.cc
@@ -151,17 +151,19 @@ TEST_F(PicturePileTest, SmallInvalidateInflated) {
EXPECT_EQ(1, pile_.tiling().num_tiles_x());
EXPECT_EQ(1, pile_.tiling().num_tiles_y());
- 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(
- picture_info.GetPicture()->LayerRect(), min_scale_);
+ PicturePile::PictureMapKey key = FakePicturePile::PictureMapKey(0, 0);
+ PicturePile::PictureMap::iterator it = pile_.picture_map().find(key);
+ EXPECT_TRUE(it != pile_.picture_map().end());
+ const Picture* picture = it->second.get();
+ EXPECT_TRUE(picture);
+
+ gfx::Rect picture_rect =
+ gfx::ScaleToEnclosedRect(picture->LayerRect(), min_scale_);
// The the picture should be large enough that scaling it never makes a rect
// smaller than 1 px wide or tall.
- EXPECT_FALSE(picture_rect.IsEmpty()) << "Picture rect " <<
- picture_rect.ToString();
+ EXPECT_FALSE(picture_rect.IsEmpty()) << "Picture rect "
+ << picture_rect.ToString();
}
TEST_F(PicturePileTest, LargeInvalidateInflated) {
@@ -173,174 +175,17 @@ TEST_F(PicturePileTest, LargeInvalidateInflated) {
EXPECT_EQ(1, pile_.tiling().num_tiles_x());
EXPECT_EQ(1, pile_.tiling().num_tiles_y());
- FakePicturePile::PictureInfo& picture_info =
- pile_.picture_map().find(FakePicturePile::PictureMapKey(0, 0))->second;
- EXPECT_TRUE(!!picture_info.GetPicture());
+ PicturePile::PictureMapKey key = FakePicturePile::PictureMapKey(0, 0);
+ PicturePile::PictureMap::iterator it = pile_.picture_map().find(key);
+ EXPECT_TRUE(it != pile_.picture_map().end());
+ const Picture* picture = it->second.get();
+ EXPECT_TRUE(picture);
int expected_inflation = pile_.buffer_pixels();
- const Picture* base_picture = picture_info.GetPicture();
gfx::Rect base_picture_rect(tiling_size());
base_picture_rect.Inset(-expected_inflation, -expected_inflation);
- EXPECT_EQ(base_picture_rect.ToString(),
- base_picture->LayerRect().ToString());
-}
-
-TEST_F(PicturePileTest, InvalidateOnTileBoundaryInflated) {
- gfx::Size new_tiling_size =
- gfx::ToCeiledSize(gfx::ScaleSize(tiling_size(), 2.f));
- // This creates initial pictures.
- SetTilingSize(new_tiling_size);
-
- // Due to border pixels, we should have 3 tiles.
- EXPECT_EQ(3, pile_.tiling().num_tiles_x());
- EXPECT_EQ(3, pile_.tiling().num_tiles_y());
-
- // We should have 1/.125 - 1 = 7 border pixels.
- EXPECT_EQ(7, pile_.buffer_pixels());
- EXPECT_EQ(7, pile_.tiling().border_texels());
-
- // Invalidate everything to have a non zero invalidation frequency.
- UpdateWholePile();
-
- // Invalidate something just over a tile boundary by a single pixel.
- // This will invalidate the tile (1, 1), as well as 1 row of pixels in (1, 0).
- Region invalidate_rect(
- gfx::Rect(pile_.tiling().TileBoundsWithBorder(0, 0).right(),
- pile_.tiling().TileBoundsWithBorder(0, 0).bottom() - 1,
- 50,
- 50));
- Region expected_invalidation = invalidate_rect;
- UpdateAndExpandInvalidation(&invalidate_rect, tiling_size(), tiling_rect());
- EXPECT_EQ(expected_invalidation.ToString(), invalidate_rect.ToString());
-
- for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- FakePicturePile::PictureInfo& picture_info =
- pile_.picture_map()
- .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 / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
- picture_info.GetInvalidationFrequencyForTesting());
- } else {
- EXPECT_FLOAT_EQ(
- 1.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
- picture_info.GetInvalidationFrequencyForTesting());
- }
- }
- }
-}
-
-TEST_F(PicturePileTest, InvalidateOnFullLayer) {
- UpdateWholePile();
-
- // Everything was invalidated once so far.
- for (auto& it : pile_.picture_map()) {
- EXPECT_FLOAT_EQ(
- 1.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
- it.second.GetInvalidationFrequencyForTesting());
- }
-
- // Invalidate everything,
- Region invalidation = tiling_rect();
- UpdateAndExpandInvalidation(&invalidation, tiling_size(), tiling_rect());
-
- // Everything was invalidated again.
- for (auto& it : pile_.picture_map()) {
- EXPECT_FLOAT_EQ(
- 2.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED,
- it.second.GetInvalidationFrequencyForTesting());
- }
-}
-
-TEST_F(PicturePileTest, StopRecordingOffscreenInvalidations) {
- gfx::Size new_tiling_size =
- gfx::ToCeiledSize(gfx::ScaleSize(tiling_size(), 4.f));
- SetTilingSize(new_tiling_size);
-
- gfx::Rect viewport(tiling_size().width(), 1);
-
- // Update the whole pile until the invalidation frequency is high.
- for (int frame = 0; frame < 33; ++frame) {
- UpdateWholePile();
- }
-
- // 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) {
- FakePicturePile::PictureInfo& picture_info =
- pile_.picture_map()
- .find(FakePicturePile::PictureMapKey(i, j))
- ->second;
- EXPECT_FLOAT_EQ(1.0f, picture_info.GetInvalidationFrequencyForTesting())
- << "i " << i << " j " << j;
- }
- }
-
- // Update once more with a small viewport.
- Region invalidation(tiling_rect());
- UpdateAndExpandInvalidation(&invalidation, tiling_size(), viewport);
- EXPECT_EQ(tiling_rect().ToString(), invalidation.ToString());
-
- bool had_tiles_with_no_pictures = false;
- for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- FakePicturePile::PictureInfo& picture_info =
- pile_.picture_map()
- .find(FakePicturePile::PictureMapKey(i, j))
- ->second;
- EXPECT_FLOAT_EQ(1.0f, picture_info.GetInvalidationFrequencyForTesting());
-
- // If the y far enough away we expect to find no picture (no re-recording
- // happened). For close y, the picture should change.
- if (j >= 3) {
- EXPECT_FALSE(picture_info.GetPicture()) << "i " << i << " j " << j;
- had_tiles_with_no_pictures = true;
- } else {
- EXPECT_TRUE(picture_info.GetPicture()) << "i " << i << " j " << j;
- }
- }
- }
-
- EXPECT_TRUE(had_tiles_with_no_pictures);
-
- // Update a partial tile that doesn't get recorded. We should expand the
- // invalidation to the entire tiles that overlap it.
- Region small_invalidation =
- gfx::Rect(pile_.tiling().TileBounds(3, 4).x(),
- pile_.tiling().TileBounds(3, 4).y() + 10,
- 1,
- 1);
- UpdateAndExpandInvalidation(&small_invalidation, tiling_size(), viewport);
- EXPECT_TRUE(small_invalidation.Contains(gfx::UnionRects(
- pile_.tiling().TileBounds(2, 4), pile_.tiling().TileBounds(3, 4))))
- << small_invalidation.ToString();
-
- // Now update with no invalidation and full viewport
- Region empty_invalidation;
- UpdateAndExpandInvalidation(&empty_invalidation, tiling_size(),
- tiling_rect());
- EXPECT_EQ(Region().ToString(), empty_invalidation.ToString());
-
- for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) {
- for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) {
- FakePicturePile::PictureInfo& picture_info =
- pile_.picture_map()
- .find(FakePicturePile::PictureMapKey(i, j))
- ->second;
- // Expect the invalidation frequency to be less than 1, since we just
- // updated with no invalidations.
- EXPECT_LT(picture_info.GetInvalidationFrequencyForTesting(), 1.f);
-
- // We expect that there are pictures everywhere now.
- EXPECT_TRUE(picture_info.GetPicture()) << "i " << i << " j " << j;
- }
- }
+ EXPECT_EQ(base_picture_rect.ToString(), picture->LayerRect().ToString());
}
TEST_F(PicturePileTest, ClearingInvalidatesRecordedRect) {
@@ -356,58 +201,6 @@ TEST_F(PicturePileTest, ClearingInvalidatesRecordedRect) {
EXPECT_FALSE(pile_.CanRasterSlowTileCheck(rect));
}
-TEST_F(PicturePileTest, FrequentInvalidationCanRaster) {
- // This test makes sure that if part of the page is frequently invalidated
- // and doesn't get re-recorded, then CanRaster is not true for any
- // tiles touching it, but is true for adjacent tiles, even if it
- // overlaps on borders (edge case).
- gfx::Size new_tiling_size =
- gfx::ToCeiledSize(gfx::ScaleSize(tiling_size(), 4.f));
- SetTilingSize(new_tiling_size);
-
- gfx::Rect tile02_borders = pile_.tiling().TileBoundsWithBorder(0, 2);
- gfx::Rect tile03_borders = pile_.tiling().TileBoundsWithBorder(0, 3);
- gfx::Rect tile02_noborders = pile_.tiling().TileBounds(0, 2);
- gfx::Rect tile03_noborders = pile_.tiling().TileBounds(0, 3);
-
- // Sanity check these two tiles are overlapping with borders, since this is
- // what the test is trying to repro.
- EXPECT_TRUE(tile02_borders.Intersects(tile03_borders));
- EXPECT_FALSE(tile02_noborders.Intersects(tile03_noborders));
- UpdateWholePile();
- EXPECT_TRUE(pile_.CanRasterLayerRect(tile02_noborders));
- EXPECT_TRUE(pile_.CanRasterSlowTileCheck(tile02_noborders));
- EXPECT_TRUE(pile_.CanRasterLayerRect(tile03_noborders));
- EXPECT_TRUE(pile_.CanRasterSlowTileCheck(tile03_noborders));
- // Sanity check that an initial paint goes down the fast path of having
- // a valid recorded viewport.
- EXPECT_TRUE(!pile_.recorded_viewport().IsEmpty());
-
- // Update the whole layer until the invalidation frequency is high.
- for (int frame = 0; frame < 33; ++frame) {
- UpdateWholePile();
- }
-
- // Update once more with a small viewport.
- gfx::Rect viewport(tiling_size().width(), 1);
- Region invalidation(tiling_rect());
- UpdateAndExpandInvalidation(&invalidation, tiling_size(), viewport);
- EXPECT_EQ(tiling_rect().ToString(), invalidation.ToString());
-
- // Sanity check some pictures exist and others don't.
- EXPECT_TRUE(pile_.picture_map()
- .find(FakePicturePile::PictureMapKey(0, 2))
- ->second.GetPicture());
- EXPECT_FALSE(pile_.picture_map()
- .find(FakePicturePile::PictureMapKey(0, 3))
- ->second.GetPicture());
-
- EXPECT_TRUE(pile_.CanRasterLayerRect(tile02_noborders));
- EXPECT_TRUE(pile_.CanRasterSlowTileCheck(tile02_noborders));
- EXPECT_FALSE(pile_.CanRasterLayerRect(tile03_noborders));
- EXPECT_FALSE(pile_.CanRasterSlowTileCheck(tile03_noborders));
-}
-
TEST_F(PicturePileTest, NoInvalidationValidViewport) {
// This test validates that the recorded_viewport cache of full tiles
// is still valid for some use cases. If it's not, it's a performance
@@ -581,7 +374,7 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -599,7 +392,7 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
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());
+ EXPECT_EQ(j < 5, it != map.end() && it->second.get());
}
}
@@ -644,7 +437,7 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
expect_tile = j < 5 || (j == 5 && i == 5);
break;
}
- EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture());
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.get());
}
}
@@ -691,7 +484,7 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
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());
+ EXPECT_EQ(i < 5, it != map.end() && it->second.get());
}
}
@@ -738,7 +531,7 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
expect_tile = i < 5 || (j == 5 && i == 5);
break;
}
- EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture());
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.get());
}
}
@@ -780,7 +573,7 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
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());
+ EXPECT_EQ(i < 5 && j < 5, it != map.end() && it->second.get());
}
}
@@ -830,8 +623,8 @@ TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) {
expect_tile = (i < 5 && j < 5) || (j == 5 && i == 5);
break;
}
- EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture())
- << i << "," << j;
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.get()) << i << ","
+ << j;
}
}
@@ -895,7 +688,7 @@ TEST_P(PicturePileResizeCornerTest, SmallResizePileOutsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -936,7 +729,7 @@ TEST_P(PicturePileResizeCornerTest, SmallResizePileOutsideInterestRect) {
expect_tile = j < 5 || (j == 5 && i == 5);
break;
}
- EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture());
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.get());
}
}
@@ -1002,7 +795,7 @@ TEST_P(PicturePileResizeCornerTest, SmallResizePileOutsideInterestRect) {
expect_tile = i < 5 || (j == 5 && i == 5);
break;
}
- EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture());
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.get());
}
}
@@ -1071,8 +864,8 @@ TEST_P(PicturePileResizeCornerTest, SmallResizePileOutsideInterestRect) {
expect_tile = (i < 5 && j < 5) || (j == 5 && i == 5);
break;
}
- EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture())
- << i << "," << j;
+ EXPECT_EQ(expect_tile, it != map.end() && it->second.get()) << i << ","
+ << j;
}
}
@@ -1152,7 +945,7 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1167,7 +960,7 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1193,7 +986,7 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1216,7 +1009,7 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1242,7 +1035,7 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1265,7 +1058,7 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1295,7 +1088,7 @@ TEST_F(PicturePileTest, ResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1333,7 +1126,7 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1348,7 +1141,7 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1369,7 +1162,7 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1391,7 +1184,7 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1412,7 +1205,7 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1434,7 +1227,7 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
@@ -1455,7 +1248,7 @@ TEST_F(PicturePileTest, SmallResizePileInsideInterestRect) {
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());
+ EXPECT_TRUE(it != map.end() && it->second.get());
}
}
diff --git a/cc/resources/recording_source.h b/cc/resources/recording_source.h
index 98e4e87..ef8c033 100644
--- a/cc/resources/recording_source.h
+++ b/cc/resources/recording_source.h
@@ -39,8 +39,6 @@ class CC_EXPORT RecordingSource {
int frame_number,
RecordingMode recording_mode) = 0;
- virtual void DidMoveToNewCompositor() = 0;
-
virtual scoped_refptr<RasterSource> CreateRasterSource(
bool can_use_lcd_text) const = 0;
diff --git a/cc/test/fake_picture_pile.cc b/cc/test/fake_picture_pile.cc
index 614d106..80a584b 100644
--- a/cc/test/fake_picture_pile.cc
+++ b/cc/test/fake_picture_pile.cc
@@ -68,7 +68,7 @@ void FakePicturePile::AddRecordingAt(int x, int y) {
scoped_refptr<Picture> picture(
Picture::Create(bounds, &client_, tile_grid_size_, gather_pixel_refs_,
RecordingSource::RECORD_NORMALLY));
- picture_map_[std::pair<int, int>(x, y)].SetPicture(picture);
+ picture_map_[std::pair<int, int>(x, y)] = picture;
EXPECT_TRUE(HasRecordingAt(x, y));
has_any_recordings_ = true;
@@ -88,9 +88,7 @@ void FakePicturePile::RemoveRecordingAt(int x, int y) {
bool FakePicturePile::HasRecordingAt(int x, int y) const {
PictureMap::const_iterator found = picture_map_.find(PictureMapKey(x, y));
- if (found == picture_map_.end())
- return false;
- return !!found->second.GetPicture();
+ return found != picture_map_.end();
}
void FakePicturePile::Rerecord() {
diff --git a/cc/test/fake_picture_pile.h b/cc/test/fake_picture_pile.h
index 9a9b3fa..e6f81dd 100644
--- a/cc/test/fake_picture_pile.h
+++ b/cc/test/fake_picture_pile.h
@@ -17,7 +17,6 @@ namespace cc {
class FakePicturePile : public PicturePile {
public:
- using PictureInfo = PicturePile::PictureInfo;
using PictureMapKey = PicturePile::PictureMapKey;
using PictureMap = PicturePile::PictureMap;
diff --git a/cc/test/fake_picture_pile_impl.cc b/cc/test/fake_picture_pile_impl.cc
index ab255cc..172a434 100644
--- a/cc/test/fake_picture_pile_impl.cc
+++ b/cc/test/fake_picture_pile_impl.cc
@@ -114,9 +114,7 @@ void FakePicturePileImpl::PlaybackToCanvas(SkCanvas* canvas,
bool FakePicturePileImpl::HasRecordingAt(int x, int y) const {
PictureMap::const_iterator found = picture_map_.find(PictureMapKey(x, y));
- if (found == picture_map_.end())
- return false;
- return !!found->second.GetPicture();
+ return found != picture_map_.end();
}
} // namespace cc