Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4597)

Unified Diff: cc/trees/layer_tree_host_pixeltest_filters.cc

Issue 2297213003: Fix CSS reference filters with negative transformed children. (Closed)
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/effect_node.cc ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 241ce6ff7341795afb13f3d8ea18a571807d0338..b617f2e50f2b645406366fa9a4b22e2a08e3cc9d 100644
--- a/cc/trees/layer_tree_host_pixeltest_filters.cc
+++ b/cc/trees/layer_tree_host_pixeltest_filters.cc
@@ -329,6 +329,50 @@ TEST_F(ImageFilterClippedPixelTest, ImageFilterClipped_Software) {
RunPixelTestType(PIXEL_TEST_SOFTWARE);
}
+class ImageFilterNonZeroOriginPixelTest : public LayerTreeHostFiltersPixelTest {
+ protected:
+ void RunPixelTestType(PixelTestType test_type) {
+ scoped_refptr<SolidColorLayer> background =
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorYELLOW);
+
+ scoped_refptr<SolidColorLayer> foreground =
+ CreateSolidColorLayer(gfx::Rect(200, 200), SK_ColorRED);
+ background->AddChild(foreground);
+
+ SkScalar matrix[20];
+ memset(matrix, 0, 20 * sizeof(matrix[0]));
+ // This filter does a red-blue swap, so the foreground becomes blue.
+ matrix[2] = matrix[6] = matrix[10] = matrix[18] = SK_Scalar1;
+ // Set up a crop rec to filter the bottom 200x100 pixels of the foreground.
+ SkImageFilter::CropRect crop_rect(SkRect::MakeXYWH(0, 100, 200, 100));
+ FilterOperations filters;
+ filters.Append(
+ FilterOperation::CreateReferenceFilter(SkColorFilterImageFilter::Make(
+ SkColorFilter::MakeMatrixFilterRowMajor255(matrix), nullptr,
+ &crop_rect)));
+
+ // Make the foreground layer's render surface be clipped by the background
+ // layer.
+ background->SetMasksToBounds(true);
+ foreground->SetFilters(filters);
+
+ // Now move the filters origin up by 100 pixels, so the crop rect is
+ // applied only to the top 100 pixels, not the bottom.
+ foreground->SetFiltersOrigin(gfx::PointF(0.0f, -100.0f));
+
+ RunPixelTest(test_type, background,
+ base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")));
+ }
+};
+
+TEST_F(ImageFilterNonZeroOriginPixelTest, ImageFilterNonZeroOrigin_GL) {
+ RunPixelTestType(PIXEL_TEST_GL);
+}
+
+TEST_F(ImageFilterNonZeroOriginPixelTest, ImageFilterNonZeroOrigin_Software) {
+ RunPixelTestType(PIXEL_TEST_SOFTWARE);
+}
+
class ImageScaledBackgroundFilter : public LayerTreeHostFiltersPixelTest {
protected:
void RunPixelTestType(PixelTestType test_type, base::FilePath image_name) {
« no previous file with comments | « cc/trees/effect_node.cc ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698