Port 3 API fuzzers to be oss-fuzz friendly

Also Remove ScaleToSides, which we hadn't been running for a while.

Bug: skia:
Change-Id: I772dad722c34681392d5b635b3de716f3b00d597
Reviewed-on: https://skia-review.googlesource.com/110443
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
diff --git a/fuzz/Fuzz.h b/fuzz/Fuzz.h
index 9dad059..221b8f8 100644
--- a/fuzz/Fuzz.h
+++ b/fuzz/Fuzz.h
@@ -134,9 +134,10 @@
     void (*fn)(Fuzz*);
 };
 
+// Not static so that we can link these into oss-fuzz harnesses if we like.
 #define DEF_FUZZ(name, f)                                               \
-    static void fuzz_##name(Fuzz*);                                     \
+    void fuzz_##name(Fuzz*);                                            \
     sk_tools::Registry<Fuzzable> register_##name({#name, fuzz_##name}); \
-    static void fuzz_##name(Fuzz* f)
+    void fuzz_##name(Fuzz* f)
 
 #endif//Fuzz_DEFINED
diff --git a/fuzz/FuzzCommon.h b/fuzz/FuzzCommon.h
index f0efc19..c908606 100644
--- a/fuzz/FuzzCommon.h
+++ b/fuzz/FuzzCommon.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2018 Google Inc.
+ * Copyright 2018 Google, LLC
  *
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
diff --git a/fuzz/FuzzScaleToSides.cpp b/fuzz/FuzzScaleToSides.cpp
deleted file mode 100644
index 943ce5c..0000000
--- a/fuzz/FuzzScaleToSides.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2016 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-// Reminder of how to run:
-//  $ env CC=afl-clang CXX=afl-clang++ ./gyp_skia
-//  $ ninja -C out/Debug fuzz
-//  $ afl-fuzz -i fuzz-in -o fuzz-out out/Debug/fuzz -n ScaleToSides -b @@
-// where you seed fuzz-in/ with one or more small files.
-
-#include "Fuzz.h"
-#include "SkScaleToSides.h"
-#include <cmath>
-
-DEF_FUZZ(ScaleToSides, fuzz) {
-    float radius1, radius2, width;
-    fuzz->next(&radius1, &radius2, &width);
-
-    if (!std::isfinite(radius1) ||
-        !std::isfinite(radius2) ||
-        !std::isfinite(width)   ||
-        radius1 <= 0.0f         ||
-        radius2 <= 0.0f         ||
-        width <= 0.0f)
-    {
-        return;
-    }
-
-    double scale = (double)width / ((double)radius1 + (double)radius2);
-    if (scale >= 1.0 || scale <= 0.0) {
-        return;
-    }
-    SkDebugf("%g %g %g %g\n", radius1, radius2, width, scale);
-    SkScaleToSides::AdjustRadii(width, scale, &radius1, &radius2);
-
-    // TODO(mtklein): add fuzz->keepResult()
-    volatile float junk = 0.0f;
-    junk *= radius1;
-    junk *= radius2;
-}
diff --git a/fuzz/oss_fuzz/FuzzAPIImageFilter.cpp b/fuzz/oss_fuzz/FuzzAPIImageFilter.cpp
new file mode 100644
index 0000000..1f8753d
--- /dev/null
+++ b/fuzz/oss_fuzz/FuzzAPIImageFilter.cpp
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2018 Google, LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "../Fuzz.h"
+
+void fuzz_ImageFilter(Fuzz* f);
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+    auto fuzz = Fuzz(SkData::MakeWithoutCopy(data, size));
+    fuzz_ImageFilter(&fuzz);
+    return 0;
+}
diff --git a/fuzz/oss_fuzz/FuzzAnimatedImage.cpp b/fuzz/oss_fuzz/FuzzAnimatedImage.cpp
index af43334..54109f0 100644
--- a/fuzz/oss_fuzz/FuzzAnimatedImage.cpp
+++ b/fuzz/oss_fuzz/FuzzAnimatedImage.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright 2018 Google Inc.
+ * Copyright 2018 Google, LLC
  *
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
diff --git a/fuzz/oss_fuzz/FuzzDrawFunctions.cpp b/fuzz/oss_fuzz/FuzzDrawFunctions.cpp
new file mode 100644
index 0000000..ec4e766
--- /dev/null
+++ b/fuzz/oss_fuzz/FuzzDrawFunctions.cpp
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2018 Google, LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "../Fuzz.h"
+
+void fuzz_DrawFunctions(Fuzz* f);
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+    auto fuzz = Fuzz(SkData::MakeWithoutCopy(data, size));
+    fuzz_DrawFunctions(&fuzz);
+    return 0;
+}
diff --git a/fuzz/oss_fuzz/FuzzGradients.cpp b/fuzz/oss_fuzz/FuzzGradients.cpp
new file mode 100644
index 0000000..0694802
--- /dev/null
+++ b/fuzz/oss_fuzz/FuzzGradients.cpp
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2018 Google, LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "../Fuzz.h"
+
+void fuzz_Gradients(Fuzz* f);
+
+bool FLAGS_verbose = false;
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+    auto fuzz = Fuzz(SkData::MakeWithoutCopy(data, size));
+    fuzz_Gradients(&fuzz);
+    return 0;
+}
diff --git a/fuzz/oss_fuzz/FuzzImage.cpp b/fuzz/oss_fuzz/FuzzImage.cpp
index 0f0f6f5..0a8c87a 100644
--- a/fuzz/oss_fuzz/FuzzImage.cpp
+++ b/fuzz/oss_fuzz/FuzzImage.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright 2018 Google Inc.
+ * Copyright 2018 Google, LLC
  *
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
diff --git a/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp b/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp
index 36c7057..544b00d 100644
--- a/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp
+++ b/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright 2018 Google Inc.
+ * Copyright 2018 Google, LLC
  *
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.