# Copyright (c) 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//testing/libfuzzer/fuzzer_test.gni")

group("fuzzers") {
}

# Build Skia fuzzers from OSS-Fuzz on Windows since Windows is not supported by
# OSS-Fuzz.
if (is_win && use_libfuzzer) {
  source_set("skia_fuzzer_sources") {
    testonly = true
    sources = [
      "//skia/tools/fuzzers/fuzzer_environment.cc",
      "//third_party/skia/fuzz/Fuzz.cpp",
      "//third_party/skia/fuzz/FuzzCommon.cpp",
    ]

    # Use public_deps and public_configs so each fuzzer_test doesn't need to
    # explicitly depend on "//skia" and "//skia:skia_library_config".
    public_deps = [
      "//skia",
    ]
    public_configs = [ "//skia:skia_library_config" ]
    deps = [
      "//base/test:test_support",
    ]
  }

  static_library("skia_encoder_fuzzer_lib") {
    sources = [
      "//third_party/skia/fuzz/FuzzEncoders.cpp",
    ]
    configs += [ "//skia:skia_library_config" ]
    deps = [
      "//skia",
    ]
  }

  # TODO(metzman): Enable the other fuzzers that cannot yet build in Chromium.
  fuzzer_test("skia_region_deserialize_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzRegionDeserialize.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_fuzzer_sources",
    ]
  }

  fuzzer_test("skia_image_filter_deserialize_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzImageFilterDeserialize.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_fuzzer_sources",
    ]
  }

  fuzzer_test("skia_region_set_path_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzRegionSetPath.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_fuzzer_sources",
    ]
  }

  fuzzer_test("skia_textblob_deserialize_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_fuzzer_sources",
    ]
  }

  fuzzer_test("skia_path_deserialize_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzPathDeserialize.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_fuzzer_sources",
    ]
  }

  fuzzer_test("skia_image_decode_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzImage.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_fuzzer_sources",
    ]
  }

  fuzzer_test("skia_png_encoder_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzPNGEncoder.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_encoder_fuzzer_lib",
      ":skia_fuzzer_sources",
    ]
  }

  fuzzer_test("skia_jpeg_encoder_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzJPEGEncoder.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_encoder_fuzzer_lib",
      ":skia_fuzzer_sources",
    ]
  }

  fuzzer_test("skia_webp_encoder_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzWEBPEncoder.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_encoder_fuzzer_lib",
      ":skia_fuzzer_sources",
    ]
  }

  fuzzer_test("skia_skjson_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzJSON.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_fuzzer_sources",
    ]
  }

  fuzzer_test("skia_image_decode_incremental_fuzzer") {
    sources = [
      "//third_party/skia/fuzz/oss_fuzz/FuzzIncrementalImage.cpp",
    ]
    defines = [ "IS_FUZZING_WITH_LIBFUZZER" ]
    deps = [
      ":skia_fuzzer_sources",
    ]
  }
}
