Revert of change all factories to return their base-class (patchset #1 id:1 of https://codereview.chromium.org/1535353002/ )

Reason for revert:
need to update some chrome/blink call-sites

Original issue's description:
> change all factories to return their base-class
>
> will watch DEPS roll to see if there are chrome sites needing updates
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1535353002
>
> TBR=
>
> Committed: https://skia.googlesource.com/skia/+/d63f60a36327e9580861205ebb35cade8c49bd34

TBR=
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1540203002
diff --git a/bench/MatrixConvolutionBench.cpp b/bench/MatrixConvolutionBench.cpp
index 05f0193..6302f12 100644
--- a/bench/MatrixConvolutionBench.cpp
+++ b/bench/MatrixConvolutionBench.cpp
@@ -50,7 +50,7 @@
 
 private:
     typedef Benchmark INHERITED;
-    SkImageFilter* fFilter;
+    SkMatrixConvolutionImageFilter* fFilter;
     SkString fName;
 };
 
diff --git a/gm/circles.cpp b/gm/circles.cpp
index 369548c..a178ba9 100644
--- a/gm/circles.cpp
+++ b/gm/circles.cpp
@@ -81,7 +81,7 @@
         // AA with blur
         SkPaint p;
         p.setAntiAlias(true);
-        SkDrawLooper* shadowLooper =
+        SkBlurDrawLooper* shadowLooper =
             SkBlurDrawLooper::Create(SK_ColorBLUE,
                                      SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
                                      SkIntToScalar(5), SkIntToScalar(10),
diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp
index 14752db..e27a523 100644
--- a/gm/imagefiltersgraph.cpp
+++ b/gm/imagefiltersgraph.cpp
@@ -153,13 +153,13 @@
                                     0, SK_Scalar1, 0, 0, 0,
                                     0, 0, SK_Scalar1, 0, 0,
                                     0, 0, 0, 0.5f, 0 };
-            SkAutoTUnref<SkColorFilter> matrixCF(SkColorMatrixFilter::Create(matrix));
+            SkAutoTUnref<SkColorMatrixFilter> matrixCF(SkColorMatrixFilter::Create(matrix));
             SkAutoTUnref<SkImageFilter> matrixFilter(SkColorFilterImageFilter::Create(matrixCF));
             SkAutoTUnref<SkImageFilter> offsetFilter(
                 SimpleOffsetFilter::Create(10.0f, 10.f, matrixFilter));
 
             SkAutoTUnref<SkXfermode> arith(SkArithmeticMode::Create(0, SK_Scalar1, SK_Scalar1, 0));
-            SkAutoTUnref<SkImageFilter> arithFilter(
+            SkAutoTUnref<SkXfermodeImageFilter> arithFilter(
                 SkXfermodeImageFilter::Create(arith, matrixFilter, offsetFilter));
 
             SkPaint paint;
diff --git a/gm/rects.cpp b/gm/rects.cpp
index 38108fe..c4d5880 100644
--- a/gm/rects.cpp
+++ b/gm/rects.cpp
@@ -95,7 +95,7 @@
             SkPaint p;
             p.setColor(SK_ColorWHITE);
             p.setAntiAlias(true);
-            SkDrawLooper* shadowLooper =
+            SkBlurDrawLooper* shadowLooper =
                 SkBlurDrawLooper::Create(SK_ColorWHITE,
                                          SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
                                          SkIntToScalar(5), SkIntToScalar(10),
diff --git a/gm/shadows.cpp b/gm/shadows.cpp
index bb2bf3c..f4034a4 100644
--- a/gm/shadows.cpp
+++ b/gm/shadows.cpp
@@ -54,7 +54,7 @@
     }
 
     void onDraw(SkCanvas* canvas) override {
-        SkDrawLooper* shadowLoopers[5];
+        SkBlurDrawLooper* shadowLoopers[5];
         shadowLoopers[0] =
             SkBlurDrawLooper::Create(SK_ColorBLUE,
                                      SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
diff --git a/include/effects/Sk1DPathEffect.h b/include/effects/Sk1DPathEffect.h
index 3419dc2..6a7804f 100644
--- a/include/effects/Sk1DPathEffect.h
+++ b/include/effects/Sk1DPathEffect.h
@@ -56,7 +56,8 @@
         @param style how to transform path at each point (based on the current
                      position and tangent)
     */
-    static SkPathEffect* Create(const SkPath& path, SkScalar advance, SkScalar phase, Style style) {
+    static SkPath1DPathEffect* Create(const SkPath& path, SkScalar advance, SkScalar phase,
+                                      Style style) {
         return new SkPath1DPathEffect(path, advance, phase, style);
     }
 
diff --git a/include/effects/Sk2DPathEffect.h b/include/effects/Sk2DPathEffect.h
index 73da83c..fa12dcf 100644
--- a/include/effects/Sk2DPathEffect.h
+++ b/include/effects/Sk2DPathEffect.h
@@ -55,7 +55,7 @@
 
 class SK_API SkLine2DPathEffect : public Sk2DPathEffect {
 public:
-    static SkPathEffect* Create(SkScalar width, const SkMatrix& matrix) {
+    static SkLine2DPathEffect* Create(SkScalar width, const SkMatrix& matrix) {
         return new SkLine2DPathEffect(width, matrix);
     }
 
@@ -84,7 +84,7 @@
      *  Stamp the specified path to fill the shape, using the matrix to define
      *  the latice.
      */
-    static SkPathEffect* Create(const SkMatrix& matrix, const SkPath& path) {
+    static SkPath2DPathEffect* Create(const SkMatrix& matrix, const SkPath& path) {
         return new SkPath2DPathEffect(matrix, path);
     }
 
diff --git a/include/effects/SkBlurDrawLooper.h b/include/effects/SkBlurDrawLooper.h
index 930af15..808557b 100644
--- a/include/effects/SkBlurDrawLooper.h
+++ b/include/effects/SkBlurDrawLooper.h
@@ -35,8 +35,8 @@
         kAll_BlurFlag               = 0x07
     };
 
-    static SkDrawLooper* Create(SkColor color, SkScalar sigma, SkScalar dx, SkScalar dy,
-                                uint32_t flags = kNone_BlurFlag) {
+    static SkBlurDrawLooper* Create(SkColor color, SkScalar sigma, SkScalar dx, SkScalar dy,
+                                    uint32_t flags = kNone_BlurFlag) {
         return new SkBlurDrawLooper(color, sigma, dx, dy, flags);
     }
 
diff --git a/include/effects/SkColorMatrixFilter.h b/include/effects/SkColorMatrixFilter.h
index 057e5cc..bd2b939 100644
--- a/include/effects/SkColorMatrixFilter.h
+++ b/include/effects/SkColorMatrixFilter.h
@@ -13,10 +13,10 @@
 
 class SK_API SkColorMatrixFilter : public SkColorFilter {
 public:
-    static SkColorFilter* Create(const SkColorMatrix& cm) {
+    static SkColorMatrixFilter* Create(const SkColorMatrix& cm) {
         return new SkColorMatrixFilter(cm);
     }
-    static SkColorFilter* Create(const SkScalar array[20]) {
+    static SkColorMatrixFilter* Create(const SkScalar array[20]) {
         return new SkColorMatrixFilter(array);
     }
 
diff --git a/include/effects/SkCornerPathEffect.h b/include/effects/SkCornerPathEffect.h
index 13095f0..4c89085 100644
--- a/include/effects/SkCornerPathEffect.h
+++ b/include/effects/SkCornerPathEffect.h
@@ -20,7 +20,8 @@
     /** radius must be > 0 to have an effect. It specifies the distance from each corner
         that should be "rounded".
     */
-    static SkPathEffect* Create(SkScalar radius) { return new SkCornerPathEffect(radius); }
+    static SkCornerPathEffect* Create(SkScalar radius) { return new SkCornerPathEffect(radius); }
+    virtual ~SkCornerPathEffect();
 
     virtual bool filterPath(SkPath* dst, const SkPath& src,
                             SkStrokeRec*, const SkRect*) const override;
@@ -33,8 +34,6 @@
 #endif
 
 protected:
-    virtual ~SkCornerPathEffect();
-
     explicit SkCornerPathEffect(SkScalar radius);
     void flatten(SkWriteBuffer&) const override;
 
diff --git a/include/effects/SkDashPathEffect.h b/include/effects/SkDashPathEffect.h
index 3c1407b..d3adeed 100644
--- a/include/effects/SkDashPathEffect.h
+++ b/include/effects/SkDashPathEffect.h
@@ -36,7 +36,8 @@
 
         Note: only affects stroked paths.
     */
-    static SkPathEffect* Create(const SkScalar intervals[], int count, SkScalar phase) {
+    static SkDashPathEffect* Create(const SkScalar intervals[], int count,
+                                    SkScalar phase) {
         return new SkDashPathEffect(intervals, count, phase);
     }
     virtual ~SkDashPathEffect();
diff --git a/include/effects/SkDiscretePathEffect.h b/include/effects/SkDiscretePathEffect.h
index a49e2d8..b55dca8 100644
--- a/include/effects/SkDiscretePathEffect.h
+++ b/include/effects/SkDiscretePathEffect.h
@@ -29,7 +29,9 @@
                           they can pass in a different seedAssist to get a
                           different set of path segments.
     */
-    static SkPathEffect* Create(SkScalar segLength, SkScalar deviation, uint32_t seedAssist = 0) {
+    static SkDiscretePathEffect* Create(SkScalar segLength,
+                                        SkScalar deviation,
+                                        uint32_t seedAssist=0) {
         return new SkDiscretePathEffect(segLength, deviation, seedAssist);
     }
 
diff --git a/include/effects/SkDisplacementMapEffect.h b/include/effects/SkDisplacementMapEffect.h
index e944617..253dabe 100644
--- a/include/effects/SkDisplacementMapEffect.h
+++ b/include/effects/SkDisplacementMapEffect.h
@@ -23,11 +23,11 @@
 
     ~SkDisplacementMapEffect();
 
-    static SkImageFilter* Create(ChannelSelectorType xChannelSelector,
-                                 ChannelSelectorType yChannelSelector,
-                                 SkScalar scale, SkImageFilter* displacement,
-                                 SkImageFilter* color = NULL,
-                                 const CropRect* cropRect = NULL);
+    static SkDisplacementMapEffect* Create(ChannelSelectorType xChannelSelector,
+                                           ChannelSelectorType yChannelSelector,
+                                           SkScalar scale, SkImageFilter* displacement,
+                                           SkImageFilter* color = NULL,
+                                           const CropRect* cropRect = NULL);
 
     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDisplacementMapEffect)
 
diff --git a/include/effects/SkEmbossMaskFilter.h b/include/effects/SkEmbossMaskFilter.h
index 72020bf..b6bd1a1 100644
--- a/include/effects/SkEmbossMaskFilter.h
+++ b/include/effects/SkEmbossMaskFilter.h
@@ -23,7 +23,7 @@
         uint8_t     fSpecular;      // exponent, 4.4 right now
     };
 
-    static SkMaskFilter* Create(SkScalar blurSigma, const Light& light);
+    static SkEmbossMaskFilter* Create(SkScalar blurSigma, const Light& light);
 
     // overrides from SkMaskFilter
     //  This method is not exported to java.
diff --git a/include/effects/SkMatrixConvolutionImageFilter.h b/include/effects/SkMatrixConvolutionImageFilter.h
index 7a2026c..09a3acf 100644
--- a/include/effects/SkMatrixConvolutionImageFilter.h
+++ b/include/effects/SkMatrixConvolutionImageFilter.h
@@ -52,15 +52,15 @@
                               passed to filterImage() is used instead.
         @param cropRect       The rectangle to which the output processing will be limited.
     */
-    static SkImageFilter* Create(const SkISize& kernelSize,
-                                 const SkScalar* kernel,
-                                 SkScalar gain,
-                                 SkScalar bias,
-                                 const SkIPoint& kernelOffset,
-                                 TileMode tileMode,
-                                 bool convolveAlpha,
-                                 SkImageFilter* input = NULL,
-                                 const CropRect* cropRect = NULL);
+    static SkMatrixConvolutionImageFilter* Create(const SkISize& kernelSize,
+                                                  const SkScalar* kernel,
+                                                  SkScalar gain,
+                                                  SkScalar bias,
+                                                  const SkIPoint& kernelOffset,
+                                                  TileMode tileMode,
+                                                  bool convolveAlpha,
+                                                  SkImageFilter* input = NULL,
+                                                  const CropRect* cropRect = NULL);
 
     SK_TO_STRING_OVERRIDE()
     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMatrixConvolutionImageFilter)
diff --git a/include/effects/SkXfermodeImageFilter.h b/include/effects/SkXfermodeImageFilter.h
index d59b7a2..57fd288 100644
--- a/include/effects/SkXfermodeImageFilter.h
+++ b/include/effects/SkXfermodeImageFilter.h
@@ -23,9 +23,9 @@
 public:
     virtual ~SkXfermodeImageFilter();
 
-    static SkImageFilter* Create(SkXfermode* mode, SkImageFilter* background,
-                                 SkImageFilter* foreground = NULL,
-                                 const CropRect* cropRect = NULL) {
+    static SkXfermodeImageFilter* Create(SkXfermode* mode, SkImageFilter* background,
+                                         SkImageFilter* foreground = NULL,
+                                         const CropRect* cropRect = NULL) {
         SkImageFilter* inputs[2] = { background, foreground };
         return new SkXfermodeImageFilter(mode, inputs, cropRect);
     }
diff --git a/samplecode/SampleAll.cpp b/samplecode/SampleAll.cpp
index 21d93bd..b5a0fe5 100644
--- a/samplecode/SampleAll.cpp
+++ b/samplecode/SampleAll.cpp
@@ -382,7 +382,7 @@
         light.fAmbient        = 0x48;
         light.fSpecular        = 0x80;
         SkScalar sigma = SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(12)/5);
-        SkMaskFilter* embossFilter = SkEmbossMaskFilter::Create(sigma, light);
+        SkEmbossMaskFilter* embossFilter = SkEmbossMaskFilter::Create(sigma, light);
 
         SkXfermode* xfermode = SkXfermode::Create(SkXfermode::kXor_Mode);
         SkColorFilter* lightingFilter = SkColorFilter::CreateLightingFilter(
diff --git a/samplecode/SampleTiling.cpp b/samplecode/SampleTiling.cpp
index ed244eb..ba79e5a 100644
--- a/samplecode/SampleTiling.cpp
+++ b/samplecode/SampleTiling.cpp
@@ -55,8 +55,8 @@
 static const int gHeight = 32;
 
 class TilingView : public SampleView {
-    SkAutoTUnref<SkPicture>     fTextPicture;
-    SkAutoTUnref<SkDrawLooper>  fLooper;
+    SkAutoTUnref<SkPicture>        fTextPicture;
+    SkAutoTUnref<SkBlurDrawLooper> fLooper;
 public:
     TilingView()
             : fLooper(SkBlurDrawLooper::Create(0x88000000,
diff --git a/samplecode/SampleUnpremul.cpp b/samplecode/SampleUnpremul.cpp
index 4e3e1fa..6d5cf6c 100644
--- a/samplecode/SampleUnpremul.cpp
+++ b/samplecode/SampleUnpremul.cpp
@@ -83,7 +83,7 @@
         SkPaint paint;
         paint.setAntiAlias(true);
         paint.setTextSize(SkIntToScalar(24));
-        SkAutoTUnref<SkDrawLooper> looper(
+        SkAutoTUnref<SkBlurDrawLooper> looper(
             SkBlurDrawLooper::Create(SK_ColorBLUE,
                                      SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(2)),
                                      0, 0));
diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp
index 2b35036..a3fff39 100644
--- a/src/effects/SkDisplacementMapEffect.cpp
+++ b/src/effects/SkDisplacementMapEffect.cpp
@@ -164,12 +164,12 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-SkImageFilter* SkDisplacementMapEffect::Create(ChannelSelectorType xChannelSelector,
-                                               ChannelSelectorType yChannelSelector,
-                                               SkScalar scale,
-                                               SkImageFilter* displacement,
-                                               SkImageFilter* color,
-                                               const CropRect* cropRect) {
+SkDisplacementMapEffect* SkDisplacementMapEffect::Create(ChannelSelectorType xChannelSelector,
+                                                         ChannelSelectorType yChannelSelector,
+                                                         SkScalar scale,
+                                                         SkImageFilter* displacement,
+                                                         SkImageFilter* color,
+                                                         const CropRect* cropRect) {
     if (!channel_selector_type_is_valid(xChannelSelector) ||
         !channel_selector_type_is_valid(yChannelSelector)) {
         return nullptr;
diff --git a/src/effects/SkEmbossMaskFilter.cpp b/src/effects/SkEmbossMaskFilter.cpp
index 64afa49..2607e25 100644
--- a/src/effects/SkEmbossMaskFilter.cpp
+++ b/src/effects/SkEmbossMaskFilter.cpp
@@ -13,7 +13,7 @@
 #include "SkWriteBuffer.h"
 #include "SkString.h"
 
-SkMaskFilter* SkEmbossMaskFilter::Create(SkScalar blurSigma, const Light& light) {
+SkEmbossMaskFilter* SkEmbossMaskFilter::Create(SkScalar blurSigma, const Light& light) {
     return new SkEmbossMaskFilter(blurSigma, light);
 }
 
diff --git a/src/effects/SkMatrixConvolutionImageFilter.cpp b/src/effects/SkMatrixConvolutionImageFilter.cpp
index a80ba45..a1f23f7 100644
--- a/src/effects/SkMatrixConvolutionImageFilter.cpp
+++ b/src/effects/SkMatrixConvolutionImageFilter.cpp
@@ -47,7 +47,7 @@
     SkASSERT(kernelOffset.fY >= 0 && kernelOffset.fY < kernelSize.fHeight);
 }
 
-SkImageFilter* SkMatrixConvolutionImageFilter::Create(
+SkMatrixConvolutionImageFilter* SkMatrixConvolutionImageFilter::Create(
     const SkISize& kernelSize,
     const SkScalar* kernel,
     SkScalar gain,
diff --git a/tests/AsADashTest.cpp b/tests/AsADashTest.cpp
index fc4efec..c59dc83 100644
--- a/tests/AsADashTest.cpp
+++ b/tests/AsADashTest.cpp
@@ -12,7 +12,7 @@
 #include "SkCornerPathEffect.h"
 
 DEF_TEST(AsADashTest_noneDash, reporter) {
-    SkAutoTUnref<SkPathEffect> pe(SkCornerPathEffect::Create(1.0));
+    SkAutoTUnref<SkCornerPathEffect> pe(SkCornerPathEffect::Create(1.0));
     SkPathEffect::DashInfo info;
 
     SkPathEffect::DashType dashType = pe->asADash(&info);
@@ -22,7 +22,7 @@
 DEF_TEST(AsADashTest_nullInfo, reporter) {
     SkScalar inIntervals[] = { 4.0, 2.0, 1.0, 3.0 };
     const SkScalar phase = 2.0;
-    SkAutoTUnref<SkPathEffect> pe(SkDashPathEffect::Create(inIntervals, 4, phase));
+    SkAutoTUnref<SkDashPathEffect> pe(SkDashPathEffect::Create(inIntervals, 4, phase));
 
     SkPathEffect::DashType dashType = pe->asADash(nullptr);
     REPORTER_ASSERT(reporter, SkPathEffect::kDash_DashType == dashType);
@@ -33,7 +33,7 @@
     SkScalar totalIntSum = 10.0;
     const SkScalar phase = 2.0;
 
-    SkAutoTUnref<SkPathEffect> pe(SkDashPathEffect::Create(inIntervals, 4, phase));
+    SkAutoTUnref<SkDashPathEffect> pe(SkDashPathEffect::Create(inIntervals, 4, phase));
 
     SkPathEffect::DashInfo info;
 
diff --git a/tests/DashPathEffectTest.cpp b/tests/DashPathEffectTest.cpp
index f55bcf8..6639ec7 100644
--- a/tests/DashPathEffectTest.cpp
+++ b/tests/DashPathEffectTest.cpp
@@ -18,7 +18,7 @@
     SkScalar intervals[] = { 1.76934361e+36f, 2.80259693e-45f };  // Values from bug.
     const int count = 2;
     SkScalar phase = SK_ScalarInfinity;  // Used to force the bad fInitialDashLength = -1 path.
-    SkAutoTUnref<SkPathEffect> dash(SkDashPathEffect::Create(intervals, count, phase));
+    SkAutoTUnref<SkDashPathEffect> dash(SkDashPathEffect::Create(intervals, count, phase));
 
     // nullptr -> refuses to work with flattening framework.
     REPORTER_ASSERT(r, dash->getFactory() != nullptr);
@@ -33,7 +33,7 @@
 
     const SkScalar intervals[] = { 1.0f, 1.0f };
     const int count = 2;
-    SkAutoTUnref<SkPathEffect> dash(SkDashPathEffect::Create(intervals, count, 0.0f));
+    SkAutoTUnref<SkDashPathEffect> dash(SkDashPathEffect::Create(intervals, count, 0.0f));
 
     SkRect cull = SkRect::MakeWH(1.0f, 1.0f);
 
diff --git a/tests/DrawPathTest.cpp b/tests/DrawPathTest.cpp
index 721b030..e5d50d3 100644
--- a/tests/DrawPathTest.cpp
+++ b/tests/DrawPathTest.cpp
@@ -192,7 +192,7 @@
      */
 
     const SkScalar vals[] = { 27734, 35660, 2157846850.0f, 247 };
-    SkAutoTUnref<SkPathEffect> dontAssert(SkDashPathEffect::Create(vals, 4, -248.135982067f));
+    SkAutoTUnref<SkDashPathEffect> dontAssert(SkDashPathEffect::Create(vals, 4, -248.135982067f));
 }
 
 static void test_crbug_124652() {
@@ -202,7 +202,7 @@
         large values can "swamp" small ones.
      */
     SkScalar intervals[2] = {837099584, 33450};
-    SkAutoTUnref<SkPathEffect> dash(SkDashPathEffect::Create(intervals, 2, -10));
+    SkAutoTUnref<SkDashPathEffect> dash(SkDashPathEffect::Create(intervals, 2, -10));
 }
 
 static void test_bigcubic() {
@@ -242,7 +242,7 @@
     path.lineTo(5000000, 0);
 
     SkScalar intervals[] = { 0.2f, 0.2f };
-    SkAutoTUnref<SkPathEffect> dash(SkDashPathEffect::Create(intervals, 2, 0));
+    SkAutoTUnref<SkDashPathEffect> dash(SkDashPathEffect::Create(intervals, 2, 0));
 
     SkPath filteredPath;
     SkPaint paint;
@@ -262,7 +262,7 @@
     path.lineTo(10000000, 0);
 
     SkScalar intervals[] = { 0.5f, 0.5f };
-    SkAutoTUnref<SkPathEffect> dash(SkDashPathEffect::Create(intervals, 2, 0));
+    SkAutoTUnref<SkDashPathEffect> dash(SkDashPathEffect::Create(intervals, 2, 0));
 
     SkPaint paint;
     paint.setStyle(SkPaint::kStroke_Style);
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
index 86c791a..fdb2de4 100644
--- a/tests/PictureTest.cpp
+++ b/tests/PictureTest.cpp
@@ -146,7 +146,7 @@
         path.lineTo(50, 50);
 
         SkScalar intervals[] = { 1.0f, 1.0f };
-        SkAutoTUnref<SkPathEffect> dash(SkDashPathEffect::Create(intervals, 2, 0));
+        SkAutoTUnref<SkDashPathEffect> dash(SkDashPathEffect::Create(intervals, 2, 0));
 
         SkPaint paint;
         paint.setStyle(SkPaint::kStroke_Style);
diff --git a/tests/SerializationTest.cpp b/tests/SerializationTest.cpp
index ba95ddf..38e84bd 100644
--- a/tests/SerializationTest.cpp
+++ b/tests/SerializationTest.cpp
@@ -246,7 +246,7 @@
     SkAutoTUnref<SkImage> invalidImage(SkImage::NewFromBitmap(invalidBitmap));
     SkAutoTUnref<SkImageFilter> invalidBitmapSource(SkImageSource::Create(invalidImage));
     SkAutoTUnref<SkXfermode> mode(SkXfermode::Create(SkXfermode::kSrcOver_Mode));
-    SkAutoTUnref<SkImageFilter> xfermodeImageFilter(
+    SkAutoTUnref<SkXfermodeImageFilter> xfermodeImageFilter(
         SkXfermodeImageFilter::Create(mode, invalidBitmapSource, validBitmapSource));
 
     SkAutoTUnref<SkImageFilter> deserializedFilter(