| Index: cc/trees/layer_tree_host_pixeltest_filters.cc
 | 
| diff --git a/cc/trees/layer_tree_host_pixeltest_filters.cc b/cc/trees/layer_tree_host_pixeltest_filters.cc
 | 
| index dc8cc4a9a0db89a8038e10d8cf59ca4208f322b2..bf8e3e2123867ac34c7684c5b1f6898cfd78909b 100644
 | 
| --- a/cc/trees/layer_tree_host_pixeltest_filters.cc
 | 
| +++ b/cc/trees/layer_tree_host_pixeltest_filters.cc
 | 
| @@ -283,7 +283,7 @@ TEST_F(LayerTreeHostFiltersPixelTest, ImageFilterScaled_GL) {
 | 
|  
 | 
|    gfx::Rect rect(50, 50, 100, 100);
 | 
|  
 | 
| -  static const int kInset = 3;
 | 
| +  const int kInset = 3;
 | 
|    for (int i = 0; !rect.IsEmpty(); ++i) {
 | 
|      scoped_refptr<SolidColorLayer> layer =
 | 
|          CreateSolidColorLayer(rect, (i & 1) ? SK_ColorWHITE : SK_ColorRED);
 | 
| @@ -334,6 +334,67 @@ TEST_F(LayerTreeHostFiltersPixelTest, ImageFilterScaled_GL) {
 | 
|                 base::FilePath(FILE_PATH_LITERAL("filter_on_scaled_layer.png")));
 | 
|  }
 | 
|  
 | 
| +class ImageScaledRenderSurface : public LayerTreeHostFiltersPixelTest {
 | 
| + protected:
 | 
| +  void RunPixelTestType(PixelTestType test_type, base::FilePath image_name) {
 | 
| +    // A filter will cause a render surface to be used.  Here we force the
 | 
| +    // render surface on, and scale the result to make sure that we rasterize at
 | 
| +    // the correct resolution.
 | 
| +    scoped_refptr<SolidColorLayer> background =
 | 
| +        CreateSolidColorLayer(gfx::Rect(300, 300), SK_ColorBLUE);
 | 
| +
 | 
| +    scoped_refptr<SolidColorLayer> render_surface_layer =
 | 
| +        CreateSolidColorLayer(gfx::Rect(0, 0, 200, 200), SK_ColorWHITE);
 | 
| +
 | 
| +    gfx::Rect rect(50, 50, 100, 100);
 | 
| +
 | 
| +    scoped_refptr<SolidColorLayer> child =
 | 
| +        CreateSolidColorLayer(rect, SK_ColorRED);
 | 
| +
 | 
| +    gfx::Transform transform;
 | 
| +    transform.Translate(rect.width() / 2.0, rect.height() / 2.0);
 | 
| +    transform.RotateAboutZAxis(30.0);
 | 
| +    transform.Translate(-rect.width() / 2.0, -rect.height() / 2.0);
 | 
| +    child->SetTransform(transform);
 | 
| +
 | 
| +    render_surface_layer->AddChild(child);
 | 
| +
 | 
| +    gfx::Transform render_surface_transform;
 | 
| +    render_surface_transform.Scale(1.5f, 1.5f);
 | 
| +    render_surface_layer->SetTransform(render_surface_transform);
 | 
| +    render_surface_layer->SetForceRenderSurface(true);
 | 
| +
 | 
| +    background->AddChild(render_surface_layer);
 | 
| +
 | 
| +    // Software has some huge differences in the AA'd pixels on the different
 | 
| +    // trybots. See crbug.com/452198.
 | 
| +    float percentage_pixels_large_error = 0.686f;
 | 
| +    float percentage_pixels_small_error = 0.0f;
 | 
| +    float average_error_allowed_in_bad_pixels = 16.f;
 | 
| +    int large_error_allowed = 17;
 | 
| +    int small_error_allowed = 0;
 | 
| +    pixel_comparator_.reset(new FuzzyPixelComparator(
 | 
| +        true,  // discard_alpha
 | 
| +        percentage_pixels_large_error, percentage_pixels_small_error,
 | 
| +        average_error_allowed_in_bad_pixels, large_error_allowed,
 | 
| +        small_error_allowed));
 | 
| +
 | 
| +    RunPixelTest(test_type, background, image_name);
 | 
| +  }
 | 
| +};
 | 
| +
 | 
| +TEST_F(ImageScaledRenderSurface, ImageRenderSurfaceScaled_GL) {
 | 
| +  RunPixelTestType(
 | 
| +      PIXEL_TEST_GL,
 | 
| +      base::FilePath(FILE_PATH_LITERAL("scaled_render_surface_layer_gl.png")));
 | 
| +}
 | 
| +
 | 
| +TEST_F(ImageScaledRenderSurface, ImageRenderSurfaceScaled_Software) {
 | 
| +  RunPixelTestType(
 | 
| +      PIXEL_TEST_SOFTWARE,
 | 
| +      base::FilePath(FILE_PATH_LITERAL("scaled_render_surface_layer_sw.png")));
 | 
| +}
 | 
| +
 | 
|  }  // namespace
 | 
|  }  // namespace cc
 | 
|  
 | 
| 
 |