return and take SkImageGenerator as unique_ptr

BUG=skia:

Change-Id: I4bc11042dd1dbf1eabd40af206027bc65acc3186
Reviewed-on: https://skia-review.googlesource.com/8444
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/include/core/SkGraphics.h b/include/core/SkGraphics.h
index d5a730d..bf8228b 100644
--- a/include/core/SkGraphics.h
+++ b/include/core/SkGraphics.h
@@ -8,7 +8,7 @@
 #ifndef SkGraphics_DEFINED
 #define SkGraphics_DEFINED
 
-#include "SkTypes.h"
+#include "SkRefCnt.h"
 
 class SkData;
 class SkImageGenerator;
@@ -157,7 +157,8 @@
      */
     static void SetTLSFontCacheLimit(size_t bytes);
 
-    typedef SkImageGenerator* (*ImageGeneratorFromEncodedFactory)(SkData*);
+    typedef std::unique_ptr<SkImageGenerator>
+                                            (*ImageGeneratorFromEncodedDataFactory)(sk_sp<SkData>);
 
     /**
      *  To instantiate images from encoded data, first looks at this runtime function-ptr. If it
@@ -166,8 +167,15 @@
      *
      *  Returns the previous factory (which could be NULL).
      */
+    static ImageGeneratorFromEncodedDataFactory
+                    SetImageGeneratorFromEncodedDataFactory(ImageGeneratorFromEncodedDataFactory);
+
+#ifdef SK_SUPPORT_BARE_PTR_IMAGEGENERATOR
+    typedef SkImageGenerator* (*ImageGeneratorFromEncodedFactory)(SkData*);
     static ImageGeneratorFromEncodedFactory
-           SetImageGeneratorFromEncodedFactory(ImageGeneratorFromEncodedFactory);
+                            SetImageGeneratorFromEncodedFactory(ImageGeneratorFromEncodedFactory);
+#endif
+
 };
 
 class SkAutoGraphics {