Index: cc/output/filter_operations_unittest.cc |
diff --git a/cc/output/filter_operations_unittest.cc b/cc/output/filter_operations_unittest.cc |
index dbf3736ccb0b62b7d986b2336dc4c0665e9ac281..e975ed509f0c9854ba889b5d135ea1203b932ec4 100644 |
--- a/cc/output/filter_operations_unittest.cc |
+++ b/cc/output/filter_operations_unittest.cc |
@@ -3,7 +3,9 @@ |
// found in the LICENSE file. |
#include "cc/output/filter_operations.h" |
+#include "skia/ext/refptr.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "third_party/skia/include/effects/SkBlurImageFilter.h" |
#include "ui/gfx/point.h" |
namespace cc { |
@@ -497,6 +499,45 @@ TEST(FilterOperationsTest, BlendSaturatingBrightnessWithNull) { |
EXPECT_EQ(expected, blended); |
} |
+TEST(FilterOperationsTest, BlendReferenceFilters) { |
+ skia::RefPtr<SkImageFilter> from_filter = skia::AdoptRef( |
+ new SkBlurImageFilter(1.f, 1.f)); |
+ skia::RefPtr<SkImageFilter> to_filter = skia::AdoptRef( |
+ new SkBlurImageFilter(2.f, 2.f)); |
+ FilterOperation from = FilterOperation::CreateReferenceFilter(from_filter); |
+ FilterOperation to = FilterOperation::CreateReferenceFilter(to_filter); |
+ |
+ FilterOperation blended = FilterOperation::Blend(&from, &to, -0.75); |
+ EXPECT_EQ(from, blended); |
+ |
+ blended = FilterOperation::Blend(&from, &to, 0.5); |
+ EXPECT_EQ(from, blended); |
+ |
+ blended = FilterOperation::Blend(&from, &to, 0.6); |
+ EXPECT_EQ(to, blended); |
+ |
+ blended = FilterOperation::Blend(&from, &to, 1.5); |
+ EXPECT_EQ(to, blended); |
+} |
+ |
+TEST(FilterOperationsTest, BlendReferenceWithNull) { |
+ skia::RefPtr<SkImageFilter> image_filter = skia::AdoptRef( |
+ new SkBlurImageFilter(1.f, 1.f)); |
+ FilterOperation filter = FilterOperation::CreateReferenceFilter(image_filter); |
+ FilterOperation null_filter = |
+ FilterOperation::CreateReferenceFilter(skia::RefPtr<SkImageFilter>()); |
+ |
+ FilterOperation blended = FilterOperation::Blend(&filter, NULL, 0.25); |
+ EXPECT_EQ(filter, blended); |
+ blended = FilterOperation::Blend(&filter, NULL, 0.75); |
+ EXPECT_EQ(null_filter, blended); |
+ |
+ blended = FilterOperation::Blend(NULL, &filter, 0.25); |
+ EXPECT_EQ(null_filter, blended); |
+ blended = FilterOperation::Blend(NULL, &filter, 0.75); |
+ EXPECT_EQ(filter, blended); |
+} |
+ |
// Tests blending non-empty sequences that have the same length and matching |
// operations. |
TEST(FilterOperationsTest, BlendMatchingSequences) { |