Index: cc/layers/picture_layer_impl_unittest.cc |
diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc |
index 758527a13037932aad700dc96c034cbee9390ca3..346e868e6f5b4f78868e7942ea1121f1fe346d02 100644 |
--- a/cc/layers/picture_layer_impl_unittest.cc |
+++ b/cc/layers/picture_layer_impl_unittest.cc |
@@ -4944,5 +4944,67 @@ TEST_F(PictureLayerImplTest, CompositedImageIgnoreIdealContentsScale) { |
EXPECT_EQ(0, data.num_incomplete_tiles); |
} |
+TEST_F(PictureLayerImplTest, CompositedImageRasterScaleChanges) { |
+ gfx::Size layer_bounds(400, 400); |
+ scoped_refptr<FakeRasterSource> pending_raster_source = |
+ FakeRasterSource::CreateFilled(layer_bounds); |
+ |
+ host_impl()->CreatePendingTree(); |
+ LayerTreeImpl* pending_tree = host_impl()->pending_tree(); |
+ |
+ std::unique_ptr<FakePictureLayerImpl> pending_layer = |
+ FakePictureLayerImpl::CreateWithRasterSource(pending_tree, layer_id(), |
+ pending_raster_source); |
+ pending_layer->set_is_directly_composited_image(true); |
+ pending_layer->SetDrawsContent(true); |
+ FakePictureLayerImpl* pending_layer_ptr = pending_layer.get(); |
+ pending_tree->SetRootLayer(std::move(pending_layer)); |
+ pending_tree->BuildLayerListAndPropertyTreesForTesting(); |
+ |
+ float expected_contents_scale = 0.25f; |
+ for (int i = 1; i < 30; ++i) { |
+ float ideal_contents_scale = 0.1f * i - 1e-6; |
+ switch (i) { |
+ // Scale 0.3. |
+ case 3: |
+ expected_contents_scale = 0.5f; |
+ break; |
+ // Scale 0.6. |
+ case 6: |
+ expected_contents_scale = 1.f; |
+ break; |
+ } |
+ SetupDrawPropertiesAndUpdateTiles(pending_layer_ptr, ideal_contents_scale, |
+ 1.f, 1.f, 1.f, 1.f, false); |
+ EXPECT_FLOAT_EQ(expected_contents_scale, |
+ pending_layer_ptr->picture_layer_tiling_set() |
+ ->FindTilingWithResolution(HIGH_RESOLUTION) |
+ ->contents_scale()) |
+ << "ideal_contents_scale: " << ideal_contents_scale; |
+ } |
+ |
+ expected_contents_scale = 1.f; |
+ for (int i = 30; i >= 1; --i) { |
+ float ideal_contents_scale = 0.1f * i - 1e-6; |
+ switch (i) { |
+ // Scale 0.2. |
+ case 2: |
+ expected_contents_scale = 0.5f; |
+ break; |
+ // Scale 0.1. |
+ case 1: |
+ expected_contents_scale = 0.25f; |
+ break; |
+ } |
+ SetupDrawPropertiesAndUpdateTiles(pending_layer_ptr, ideal_contents_scale, |
+ 1.f, 1.f, 1.f, 1.f, false); |
+ EXPECT_FLOAT_EQ(expected_contents_scale, |
+ pending_layer_ptr->picture_layer_tiling_set() |
+ ->FindTilingWithResolution(HIGH_RESOLUTION) |
+ ->contents_scale()) |
+ << "ideal_contents_scale: " << ideal_contents_scale; |
+ } |
+} |
+ |
} // namespace |
} // namespace cc |