# Copyright 2022 The Chromium Authors
# 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")

if (is_android) {
  import("//build/config/android/config.gni")
}

source_set("importer") {
  sources = [
    "import_results.cc",
    "import_results.h",
    "password_importer.cc",
    "password_importer.h",
  ]
  public_deps = [
    ":csv",
    "//base",
    "//components/password_manager/core/browser:password_form",
    "//components/password_manager/core/browser/password_store:password_store_interface",
  ]

  deps = [
    "//components/password_manager/core/browser/ui",
    "//components/password_manager/core/common:constants",
    "//components/password_manager/core/common:features",
    "//components/password_manager/services/csv_password:service",
    "//components/sync/base",
  ]
  configs += [ "//build/config/compiler:wexit_time_destructors" ]
}

source_set("importer_unit_tests") {
  testonly = true
  sources = [ "password_importer_unittest.cc" ]
  deps = [
    ":importer",
    "//base/test:test_support",
    "//components/affiliations/core/browser:test_support",
    "//components/password_manager/core/browser:test_support",
    "//components/password_manager/core/browser/affiliation:test_support",
    "//components/password_manager/core/common:constants",
    "//mojo/public/cpp/bindings",
    "//testing/gmock",
    "//testing/gtest",
  ]

  if (is_ios) {
    deps += [ "//components/password_manager/services/csv_password/ios:fake_password_parser_service" ]
  } else {
    deps += [ "//components/password_manager/services/csv_password:fake_password_parser_service" ]
  }

  # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and
  # enable the diagnostic by removing this line.
  configs += [ "//build/config/compiler:no_exit_time_destructors" ]
}

source_set("csv") {
  sources = [
    "csv_field_parser.cc",
    "csv_field_parser.h",
    "csv_password.cc",
    "csv_password.h",
    "csv_password_iterator.cc",
    "csv_password_iterator.h",
    "csv_password_sequence.cc",
    "csv_password_sequence.h",
  ]
  public_deps = [
    "//base",
    "//components/password_manager/core/browser:password_form",
  ]

  deps = [
    "//components/affiliations/core/browser:affiliations",
    "//components/password_manager/core/browser/form_parsing",
    "//url",
  ]
  configs += [ "//build/config/compiler:wexit_time_destructors" ]
}

source_set("csv_unit_tests") {
  testonly = true
  sources = [
    "csv_field_parser_unittest.cc",
    "csv_password_iterator_unittest.cc",
    "csv_password_sequence_unittest.cc",
    "csv_password_unittest.cc",
  ]
  deps = [
    ":csv",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//url",
  ]
}

fuzzer_test("csv_reader_fuzzer") {
  sources = [ "password_csv_reader_fuzzer.cc" ]
  deps = [
    ":csv",
    "//base:i18n",
    "//components/autofill/core/common",
  ]
  seed_corpus = "password_csv_reader_corpus"
  dict = "password_csv_reader_fuzzer.dict"
}
