Index: cc/tiles/picture_layer_tiling_set_unittest.cc |
diff --git a/cc/tiles/picture_layer_tiling_set_unittest.cc b/cc/tiles/picture_layer_tiling_set_unittest.cc |
index 2bc927406d2f46a2de13443f8792f3e15c5dde1a..c113b6dfab42de68598fc42177c028af702be98d 100644 |
--- a/cc/tiles/picture_layer_tiling_set_unittest.cc |
+++ b/cc/tiles/picture_layer_tiling_set_unittest.cc |
@@ -67,9 +67,9 @@ TEST(PictureLayerTilingSetTest, NoResources) { |
scoped_refptr<FakeRasterSource> raster_source = |
FakeRasterSource::CreateEmpty(layer_bounds); |
- set->AddTiling(1.0, raster_source); |
- set->AddTiling(1.5, raster_source); |
- set->AddTiling(2.0, raster_source); |
+ set->AddTiling(gfx::AxisTransform2d(), raster_source); |
+ set->AddTiling(gfx::AxisTransform2d(1.5, gfx::Vector2dF()), raster_source); |
+ set->AddTiling(gfx::AxisTransform2d(2.0, gfx::Vector2dF()), raster_source); |
float contents_scale = 2.0; |
gfx::Size content_bounds( |
@@ -106,13 +106,14 @@ TEST(PictureLayerTilingSetTest, TilingRange) { |
FakeRasterSource::CreateFilled(layer_bounds); |
std::unique_ptr<TestablePictureLayerTilingSet> set = CreateTilingSet(&client); |
- set->AddTiling(2.0, raster_source); |
- high_res_tiling = set->AddTiling(1.0, raster_source); |
+ set->AddTiling(gfx::AxisTransform2d(2.0, gfx::Vector2dF()), raster_source); |
+ high_res_tiling = set->AddTiling(gfx::AxisTransform2d(), raster_source); |
high_res_tiling->set_resolution(HIGH_RESOLUTION); |
- set->AddTiling(0.5, raster_source); |
- low_res_tiling = set->AddTiling(0.25, raster_source); |
+ set->AddTiling(gfx::AxisTransform2d(0.5, gfx::Vector2dF()), raster_source); |
+ low_res_tiling = set->AddTiling(gfx::AxisTransform2d(0.25, gfx::Vector2dF()), |
+ raster_source); |
low_res_tiling->set_resolution(LOW_RESOLUTION); |
- set->AddTiling(0.125, raster_source); |
+ set->AddTiling(gfx::AxisTransform2d(0.125, gfx::Vector2dF()), raster_source); |
higher_than_high_res_range = |
set->GetTilingRange(PictureLayerTilingSet::HIGHER_THAN_HIGH_RES); |
@@ -139,11 +140,15 @@ TEST(PictureLayerTilingSetTest, TilingRange) { |
std::unique_ptr<TestablePictureLayerTilingSet> set_without_low_res = |
CreateTilingSet(&client); |
- set_without_low_res->AddTiling(2.0, raster_source); |
- high_res_tiling = set_without_low_res->AddTiling(1.0, raster_source); |
+ set_without_low_res->AddTiling(gfx::AxisTransform2d(2.0, gfx::Vector2dF()), |
+ raster_source); |
+ high_res_tiling = |
+ set_without_low_res->AddTiling(gfx::AxisTransform2d(), raster_source); |
high_res_tiling->set_resolution(HIGH_RESOLUTION); |
- set_without_low_res->AddTiling(0.5, raster_source); |
- set_without_low_res->AddTiling(0.25, raster_source); |
+ set_without_low_res->AddTiling(gfx::AxisTransform2d(0.5, gfx::Vector2dF()), |
+ raster_source); |
+ set_without_low_res->AddTiling(gfx::AxisTransform2d(0.25, gfx::Vector2dF()), |
+ raster_source); |
higher_than_high_res_range = set_without_low_res->GetTilingRange( |
PictureLayerTilingSet::HIGHER_THAN_HIGH_RES); |
@@ -170,11 +175,11 @@ TEST(PictureLayerTilingSetTest, TilingRange) { |
std::unique_ptr<TestablePictureLayerTilingSet> |
set_with_only_high_and_low_res = CreateTilingSet(&client); |
- high_res_tiling = |
- set_with_only_high_and_low_res->AddTiling(1.0, raster_source); |
+ high_res_tiling = set_with_only_high_and_low_res->AddTiling( |
+ gfx::AxisTransform2d(), raster_source); |
high_res_tiling->set_resolution(HIGH_RESOLUTION); |
- low_res_tiling = |
- set_with_only_high_and_low_res->AddTiling(0.5, raster_source); |
+ low_res_tiling = set_with_only_high_and_low_res->AddTiling( |
+ gfx::AxisTransform2d(0.5, gfx::Vector2dF()), raster_source); |
low_res_tiling->set_resolution(LOW_RESOLUTION); |
higher_than_high_res_range = set_with_only_high_and_low_res->GetTilingRange( |
@@ -204,7 +209,8 @@ TEST(PictureLayerTilingSetTest, TilingRange) { |
std::unique_ptr<TestablePictureLayerTilingSet> set_with_only_high_res = |
CreateTilingSet(&client); |
- high_res_tiling = set_with_only_high_res->AddTiling(1.0, raster_source); |
+ high_res_tiling = |
+ set_with_only_high_res->AddTiling(gfx::AxisTransform2d(), raster_source); |
high_res_tiling->set_resolution(HIGH_RESOLUTION); |
higher_than_high_res_range = set_with_only_high_res->GetTilingRange( |
@@ -256,7 +262,8 @@ class PictureLayerTilingSetTestWithResources : public testing::Test { |
float scale = min_scale; |
for (int i = 0; i < num_tilings; ++i, scale += scale_increment) { |
- PictureLayerTiling* tiling = set->AddTiling(scale, raster_source); |
+ PictureLayerTiling* tiling = set->AddTiling( |
+ gfx::AxisTransform2d(scale, gfx::Vector2dF()), raster_source); |
tiling->set_resolution(HIGH_RESOLUTION); |
tiling->CreateAllTilesForTesting(); |
std::vector<Tile*> tiles = tiling->AllTilesForTesting(); |
@@ -277,7 +284,7 @@ class PictureLayerTilingSetTestWithResources : public testing::Test { |
ASSERT_TRUE(remaining.Contains(geometry_rect)); |
remaining.Subtract(geometry_rect); |
- float scale = iter.CurrentTiling()->contents_scale(); |
+ float scale = iter.CurrentTiling()->contents_scale_key(); |
EXPECT_EQ(expected_scale, scale); |
if (num_tilings) |
@@ -341,7 +348,7 @@ TEST(PictureLayerTilingSetTest, TileSizeChange) { |
gfx::Size tile_size3(20, 20); |
pending_client.SetTileSize(tile_size1); |
- pending_set->AddTiling(1.f, raster_source); |
+ pending_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
// New tilings get the correct tile size. |
EXPECT_EQ(tile_size1, pending_set->tiling_at(0)->tile_size()); |
@@ -366,7 +373,7 @@ TEST(PictureLayerTilingSetTest, TileSizeChange) { |
// activation, since we can't set the raster source twice on the pending tree |
// without activating. For test, just remove and add a new tiling instead. |
pending_set->RemoveAllTilings(); |
- pending_set->AddTiling(1.f, raster_source); |
+ pending_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); |
pending_client.SetTileSize(tile_size2); |
pending_set->UpdateTilingsToCurrentRasterSourceForCommit(raster_source.get(), |
@@ -446,9 +453,11 @@ TEST(PictureLayerTilingSetTest, MaxContentScale) { |
FakeRasterSource::CreateEmpty(layer_bounds); |
// Tilings can be added of any scale, the tiling client can controls this. |
- pending_set->AddTiling(1.f, raster_source); |
- pending_set->AddTiling(2.f, raster_source); |
- pending_set->AddTiling(3.f, raster_source); |
+ pending_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
+ pending_set->AddTiling(gfx::AxisTransform2d(2.f, gfx::Vector2dF()), |
+ raster_source); |
+ pending_set->AddTiling(gfx::AxisTransform2d(3.f, gfx::Vector2dF()), |
+ raster_source); |
// Set some expected things for the tiling set to function. |
pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); |
@@ -503,7 +512,7 @@ TEST(PictureLayerTilingSetTest, SkewportLimits) { |
CreateTilingSetWithSettings(&client, settings); |
EXPECT_FALSE(tiling_set->TilingsNeedUpdate(viewport, 1.0)); |
- tiling_set->AddTiling(1.f, raster_source); |
+ tiling_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
EXPECT_TRUE(tiling_set->TilingsNeedUpdate(viewport, 1.0)); |
tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); |
@@ -589,7 +598,7 @@ TEST(PictureLayerTilingSetTest, ComputeSkewportExtremeCases) { |
FakeRasterSource::CreateFilled(layer_bounds); |
std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
CreateTilingSetWithSettings(&client, settings); |
- tiling_set->AddTiling(1.f, raster_source); |
+ tiling_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
gfx::Rect viewport1(-1918, 255860, 4010, 2356); |
gfx::Rect viewport2(-7088, -91738, 14212, 8350); |
@@ -606,7 +615,8 @@ TEST(PictureLayerTilingSetTest, ComputeSkewportExtremeCases) { |
// Use a tiling with a large scale, so the viewport times the scale no longer |
// fits into integers, and the viewport is not anywhere close to the tiling. |
- PictureLayerTiling* tiling = tiling_set->AddTiling(1000.f, raster_source); |
+ PictureLayerTiling* tiling = tiling_set->AddTiling( |
+ gfx::AxisTransform2d(1000.f, gfx::Vector2dF()), raster_source); |
EXPECT_TRUE(tiling_set->TilingsNeedUpdate(viewport3, time)); |
tiling_set->UpdateTilePriorities(viewport3, 1.f, time, Occlusion(), true); |
EXPECT_TRUE(tiling->GetCurrentVisibleRectForTesting().IsEmpty()); |
@@ -624,7 +634,7 @@ TEST(PictureLayerTilingSetTest, ComputeSkewport) { |
FakeRasterSource::CreateFilled(layer_bounds); |
std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
CreateTilingSet(&client); |
- tiling_set->AddTiling(1.f, raster_source); |
+ tiling_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); |
@@ -686,7 +696,7 @@ TEST(PictureLayerTilingSetTest, SkewportThroughUpdateTilePriorities) { |
FakeRasterSource::CreateFilled(layer_bounds); |
std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
CreateTilingSet(&client); |
- tiling_set->AddTiling(1.f, raster_source); |
+ tiling_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); |
@@ -760,7 +770,8 @@ TEST(PictureLayerTilingTest, ViewportDistanceWithScale) { |
FakeRasterSource::CreateFilled(layer_bounds); |
std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
CreateTilingSet(&client); |
- auto* tiling = tiling_set->AddTiling(0.25f, raster_source); |
+ auto* tiling = tiling_set->AddTiling( |
+ gfx::AxisTransform2d(0.25f, gfx::Vector2dF()), raster_source); |
tiling->set_resolution(HIGH_RESOLUTION); |
gfx::Rect viewport_in_content_space = |
gfx::ScaleToEnclosedRect(viewport, 0.25f); |
@@ -921,7 +932,8 @@ TEST(PictureLayerTilingTest, ViewportDistanceWithScale) { |
EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); |
// Test additional scales. |
- tiling = tiling_set->AddTiling(0.2f, raster_source); |
+ tiling = tiling_set->AddTiling(gfx::AxisTransform2d(0.2f, gfx::Vector2dF()), |
+ raster_source); |
tiling->set_resolution(HIGH_RESOLUTION); |
tiling_set->UpdateTilePriorities(viewport, 1.0f, 4.0, Occlusion(), true); |
prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting(); |
@@ -956,7 +968,8 @@ TEST(PictureLayerTilingTest, InvalidateAfterComputeTilePriorityRects) { |
FakeRasterSource::CreateFilled(gfx::Size(100, 100)); |
std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
CreateTilingSet(&pending_client); |
- auto* pending_tiling = tiling_set->AddTiling(1.f, raster_source); |
+ auto* pending_tiling = |
+ tiling_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
pending_tiling->set_resolution(HIGH_RESOLUTION); |
// Ensure that we can compute tile priority rects, invalidate, and compute the |
@@ -999,7 +1012,8 @@ TEST(PictureLayerTilingTest, InvalidateAfterUpdateRasterSourceForCommit) { |
scoped_refptr<FakeRasterSource> raster_source = |
FakeRasterSource::CreateFilled(layer_bounds); |
- auto* pending_tiling = pending_set->AddTiling(1.f, raster_source); |
+ auto* pending_tiling = |
+ pending_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
pending_tiling->set_resolution(HIGH_RESOLUTION); |
active_client.set_twin_tiling_set(pending_set.get()); |
@@ -1038,5 +1052,64 @@ TEST(PictureLayerTilingTest, InvalidateAfterUpdateRasterSourceForCommit) { |
active_set->UpdateTilePriorities(viewport, 1.f, time, Occlusion(), true)); |
} |
+TEST(PictureLayerTilingSetTest, TilingTranslationChanges) { |
+ gfx::Size tile_size(64, 64); |
+ FakePictureLayerTilingClient pending_client; |
+ FakePictureLayerTilingClient active_client; |
+ pending_client.SetTileSize(tile_size); |
+ active_client.SetTileSize(tile_size); |
+ std::unique_ptr<PictureLayerTilingSet> pending_set = |
+ PictureLayerTilingSet::Create(PENDING_TREE, &pending_client, 0, 1.f, 0, |
+ 0.f); |
+ std::unique_ptr<PictureLayerTilingSet> active_set = |
+ PictureLayerTilingSet::Create(ACTIVE_TREE, &active_client, 0, 1.f, 0, |
+ 0.f); |
+ active_client.set_twin_tiling_set(pending_set.get()); |
+ |
+ gfx::Size layer_bounds(100, 100); |
+ scoped_refptr<FakeRasterSource> raster_source = |
+ FakeRasterSource::CreateFilled(layer_bounds); |
+ |
+ gfx::AxisTransform2d raster_transform1(1.f, gfx::Vector2dF(0.25f, 0.25f)); |
+ pending_set->AddTiling(raster_transform1, raster_source); |
+ pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); |
+ |
+ // Set a priority rect so we get tiles. |
+ pending_set->UpdateTilePriorities(gfx::Rect(layer_bounds), 1.f, 1.0, |
+ Occlusion(), false); |
+ |
+ // Make sure all tiles are generated. |
+ EXPECT_EQ(4u, pending_set->tiling_at(0)->AllTilesForTesting().size()); |
+ |
+ // Clone from the pending to the active tree. |
+ active_set->UpdateTilingsToCurrentRasterSourceForActivation( |
+ raster_source.get(), pending_set.get(), Region(), 1.f, 1.f); |
+ |
+ // Verifies active tree cloned the tiling correctly. |
+ ASSERT_EQ(1u, active_set->num_tilings()); |
+ EXPECT_EQ(active_set->tiling_at(0)->raster_transform(), raster_transform1); |
+ EXPECT_EQ(4u, active_set->tiling_at(0)->AllTilesForTesting().size()); |
+ |
+ // Change raster translation on the pending set. |
+ gfx::AxisTransform2d raster_transform2(1.f, gfx::Vector2dF(0.75f, 0.75f)); |
+ pending_set->RemoveAllTilings(); |
+ pending_set->AddTiling(raster_transform2, raster_source); |
+ pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); |
+ |
+ // Set a different priority rect to get one tile. |
+ pending_set->UpdateTilePriorities(gfx::Rect(1, 1), 1.f, 1.0, Occlusion(), |
+ false); |
+ EXPECT_EQ(1u, pending_set->tiling_at(0)->AllTilesForTesting().size()); |
+ |
+ // Commit the pending to the active tree again. |
+ active_set->UpdateTilingsToCurrentRasterSourceForActivation( |
+ raster_source.get(), pending_set.get(), Region(), 1.f, 1.f); |
+ |
+ // Verifies the old tiling with a different translation is dropped. |
+ ASSERT_EQ(1u, active_set->num_tilings()); |
+ EXPECT_EQ(active_set->tiling_at(0)->raster_transform(), raster_transform2); |
+ EXPECT_EQ(1u, active_set->tiling_at(0)->AllTilesForTesting().size()); |
+} |
+ |
} // namespace |
} // namespace cc |