Fold SkJSON into Skia/utils

It's a tiny, core-ish component -- might as well treat as such to
simplify dependencies.

Change-Id: I6f31ce2d151f9a629d88bfc7f15d64891d5150c0
Reviewed-on: https://skia-review.googlesource.com/135780
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn
index 529a74f..26cd616 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1392,7 +1392,6 @@
     ]
     public_deps = [
       ":gpu_tool_utils",  # Test.h #includes headers from this target.
-      "modules/skjson:tests",
     ]
   }
 
@@ -1407,9 +1406,6 @@
       ":skia",
       ":tool_utils",
     ]
-    public_deps = [
-      "modules/skjson:bench",
-    ]
   }
 
   test_lib("experimental_svg_model") {
@@ -1736,6 +1732,7 @@
       "fuzz/oss_fuzz/FuzzAnimatedImage.cpp",
       "fuzz/oss_fuzz/FuzzImage.cpp",
       "fuzz/oss_fuzz/FuzzImageFilterDeserialize.cpp",
+      "fuzz/oss_fuzz/FuzzJSON.cpp",
       "fuzz/oss_fuzz/FuzzPathDeserialize.cpp",
       "fuzz/oss_fuzz/FuzzRegionDeserialize.cpp",
       "fuzz/oss_fuzz/FuzzRegionSetPath.cpp",
@@ -1750,7 +1747,6 @@
       ":flags",
       ":gpu_tool_utils",
       ":skia",
-      "modules/skjson:fuzz",
       "modules/skottie:fuzz",
       "//third_party/jsoncpp",
       "//third_party/libpng",
diff --git a/modules/skjson/src/SkJSONBench.cpp b/bench/JSONBench.cpp
similarity index 100%
rename from modules/skjson/src/SkJSONBench.cpp
rename to bench/JSONBench.cpp
diff --git a/fuzz/fuzz.cpp b/fuzz/fuzz.cpp
index 96d2a25..a71a386 100644
--- a/fuzz/fuzz.cpp
+++ b/fuzz/fuzz.cpp
@@ -53,13 +53,11 @@
                                          "image_decode\n"
                                          "image_mode\n"
                                          "image_scale\n"
+                                         "json\n"
                                          "path_deserialize\n"
                                          "pipe\n"
                                          "region_deserialize\n"
                                          "region_set_path\n"
-#if defined(SK_ENABLE_SKJSON)
-                                         "skjson\n"
-#endif
                                          "skp\n"
                                          "sksl2glsl\n"
 #if defined(SK_ENABLE_SKOTTIE)
@@ -79,6 +77,7 @@
 static void fuzz_img2(sk_sp<SkData>);
 static void fuzz_animated_img(sk_sp<SkData>);
 static void fuzz_img(sk_sp<SkData>, uint8_t, uint8_t);
+static void fuzz_json(sk_sp<SkData>);
 static void fuzz_path_deserialize(sk_sp<SkData>);
 static void fuzz_region_deserialize(sk_sp<SkData>);
 static void fuzz_region_set_path(sk_sp<SkData>);
@@ -92,10 +91,6 @@
 static void fuzz_sksl2glsl(sk_sp<SkData>);
 #endif
 
-#if defined(SK_ENABLE_SKJSON)
-static void fuzz_skjson(sk_sp<SkData>);
-#endif
-
 #if defined(SK_ENABLE_SKOTTIE)
 static void fuzz_skottie_json(sk_sp<SkData>);
 #endif
@@ -156,6 +151,10 @@
         fuzz_color_deserialize(bytes);
         return 0;
     }
+    if (type.equals("filter_fuzz")) {
+        fuzz_filter_fuzz(bytes);
+        return 0;
+    }
     if (type.equals("image_decode")) {
         fuzz_img2(bytes);
         return 0;
@@ -170,8 +169,8 @@
         fuzz_img(bytes, 0, option);
         return 0;
     }
-    if (type.equals("filter_fuzz")) {
-        fuzz_filter_fuzz(bytes);
+    if (type.equals("json")) {
+        fuzz_json(bytes);
         return 0;
     }
     if (type.equals("path_deserialize")) {
@@ -190,12 +189,6 @@
         fuzz_skpipe(bytes);
         return 0;
     }
-#if defined(SK_ENABLE_SKJSON)
-    if (type.equals("skjson")) {
-        fuzz_skjson(bytes);
-        return 0;
-    }
-#endif
 #if defined(SK_ENABLE_SKOTTIE)
     if (type.equals("skottie_json")) {
         fuzz_skottie_json(bytes);
@@ -281,14 +274,12 @@
     return SkString("");
 }
 
-#if defined(SK_ENABLE_SKJSON)
-void FuzzSkJSON(sk_sp<SkData> bytes);
+void FuzzJSON(sk_sp<SkData> bytes);
 
-static void fuzz_skjson(sk_sp<SkData> bytes){
-    FuzzSkJSON(bytes);
+static void fuzz_json(sk_sp<SkData> bytes){
+    FuzzJSON(bytes);
     SkDebugf("[terminated] Done parsing!\n");
 }
-#endif
 
 #if defined(SK_ENABLE_SKOTTIE)
 void FuzzSkottieJSON(sk_sp<SkData> bytes);
diff --git a/modules/skjson/src/FuzzSkJSON.cpp b/fuzz/oss_fuzz/FuzzJSON.cpp
similarity index 89%
rename from modules/skjson/src/FuzzSkJSON.cpp
rename to fuzz/oss_fuzz/FuzzJSON.cpp
index 2e971ce..d6d3cf8 100644
--- a/modules/skjson/src/FuzzSkJSON.cpp
+++ b/fuzz/oss_fuzz/FuzzJSON.cpp
@@ -9,7 +9,7 @@
 #include "SkJSON.h"
 #include "SkStream.h"
 
-void FuzzSkJSON(sk_sp<SkData> bytes) {
+void FuzzJSON(sk_sp<SkData> bytes) {
     skjson::DOM dom(static_cast<const char*>(bytes->data()), bytes->size());
     SkDynamicMemoryWStream wstream;
     dom.write(&wstream);
@@ -18,7 +18,7 @@
 #if defined(IS_FUZZING_WITH_LIBFUZZER)
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
     auto bytes = SkData::MakeWithoutCopy(data, size);
-    FuzzSkJSON(bytes);
+    FuzzJSON(bytes);
     return 0;
 }
 #endif
diff --git a/gn/bench.gni b/gn/bench.gni
index e73a973..ab18703 100644
--- a/gn/bench.gni
+++ b/gn/bench.gni
@@ -63,6 +63,7 @@
   "$_bench/ImageFilterCollapse.cpp",
   "$_bench/ImageFilterDAGBench.cpp",
   "$_bench/InterpBench.cpp",
+  "$_bench/JSONBench.cpp",
   "$_bench/LightingBench.cpp",
   "$_bench/LineBench.cpp",
   "$_bench/MagnifierBench.cpp",
diff --git a/gn/tests.gni b/gn/tests.gni
index 5f028e8..32c3337 100644
--- a/gn/tests.gni
+++ b/gn/tests.gni
@@ -123,6 +123,7 @@
   "$_tests/InterpolatorTest.cpp",
   "$_tests/InvalidIndexedPngTest.cpp",
   "$_tests/IsClosedSingleContourTest.cpp",
+  "$_tests/JSONTest.cpp",
   "$_tests/LayerDrawLooperTest.cpp",
   "$_tests/LazyProxyTest.cpp",
   "$_tests/LListTest.cpp",
diff --git a/gn/utils.gni b/gn/utils.gni
index ff8f60a..63b063b 100644
--- a/gn/utils.gni
+++ b/gn/utils.gni
@@ -38,6 +38,8 @@
   "$_src/utils/SkFloatToDecimal.h",
   "$_src/utils/SkFloatUtils.h",
   "$_src/utils/SkInterpolator.cpp",
+  "$_src/utils/SkJSON.cpp",
+  "$_src/utils/SkJSON.h",
   "$_src/utils/SkJSONWriter.cpp",
   "$_src/utils/SkJSONWriter.h",
   "$_src/utils/SkMatrix22.cpp",
diff --git a/modules/skjson/BUILD.gn b/modules/skjson/BUILD.gn
deleted file mode 100644
index dd8ca65..0000000
--- a/modules/skjson/BUILD.gn
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright 2018 Google Inc.
-#
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-declare_args() {
-  skia_enable_skjson = true
-}
-
-config("public_config") {
-  if (skia_enable_skjson) {
-    defines = [ "SK_ENABLE_SKJSON" ]
-    include_dirs = [ "include" ]
-  }
-}
-
-source_set("skjson") {
-  if (skia_enable_skjson) {
-    public_configs = [ ":public_config" ]
-    public = [
-      "include/SkJSON.h",
-    ]
-    sources = [
-      "src/SkJSON.cpp",
-    ]
-    configs += [ "../../:skia_private" ]
-    deps = [
-      "../..:skia",
-    ]
-  }
-}
-
-source_set("tests") {
-  if (skia_enable_skjson) {
-    testonly = true
-
-    configs += [
-      "../..:skia_private",
-      "../..:tests_config",
-    ]
-    sources = [
-      "src/SkJSONTest.cpp",
-    ]
-
-    deps = [
-      ":skjson",
-      "../..:gpu_tool_utils",
-      "../..:skia",
-    ]
-  }
-}
-
-source_set("bench") {
-  if (skia_enable_skjson) {
-    testonly = true
-
-    configs += [
-      "../..:bench_config",
-      "../..:skia_private",
-    ]
-    sources = [
-      "src/SkJSONBench.cpp",
-    ]
-
-    deps = [
-      ":skjson",
-      "../..:skia",
-    ]
-  }
-}
-
-source_set("fuzz") {
-  if (skia_enable_skjson) {
-    testonly = true
-
-    configs += [ "../..:skia_private" ]
-    sources = [
-      "src/FuzzSkJSON.cpp",
-    ]
-
-    deps = [
-      ":skjson",
-      "../..:skia",
-    ]
-  }
-}
diff --git a/modules/skottie/BUILD.gn b/modules/skottie/BUILD.gn
index 9442592..afa2769 100644
--- a/modules/skottie/BUILD.gn
+++ b/modules/skottie/BUILD.gn
@@ -34,7 +34,6 @@
     configs += [ "../../:skia_private" ]
     deps = [
       "../..:skia",
-      "../skjson",
       "../sksg",
     ]
   }
diff --git a/modules/skjson/src/SkJSON.cpp b/src/utils/SkJSON.cpp
similarity index 100%
rename from modules/skjson/src/SkJSON.cpp
rename to src/utils/SkJSON.cpp
diff --git a/modules/skjson/include/SkJSON.h b/src/utils/SkJSON.h
similarity index 100%
rename from modules/skjson/include/SkJSON.h
rename to src/utils/SkJSON.h
diff --git a/modules/skjson/src/SkJSONTest.cpp b/tests/JSONTest.cpp
similarity index 98%
rename from modules/skjson/src/SkJSONTest.cpp
rename to tests/JSONTest.cpp
index df04ac3..72c71e3 100644
--- a/modules/skjson/src/SkJSONTest.cpp
+++ b/tests/JSONTest.cpp
@@ -14,7 +14,7 @@
 
 using namespace skjson;
 
-DEF_TEST(SkJSON_Parse, reporter) {
+DEF_TEST(JSON_Parse, reporter) {
     static constexpr struct {
         const char* in;
         const char* out;
@@ -155,7 +155,7 @@
     }
 }
 
-DEF_TEST(SkJSON_DOM_visit, reporter) {
+DEF_TEST(JSON_DOM_visit, reporter) {
     static constexpr char json[] = "{ \n\
         \"k1\": null,                \n\
         \"k2\": false,               \n\
@@ -302,7 +302,7 @@
     REPORTER_ASSERT(reporter, 0 == strcmp(expected_string, vstr.c_str()));
 }
 
-DEF_TEST(SkJSON_DOM_build, reporter) {
+DEF_TEST(JSON_DOM_build, reporter) {
     SkArenaAlloc alloc(4096);
 
     const auto v0  = NullValue();