| Index: cc/resources/picture_layer_tiling_unittest.cc
|
| diff --git a/cc/resources/picture_layer_tiling_unittest.cc b/cc/resources/picture_layer_tiling_unittest.cc
|
| index 9190b98e48dd5e4662adfbd0ce5b256fb45ac5f0..0d71ef932d642534f846b5e2baf8f913036927b1 100644
|
| --- a/cc/resources/picture_layer_tiling_unittest.cc
|
| +++ b/cc/resources/picture_layer_tiling_unittest.cc
|
| @@ -22,6 +22,10 @@
|
| namespace cc {
|
| namespace {
|
|
|
| +const size_t kMaxTilesForInterestArea = 10000;
|
| +const float kSkewportTargetTimeInSeconds = 1.0f;
|
| +const int kSkewportExtrapolationLimitInContentPixels = 2000;
|
| +
|
| static gfx::Rect ViewportInLayerSpace(
|
| const gfx::Transform& transform,
|
| const gfx::Size& device_viewport) {
|
| @@ -54,11 +58,22 @@ class TestablePictureLayerTiling : public PictureLayerTiling {
|
| static scoped_ptr<TestablePictureLayerTiling> Create(
|
| float contents_scale,
|
| const gfx::Size& layer_bounds,
|
| - PictureLayerTilingClient* client) {
|
| + PictureLayerTilingClient* client,
|
| + size_t max_tiles_for_interest_area,
|
| + float skewport_target_time,
|
| + int skewport_extrapolation_limit) {
|
| return make_scoped_ptr(new TestablePictureLayerTiling(
|
| - contents_scale,
|
| - layer_bounds,
|
| - client));
|
| + contents_scale, layer_bounds, client, max_tiles_for_interest_area,
|
| + skewport_target_time, skewport_extrapolation_limit));
|
| + }
|
| +
|
| + static scoped_ptr<TestablePictureLayerTiling> CreateDefault(
|
| + float contents_scale,
|
| + const gfx::Size& layer_bounds,
|
| + PictureLayerTilingClient* client) {
|
| + return Create(contents_scale, layer_bounds, client,
|
| + kMaxTilesForInterestArea, kSkewportTargetTimeInSeconds,
|
| + kSkewportExtrapolationLimitInContentPixels);
|
| }
|
|
|
| gfx::Rect live_tiles_rect() const { return live_tiles_rect_; }
|
| @@ -72,8 +87,16 @@ class TestablePictureLayerTiling : public PictureLayerTiling {
|
| protected:
|
| TestablePictureLayerTiling(float contents_scale,
|
| const gfx::Size& layer_bounds,
|
| - PictureLayerTilingClient* client)
|
| - : PictureLayerTiling(contents_scale, layer_bounds, client) { }
|
| + PictureLayerTilingClient* client,
|
| + size_t max_tiles_for_interest_area,
|
| + float skewport_target_time,
|
| + int skewport_extrapolation_limit)
|
| + : PictureLayerTiling(contents_scale,
|
| + layer_bounds,
|
| + client,
|
| + max_tiles_for_interest_area,
|
| + skewport_target_time,
|
| + skewport_extrapolation_limit) {}
|
| };
|
|
|
| class PictureLayerTilingIteratorTest : public testing::Test {
|
| @@ -86,9 +109,10 @@ class PictureLayerTilingIteratorTest : public testing::Test {
|
| const gfx::Size& layer_bounds) {
|
| client_.SetTileSize(tile_size);
|
| client_.set_tree(PENDING_TREE);
|
| - tiling_ = TestablePictureLayerTiling::Create(contents_scale,
|
| - layer_bounds,
|
| - &client_);
|
| + tiling_ = TestablePictureLayerTiling::Create(
|
| + contents_scale, layer_bounds, &client_, kMaxTilesForInterestArea,
|
| + kSkewportTargetTimeInSeconds,
|
| + kSkewportExtrapolationLimitInContentPixels);
|
| }
|
|
|
| void SetLiveRectAndVerifyTiles(const gfx::Rect& live_tiles_rect) {
|
| @@ -180,10 +204,6 @@ class PictureLayerTilingIteratorTest : public testing::Test {
|
| VerifyTilesExactlyCoverRect(rect_scale, dest_rect, clamped_rect);
|
| }
|
|
|
| - void set_max_tiles_for_interest_area(size_t area) {
|
| - client_.set_max_tiles_for_interest_area(area);
|
| - }
|
| -
|
| protected:
|
| FakePictureLayerTilingClient client_;
|
| scoped_ptr<TestablePictureLayerTiling> tiling_;
|
| @@ -532,7 +552,6 @@ TEST_F(PictureLayerTilingIteratorTest, NonContainedDestRect) {
|
|
|
| TEST(PictureLayerTilingTest, SkewportLimits) {
|
| FakePictureLayerTilingClient client;
|
| - client.set_skewport_extrapolation_limit_in_content_pixels(75);
|
| client.set_tree(ACTIVE_TREE);
|
| scoped_ptr<TestablePictureLayerTiling> tiling;
|
|
|
| @@ -540,7 +559,9 @@ TEST(PictureLayerTilingTest, SkewportLimits) {
|
| gfx::Size layer_bounds(200, 200);
|
|
|
| client.SetTileSize(gfx::Size(100, 100));
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
|
| + tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client,
|
| + kMaxTilesForInterestArea,
|
| + kSkewportTargetTimeInSeconds, 75);
|
|
|
| tiling->ComputeTilePriorityRects(viewport, 1.f, 1.0, Occlusion());
|
|
|
| @@ -606,7 +627,8 @@ TEST(PictureLayerTilingTest, ComputeSkewport) {
|
|
|
| client.SetTileSize(gfx::Size(100, 100));
|
| client.set_tree(ACTIVE_TREE);
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.0f, layer_bounds, &client);
|
|
|
| tiling->ComputeTilePriorityRects(viewport, 1.f, 1.0, Occlusion());
|
|
|
| @@ -671,7 +693,8 @@ TEST(PictureLayerTilingTest, ViewportDistanceWithScale) {
|
| // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at
|
| // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the
|
| // tiling.
|
| - tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(0.25f, layer_bounds, &client);
|
| gfx::Rect viewport_in_content_space =
|
| gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f));
|
|
|
| @@ -825,7 +848,8 @@ TEST(PictureLayerTilingTest, ViewportDistanceWithScale) {
|
| EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible);
|
|
|
| // Test additional scales.
|
| - tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(0.2f, layer_bounds, &client);
|
| tiling->ComputeTilePriorityRects(viewport, 1.0f, 4.0, Occlusion());
|
| tiling->UpdateAllTilePrioritiesForTesting();
|
|
|
| @@ -1086,7 +1110,8 @@ TEST(PictureLayerTilingTest, TilingRasterTileIteratorStaticViewport) {
|
| client.SetTileSize(gfx::Size(30, 30));
|
| client.set_tree(ACTIVE_TREE);
|
|
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.0f, layer_bounds, &client);
|
| tiling->ComputeTilePriorityRects(viewport, 1.0f, 1.0, Occlusion());
|
| tiling->UpdateAllTilePrioritiesForTesting();
|
|
|
| @@ -1191,7 +1216,8 @@ TEST(PictureLayerTilingTest, TilingRasterTileIteratorMovingViewport) {
|
| client.SetTileSize(gfx::Size(30, 30));
|
| client.set_tree(ACTIVE_TREE);
|
|
|
| - tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.f, layer_bounds, &client);
|
| tiling->ComputeTilePriorityRects(viewport, 1.0f, 1.0, Occlusion());
|
| tiling->ComputeTilePriorityRects(moved_viewport, 1.0f, 2.0, Occlusion());
|
| tiling->UpdateAllTilePrioritiesForTesting();
|
| @@ -1326,14 +1352,17 @@ static void TilesIntersectingRectExist(const gfx::Rect& rect,
|
| TEST_F(PictureLayerTilingIteratorTest,
|
| TilesExistLargeViewportAndLayerWithSmallVisibleArea) {
|
| gfx::Size layer_bounds(10000, 10000);
|
| - Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
|
| + client_.SetTileSize(gfx::Size(100, 100));
|
| + client_.set_tree(PENDING_TREE);
|
| + tiling_ = TestablePictureLayerTiling::Create(
|
| + 1.f, layer_bounds, &client_, 1, kSkewportTargetTimeInSeconds,
|
| + kSkewportExtrapolationLimitInContentPixels);
|
| VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
|
| VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
|
|
|
| gfx::Rect visible_rect(8000, 8000, 50, 50);
|
|
|
| client_.set_tree(ACTIVE_TREE);
|
| - set_max_tiles_for_interest_area(1);
|
| tiling_->ComputeTilePriorityRects(visible_rect, // visible content rect
|
| 1.f, // current contents scale
|
| 1.0, // current frame time
|
| @@ -1350,7 +1379,9 @@ TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) {
|
| client_.SetTileSize(tile_size);
|
| client_.set_tree(PENDING_TREE);
|
|
|
| - auto active_set = PictureLayerTilingSet::Create(&client_);
|
| + auto active_set = PictureLayerTilingSet::Create(
|
| + &client_, kMaxTilesForInterestArea, kSkewportTargetTimeInSeconds,
|
| + kSkewportExtrapolationLimitInContentPixels);
|
|
|
| active_set->AddTiling(1.f, layer_bounds);
|
|
|
| @@ -1367,7 +1398,9 @@ TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) {
|
| base::Bind(&TileExists, true));
|
|
|
| // Add the same tilings to the pending set.
|
| - auto pending_set = PictureLayerTilingSet::Create(&client_);
|
| + auto pending_set = PictureLayerTilingSet::Create(
|
| + &client_, kMaxTilesForInterestArea, kSkewportTargetTimeInSeconds,
|
| + kSkewportExtrapolationLimitInContentPixels);
|
| Region invalidation;
|
| pending_set->SyncTilings(*active_set, layer_bounds, invalidation, 0.f,
|
| client_.raster_source());
|
| @@ -1406,9 +1439,9 @@ TEST(ComputeTilePriorityRectsTest, VisibleTiles) {
|
|
|
| client.SetTileSize(gfx::Size(100, 100));
|
| client.set_tree(ACTIVE_TREE);
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - current_layer_bounds,
|
| - &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.0f, // contents_scale
|
| + current_layer_bounds, &client);
|
|
|
| tiling->ComputeTilePriorityRects(viewport_in_layer_space,
|
| current_layer_contents_scale,
|
| @@ -1460,9 +1493,9 @@ TEST(ComputeTilePriorityRectsTest, OffscreenTiles) {
|
|
|
| client.SetTileSize(gfx::Size(100, 100));
|
| client.set_tree(ACTIVE_TREE);
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - current_layer_bounds,
|
| - &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.0f, // contents_scale
|
| + current_layer_bounds, &client);
|
|
|
| tiling->ComputeTilePriorityRects(viewport_in_layer_space,
|
| current_layer_contents_scale,
|
| @@ -1524,9 +1557,9 @@ TEST(ComputeTilePriorityRectsTest, PartiallyOffscreenLayer) {
|
|
|
| client.SetTileSize(gfx::Size(100, 100));
|
| client.set_tree(ACTIVE_TREE);
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - current_layer_bounds,
|
| - &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.0f, // contents_scale
|
| + current_layer_bounds, &client);
|
|
|
| tiling->ComputeTilePriorityRects(viewport_in_layer_space,
|
| current_layer_contents_scale,
|
| @@ -1582,9 +1615,9 @@ TEST(ComputeTilePriorityRectsTest, PartiallyOffscreenRotatedLayer) {
|
|
|
| client.SetTileSize(gfx::Size(100, 100));
|
| client.set_tree(ACTIVE_TREE);
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - current_layer_bounds,
|
| - &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.0f, // contents_scale
|
| + current_layer_bounds, &client);
|
|
|
| tiling->ComputeTilePriorityRects(viewport_in_layer_space,
|
| current_layer_contents_scale,
|
| @@ -1664,9 +1697,9 @@ TEST(ComputeTilePriorityRectsTest, PerspectiveLayer) {
|
|
|
| client.SetTileSize(gfx::Size(100, 100));
|
| client.set_tree(ACTIVE_TREE);
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - current_layer_bounds,
|
| - &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.0f, // contents_scale
|
| + current_layer_bounds, &client);
|
|
|
| tiling->ComputeTilePriorityRects(viewport_in_layer_space,
|
| current_layer_contents_scale,
|
| @@ -1756,9 +1789,9 @@ TEST(ComputeTilePriorityRectsTest, PerspectiveLayerClippedByW) {
|
|
|
| client.SetTileSize(gfx::Size(100, 100));
|
| client.set_tree(ACTIVE_TREE);
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - current_layer_bounds,
|
| - &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.0f, // contents_scale
|
| + current_layer_bounds, &client);
|
|
|
| tiling->ComputeTilePriorityRects(viewport_in_layer_space,
|
| current_layer_contents_scale,
|
| @@ -1818,9 +1851,9 @@ TEST(ComputeTilePriorityRectsTest, BasicMotion) {
|
|
|
| client.SetTileSize(gfx::Size(100, 100));
|
| client.set_tree(ACTIVE_TREE);
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - current_layer_bounds,
|
| - &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.0f, // contents_scale
|
| + current_layer_bounds, &client);
|
|
|
| // previous ("last") frame
|
| tiling->ComputeTilePriorityRects(viewport_in_layer_space,
|
| @@ -1893,9 +1926,9 @@ TEST(ComputeTilePriorityRectsTest, RotationMotion) {
|
|
|
| client.SetTileSize(gfx::Size(100, 100));
|
| client.set_tree(ACTIVE_TREE);
|
| - tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - current_layer_bounds,
|
| - &client);
|
| + tiling =
|
| + TestablePictureLayerTiling::CreateDefault(1.0f, // contents_scale
|
| + current_layer_bounds, &client);
|
|
|
| // previous ("last") frame
|
| tiling->ComputeTilePriorityRects(viewport_in_layer_space,
|
| @@ -1942,10 +1975,10 @@ TEST(PictureLayerTilingTest, RecycledTilesCleared) {
|
|
|
| active_client.SetTileSize(gfx::Size(100, 100));
|
| active_client.set_tree(ACTIVE_TREE);
|
| - active_client.set_max_tiles_for_interest_area(10);
|
| - active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - gfx::Size(10000, 10000),
|
| - &active_client);
|
| + active_tiling = TestablePictureLayerTiling::Create(
|
| + 1.0f, // contents_scale
|
| + gfx::Size(10000, 10000), &active_client, 10, kSkewportTargetTimeInSeconds,
|
| + kSkewportExtrapolationLimitInContentPixels);
|
| // Create all tiles on this tiling.
|
| active_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f,
|
| Occlusion());
|
| @@ -1954,12 +1987,12 @@ TEST(PictureLayerTilingTest, RecycledTilesCleared) {
|
| recycle_client.SetTileSize(gfx::Size(100, 100));
|
| recycle_client.set_tree(PENDING_TREE);
|
| recycle_client.set_twin_tiling(active_tiling.get());
|
| - recycle_client.set_max_tiles_for_interest_area(10);
|
|
|
| scoped_ptr<TestablePictureLayerTiling> recycle_tiling;
|
| - recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - gfx::Size(10000, 10000),
|
| - &recycle_client);
|
| + recycle_tiling = TestablePictureLayerTiling::Create(
|
| + 1.0f, // contents_scale
|
| + gfx::Size(10000, 10000), &recycle_client, 10,
|
| + kSkewportTargetTimeInSeconds, kSkewportExtrapolationLimitInContentPixels);
|
|
|
| // Create all tiles on the second tiling. All tiles should be shared.
|
| recycle_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f,
|
| @@ -1997,9 +2030,9 @@ TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) {
|
|
|
| active_client.SetTileSize(gfx::Size(100, 100));
|
| active_client.set_tree(ACTIVE_TREE);
|
| - active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - gfx::Size(100, 100),
|
| - &active_client);
|
| + active_tiling = TestablePictureLayerTiling::CreateDefault(
|
| + 1.0f, // contents_scale
|
| + gfx::Size(100, 100), &active_client);
|
| // Create all tiles on this tiling.
|
| active_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f,
|
| Occlusion());
|
| @@ -2008,12 +2041,12 @@ TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) {
|
| recycle_client.SetTileSize(gfx::Size(100, 100));
|
| recycle_client.set_tree(PENDING_TREE);
|
| recycle_client.set_twin_tiling(active_tiling.get());
|
| - recycle_client.set_max_tiles_for_interest_area(10);
|
|
|
| scoped_ptr<TestablePictureLayerTiling> recycle_tiling;
|
| - recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
|
| - gfx::Size(100, 100),
|
| - &recycle_client);
|
| + recycle_tiling = TestablePictureLayerTiling::Create(
|
| + 1.0f, // contents_scale
|
| + gfx::Size(100, 100), &recycle_client, 10, kSkewportTargetTimeInSeconds,
|
| + kSkewportExtrapolationLimitInContentPixels);
|
|
|
| // Create all tiles on the recycle tiling. All tiles should be shared.
|
| recycle_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f,
|
|
|