| Index: include/core/SkColorFilter.h
 | 
| diff --git a/include/core/SkColorFilter.h b/include/core/SkColorFilter.h
 | 
| index 4c9795c2711037b646ef876edc01beb0c8cdb037..7ac335fb103677fb50037915e67b99b9dbbcf177 100644
 | 
| --- a/include/core/SkColorFilter.h
 | 
| +++ b/include/core/SkColorFilter.h
 | 
| @@ -86,7 +86,7 @@
 | 
|       *
 | 
|       *  e.g. result(color) == this_filter(inner(color))
 | 
|       */
 | 
| -    virtual SkColorFilter* newComposed(const SkColorFilter* /*inner*/) const { return NULL; }
 | 
| +    virtual sk_sp<SkColorFilter> makeComposed(sk_sp<SkColorFilter>) const { return nullptr; }
 | 
|  
 | 
|      /**
 | 
|       *  Apply this colorfilter to the specified SkColor. This routine handles
 | 
| @@ -110,7 +110,7 @@
 | 
|          @return colorfilter object that applies the src color and mode,
 | 
|                      or NULL if the mode will have no effect.
 | 
|      */
 | 
| -    static SkColorFilter* CreateModeFilter(SkColor c, SkXfermode::Mode mode);
 | 
| +    static sk_sp<SkColorFilter> MakeModeFilter(SkColor c, SkXfermode::Mode mode);
 | 
|  
 | 
|      /** Construct a colorfilter whose effect is to first apply the inner filter and then apply
 | 
|       *  the outer filter to the result of the inner's.
 | 
| @@ -119,12 +119,28 @@
 | 
|       *  Due to internal limits, it is possible that this will return NULL, so the caller must
 | 
|       *  always check.
 | 
|       */
 | 
| -    static SkColorFilter* CreateComposeFilter(SkColorFilter* outer, SkColorFilter* inner);
 | 
| +    static sk_sp<SkColorFilter> MakeComposeFilter(sk_sp<SkColorFilter> outer,
 | 
| +                                                  sk_sp<SkColorFilter> inner);
 | 
|  
 | 
|      /** Construct a color filter that transforms a color by a 4x5 matrix. The matrix is in row-
 | 
|       *  major order and the translation column is specified in unnormalized, 0...255, space.
 | 
|       */
 | 
| -    static SkColorFilter* CreateMatrixFilterRowMajor255(const SkScalar array[20]);
 | 
| +    static sk_sp<SkColorFilter> MakeMatrixFilterRowMajor255(const SkScalar array[20]);
 | 
| +
 | 
| +#ifdef SK_SUPPORT_LEGACY_COLORFILTER_PTR
 | 
| +    static SkColorFilter* CreateModeFilter(SkColor c, SkXfermode::Mode mode) {
 | 
| +        return MakeModeFilter(c, mode).release();
 | 
| +    }
 | 
| +    static SkColorFilter* CreateComposeFilter(SkColorFilter* outer, SkColorFilter* inner) {
 | 
| +        return MakeComposeFilter(sk_ref_sp(outer), sk_ref_sp(inner)).release();
 | 
| +    }
 | 
| +    static SkColorFilter* CreateMatrixFilterRowMajor255(const SkScalar array[20]) {
 | 
| +        return MakeMatrixFilterRowMajor255(array).release();
 | 
| +    }
 | 
| +    virtual SkColorFilter* newComposed(const SkColorFilter* inner) const {
 | 
| +        return this->makeComposed(sk_ref_sp(const_cast<SkColorFilter*>(inner))).release();
 | 
| +    }
 | 
| +#endif
 | 
|  
 | 
|      /**
 | 
|       *  A subclass may implement this factory function to work with the GPU backend. It returns
 | 
| 
 |