Chromium Code Reviews| Index: cc/trees/layer_tree_host_pixeltest_masks.cc |
| diff --git a/cc/trees/layer_tree_host_pixeltest_masks.cc b/cc/trees/layer_tree_host_pixeltest_masks.cc |
| index 1c28c7fa862d8f9cbfbdd968d475e483c3580f64..d90ee78761a25909fd419755200765a7281bba24 100644 |
| --- a/cc/trees/layer_tree_host_pixeltest_masks.cc |
| +++ b/cc/trees/layer_tree_host_pixeltest_masks.cc |
| @@ -13,6 +13,7 @@ |
| #include "cc/paint/paint_flags.h" |
| #include "cc/paint/paint_image.h" |
| #include "cc/paint/paint_recorder.h" |
| +#include "cc/test/fake_picture_layer.h" |
| #include "cc/test/layer_tree_pixel_resource_test.h" |
| #include "cc/test/pixel_comparator.h" |
| #include "cc/test/solid_color_content_layer_client.h" |
| @@ -149,6 +150,67 @@ TEST_P(LayerTreeHostMasksPixelTest, MaskOfClippedLayer) { |
| base::FilePath(FILE_PATH_LITERAL("mask_of_clipped_layer.png"))); |
| } |
| +TEST_P(LayerTreeHostMasksPixelTest, MaskOfLargerLayer) { |
| + scoped_refptr<SolidColorLayer> background = |
| + CreateSolidColorLayer(gfx::Rect(100, 100), SK_ColorWHITE); |
| + |
| + scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( |
| + gfx::Rect(0, 0, 100, 100), kCSSGreen, 1, SK_ColorBLACK); |
| + background->AddChild(green); |
| + |
| + gfx::Size mask_bounds(50, 50); |
| + MaskContentLayerClient client(mask_bounds); |
| + scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client); |
| + mask->SetBounds(mask_bounds); |
| + mask->SetIsDrawable(true); |
| + mask->SetLayerMaskType(mask_type_); |
| + green->SetMaskLayer(mask.get()); |
| + |
| + if (raster_buffer_provider_type_ == RASTER_BUFFER_PROVIDER_TYPE_BITMAP) { |
| + // Bitmap produces a sharper (but equivalent sized) mask. |
| + float percentage_pixels_large_error = 40.0f; |
| + float percentage_pixels_small_error = 0.0f; |
| + float average_error_allowed_in_bad_pixels = 65.0f; |
| + int large_error_allowed = 120; |
| + 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)); |
| + } |
| + |
| + RunPixelResourceTest( |
| + background, |
| + base::FilePath(FILE_PATH_LITERAL("mask_of_larger_layer.png"))); |
| +} |
| + |
| +TEST_P(LayerTreeHostMasksPixelTest, MaskOfLayerNonExactTextureSize) { |
| + // This test only makes sense in single texture mode. |
| + if (mask_type_ != Layer::LayerMaskType::SINGLE_TEXTURE_MASK) |
| + return; |
| + |
| + scoped_refptr<SolidColorLayer> background = |
| + CreateSolidColorLayer(gfx::Rect(100, 100), SK_ColorWHITE); |
| + |
| + scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( |
| + gfx::Rect(0, 0, 100, 100), kCSSGreen, 1, SK_ColorBLACK); |
| + background->AddChild(green); |
| + |
| + gfx::Size mask_bounds(100, 100); |
| + MaskContentLayerClient client(mask_bounds); |
| + scoped_refptr<FakePictureLayer> mask = FakePictureLayer::Create(&client); |
| + mask->SetBounds(mask_bounds); |
| + mask->SetIsDrawable(true); |
| + mask->SetLayerMaskType(Layer::LayerMaskType::SINGLE_TEXTURE_MASK); |
|
sunxd
2017/05/04 19:43:49
Nit: Could you also change this to mask_type_? Tha
ericrk
2017/05/04 19:51:38
I don't think this test makes sense for tiled mask
ericrk
2017/05/04 19:55:06
I guess it can't hurt though... ok, added
|
| + mask->set_fixed_tile_size(gfx::Size(173, 135)); |
| + green->SetMaskLayer(mask.get()); |
| + |
| + RunPixelResourceTest(background, |
| + base::FilePath(FILE_PATH_LITERAL( |
| + "mask_with_non_exact_texture_size.png"))); |
| +} |
| + |
| class CheckerContentLayerClient : public ContentLayerClient { |
| public: |
| CheckerContentLayerClient(const gfx::Size& bounds, |