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/src/image/SkImage_Generator.cpp b/src/image/SkImage_Generator.cpp
index da9d61a..7e47523 100644
--- a/src/image/SkImage_Generator.cpp
+++ b/src/image/SkImage_Generator.cpp
@@ -93,9 +93,16 @@
     return validator ? sk_sp<SkImage>(new SkImage_Generator(&validator)) : nullptr;
 }
 
-sk_sp<SkImage> SkImage::MakeFromGenerator(SkImageGenerator* generator, const SkIRect* subset) {
-    SkImageCacherator::Validator validator(SkImageCacherator::SharedGenerator::Make(generator),
-                                           subset);
+sk_sp<SkImage> SkImage::MakeFromGenerator(std::unique_ptr<SkImageGenerator> generator,
+                                          const SkIRect* subset) {
+    SkImageCacherator::Validator validator(
+                       SkImageCacherator::SharedGenerator::Make(std::move(generator)), subset);
 
     return validator ? sk_make_sp<SkImage_Generator>(&validator) : nullptr;
 }
+
+#ifdef SK_SUPPORT_BARE_PTR_IMAGEGENERATOR
+sk_sp<SkImage> SkImage::MakeFromGenerator(SkImageGenerator* gen, const SkIRect* subset) {
+    return MakeFromGenerator(std::unique_ptr<SkImageGenerator>(gen), subset);
+}
+#endif