| 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 | 
|  |