experimental/fiddle: update to work again

NOTRY=true

Review URL: https://codereview.chromium.org/1834993003
diff --git a/experimental/fiddle/draw.cpp b/experimental/fiddle/draw.cpp
index dfed793..78f428d 100644
--- a/experimental/fiddle/draw.cpp
+++ b/experimental/fiddle/draw.cpp
@@ -20,11 +20,9 @@
     SkMatrix matrix;
     matrix.setScale(0.75f, 0.75f);
     matrix.preRotate(30.0f);
-    SkAutoTUnref<SkShader> shader(
-            image->newShader(SkShader::kRepeat_TileMode,
-                             SkShader::kRepeat_TileMode,
-                             &matrix));
     SkPaint paint;
-    paint.setShader(shader);
+    paint.setShader(image->makeShader(SkShader::kRepeat_TileMode,
+                                      SkShader::kRepeat_TileMode,
+                                      &matrix));
     canvas->drawPaint(paint);
 }
diff --git a/experimental/fiddle/fiddle_main.cpp b/experimental/fiddle/fiddle_main.cpp
index 8c5d021..d9b8f4c 100644
--- a/experimental/fiddle/fiddle_main.cpp
+++ b/experimental/fiddle/fiddle_main.cpp
@@ -48,7 +48,8 @@
     }
 }
 
-static void dump_output(SkData* data, const char* name, bool last = true) {
+static void dump_output(const sk_sp<SkData>& data,
+                        const char* name, bool last = true) {
     if (data) {
         printf("\t\"%s\": \"", name);
         encode_to_base64(data->data(), data->size(), stdout);
@@ -56,8 +57,8 @@
     }
 }
 
-static SkData* encode_snapshot(SkSurface* surface) {
-    SkAutoTUnref<SkImage> img(surface->newImageSnapshot());
+static SkData* encode_snapshot(const sk_sp<SkSurface>& surface) {
+    sk_sp<SkImage> img(surface->newImageSnapshot());
     return img ? img->encode() : nullptr;
 }
 
@@ -72,7 +73,7 @@
 }
 
 static GrContext* create_mesa_grcontext() {
-    SkAutoTUnref<const GrGLInterface> mesa(GrGLCreateMesaInterface());
+    sk_sp<const GrGLInterface> mesa(GrGLCreateMesaInterface());
     intptr_t backend = reinterpret_cast<intptr_t>(mesa.get());
     return backend ? GrContext::Create(kOpenGL_GrBackend, backend) : nullptr;
 }
@@ -82,12 +83,12 @@
     const DrawOptions options = GetDrawOptions();
     fprintf(stderr, "%s\n", options.source);
     if (options.source) {
-        SkAutoTUnref<SkData> data(SkData::NewFromFileName(options.source));
+        sk_sp<SkData> data(SkData::NewFromFileName(options.source));
         if (!data) {
             perror(options.source);
             return 1;
         } else {
-            image = SkImage::NewFromEncoded(data);
+            image = SkImage::NewFromEncoded(data.get());
             if (!image) {
                 perror("Unable to decode the source image.");
                 return 1;
@@ -96,24 +97,23 @@
                                    &source, SkImage::kRO_LegacyBitmapMode));
         }
     }
-    SkAutoTUnref<SkData> rasterData, gpuData, pdfData, skpData;
+    sk_sp<SkData> rasterData, gpuData, pdfData, skpData;
     if (options.raster) {
-        SkAutoTUnref<SkSurface> rasterSurface(
-                SkSurface::NewRaster(SkImageInfo::MakeN32Premul(options.size)));
+        auto rasterSurface =
+                SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(options.size));
         draw(rasterSurface->getCanvas());
         rasterData.reset(encode_snapshot(rasterSurface));
     }
     if (options.gpu) {
         OSMesaContext osMesaContext = create_osmesa_context();
-        SkAutoTUnref<GrContext> grContext(create_mesa_grcontext());
+        sk_sp<GrContext> grContext(create_mesa_grcontext());
         if (!grContext) {
             fputs("Unable to get Mesa GrContext.\n", stderr);
         } else {
-            SkAutoTUnref<SkSurface> surface(
-                    SkSurface::NewRenderTarget(
-                            grContext,
-                            SkBudgeted::kNo,
-                            SkImageInfo::MakeN32Premul(options.size)));
+            auto surface = SkSurface::MakeRenderTarget(
+                    grContext.get(),
+                    SkBudgeted::kNo,
+                    SkImageInfo::MakeN32Premul(options.size));
             if (!surface) {
                 fputs("Unable to get render surface.\n", stderr);
                 exit(1);
@@ -127,7 +127,7 @@
     }
     if (options.pdf) {
         SkDynamicMemoryWStream pdfStream;
-        SkAutoTUnref<SkDocument> document(SkDocument::CreatePDF(&pdfStream));
+        sk_sp<SkDocument> document(SkDocument::CreatePDF(&pdfStream));
         draw(document->beginPage(options.size.width(), options.size.height()));
         document->close();
         pdfData.reset(pdfStream.copyToData());
@@ -137,7 +137,7 @@
         size = options.size;
         SkPictureRecorder recorder;
         draw(recorder.beginRecording(size.width(), size.height()));
-        SkAutoTUnref<SkPicture> picture(recorder.endRecordingAsPicture());
+        auto picture = recorder.finishRecordingAsPicture();
         SkDynamicMemoryWStream skpStream;
         picture->serialize(&skpStream);
         skpData.reset(skpStream.copyToData());
diff --git a/experimental/fiddle/fiddle_test b/experimental/fiddle/fiddle_test
old mode 100644
new mode 100755
index 7955d68..c199142
--- a/experimental/fiddle/fiddle_test
+++ b/experimental/fiddle/fiddle_test
@@ -11,17 +11,19 @@
 
 cd "$(dirname "$0")/../.."
 skia_dir="$PWD"
-cores=32
 
-echo "Bootstrapping CMake"
-cmake_dir="${skia_dir}/third_party/externals/cmake"
-cd "$cmake_dir"
-./bootstrap --parallel=$cores
-make -j $cores cmake
+if ! command -v cmake > /dev/null 2>&1 ; then
+    cores=32
+    echo "Bootstrapping CMake"
+    cmake_dir="${skia_dir}/third_party/externals/cmake"
+    cd "$cmake_dir"
+    ./bootstrap --parallel=$cores
+    make -j $cores cmake
+    export PATH="${cmake_dir}/bin:${PATH}"
+fi
 
-echo "Building fiddle bootstrapped CMake"
+echo "Building Skia and Fiddle"
 cd "${skia_dir}/experimental/fiddle"
-export PATH="${cmake_dir}/bin:${PATH}"
 go build fiddler.go
 ./fiddler "$skia_dir"
 ./fiddler "$skia_dir" draw.cpp > /dev/null
diff --git a/experimental/fiddle/fiddler.go b/experimental/fiddle/fiddler.go
index d3056c9..0c0dedb 100644
--- a/experimental/fiddle/fiddler.go
+++ b/experimental/fiddle/fiddler.go
@@ -150,7 +150,7 @@
 			if err != nil {
 				glog.Fatalf("unable to open \"%s\": %v", os.Args[2], err)
 			}
-			util.Close(inputFile)
+			defer util.Close(inputFile)
 			if err = fiddler(skiaSrc, inputFile, os.Stdout, tempDir); err != nil {
 				glog.Fatal(err)
 			}