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

visibility = [ "//src/developer/forensics/*" ]

###############################################################################
# SOURCES
###############################################################################
source_set("annotation_map") {
  sources = [ "annotation_map.h" ]

  public_deps = [
    ":errors",
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/utils:errors",
    "//src/lib/fxl",
  ]
}

source_set("config") {
  public = [ "config.h" ]

  sources = [
    "config.cc",
    "config.h",
  ]

  deps = [
    ":constants",
    "//sdk/lib/syslog/cpp",
    "//src/lib/files",
    "//third_party/rapidjson",
  ]
}

source_set("constants") {
  sources = [ "constants.h" ]

  public_deps = [
    "//src/developer/forensics/utils:storage_size",
    "//zircon/system/ulib/zx",
  ]
}

source_set("crash_register") {
  sources = [
    "crash_register.cc",
    "crash_register.h",
  ]

  public_deps = [
    ":product",
    "//sdk/fidl/fuchsia.feedback",
    "//src/developer/forensics/crash_reports/info",
    "//src/developer/forensics/feedback:constants",
    "//src/developer/forensics/feedback/annotations",
    "//src/developer/forensics/utils:errors",
    "//third_party/rapidjson",
  ]

  deps = [
    "//sdk/lib/syslog/cpp",
    "//src/lib/files",
    "//src/lib/fostr/fidl/fuchsia.feedback",
  ]
}

source_set("crash_reporter") {
  sources = [
    "crash_reporter.cc",
    "crash_reporter.h",
    "product_quotas.cc",
    "product_quotas.h",
  ]

  public_deps = [
    ":crash_register",
    ":crash_server",
    ":log_tags",
    ":network_watcher",
    ":product",
    ":queue",
    ":report_id",
    ":report_util",
    ":reporting_policy_watcher",
    ":snapshot_manager",
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/crash_reports/info",
    "//src/developer/forensics/feedback/annotations",
    "//src/developer/forensics/utils:errors",
    "//src/developer/forensics/utils:utc_time_provider",
    "//src/lib/timekeeper",
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/async:async-cpp",
  ]

  deps = [
    ":constants",
    ":default_annotations",
    "//sdk/lib/fit",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/utils/cobalt",
  ]
}

source_set("crash_server") {
  sources = [
    "crash_server.cc",
    "crash_server.h",
  ]

  public_deps = [
    ":log_tags",
    ":report",
    ":sized_data_reader",
    ":snapshot_manager",
    "//sdk/fidl/fuchsia.mem",
    "//sdk/fidl/fuchsia.net.http",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fxl",
    "//third_party/crashpad/util:net",
    "//third_party/mini_chromium/base",
  ]

  deps = [
    "//src/developer/forensics/utils:sized_data",
    "//src/lib/fostr/fidl/fuchsia.net.http",
    "//src/lib/fsl",
  ]
}

source_set("default_annotations") {
  sources = [
    "default_annotations.cc",
    "default_annotations.h",
  ]
  public_deps = [
    ":annotation_map",
    "//src/developer/forensics/feedback:constants",
    "//src/developer/forensics/utils:errors",
  ]

  deps = [
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/feedback/annotations",
    "//src/lib/files",
    "//src/lib/fxl",
  ]
}

source_set("errors") {
  sources = [ "errors.h" ]

  public_deps = [
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/utils:errors",
  ]
}

source_set("log_tags") {
  sources = [
    "log_tags.cc",
    "log_tags.h",
  ]

  public_deps = [
    ":report_id",
    "//sdk/lib/syslog/cpp",
  ]

  deps = [ "//src/lib/fxl" ]
}

source_set("network_watcher") {
  sources = [
    "network_watcher.cc",
    "network_watcher.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.net.interfaces",
    "//sdk/lib/fit",
    "//sdk/lib/sys/cpp",
    "//src/connectivity/network/lib/net_interfaces/cpp",
    "//src/lib/backoff",
    "//zircon/system/ulib/async",
  ]

  deps = [ "//sdk/lib/syslog/cpp" ]
}

source_set("product") {
  sources = [
    "product.cc",
    "product.h",
  ]

  public_deps = [ "//src/developer/forensics/utils:errors" ]
}

source_set("queue") {
  sources = [
    "queue.cc",
    "queue.h",
  ]

  public_deps = [
    ":crash_server",
    ":log_tags",
    ":network_watcher",
    ":report_id",
    ":reporting_policy_watcher",
    ":store",
    "//src/developer/forensics/crash_reports/info",
    "//src/lib/backoff",
    "//src/lib/fxl",
    "//zircon/system/ulib/async",
  ]

  deps = [
    ":constants",
    ":report",
    "//sdk/lib/syslog/cpp",
    "//zircon/system/ulib/async:async-cpp",
  ]
}

source_set("report") {
  sources = [
    "report.cc",
    "report.h",
  ]

  public_deps = [
    ":report_id",
    ":snapshot_manager",
    "//sdk/fidl/fuchsia.mem",
    "//sdk/lib/syslog/cpp",
    "//src/developer/forensics/utils:sized_data",
  ]
}

source_set("reporting_policy_watcher") {
  sources = [
    "reporting_policy_watcher.cc",
    "reporting_policy_watcher.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.settings",
    "//sdk/lib/fit",
    "//sdk/lib/sys/cpp",
    "//src/lib/backoff",
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/zx",
  ]

  deps = [ "//sdk/lib/syslog/cpp" ]
}

source_set("report_id") {
  sources = [ "report_id.h" ]
}

source_set("report_util") {
  sources = [
    "dart_module_parser.cc",
    "dart_module_parser.h",
    "report_util.cc",
    "report_util.h",
  ]

  public_deps = [
    ":product",
    ":report",
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/lib/fit-promise",
    "//src/developer/forensics/utils:errors",
  ]

  deps = [
    ":annotation_map",
    ":constants",
    ":errors",
    "//sdk/fidl/fuchsia.mem",
    "//sdk/lib/syslog/cpp",
    "//src/lib/files",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//third_party/re2",
  ]
}

source_set("sized_data_reader") {
  sources = [
    "sized_data_reader.cc",
    "sized_data_reader.h",
  ]

  public_deps = [
    "//src/developer/forensics/utils:sized_data",
    "//third_party/crashpad/util",
    "//third_party/mini_chromium/base",
  ]

  deps = [ "//sdk/lib/syslog/cpp" ]
}

source_set("snapshot_manager") {
  sources = [
    "snapshot.cc",
    "snapshot.h",
    "snapshot_manager.cc",
    "snapshot_manager.h",
  ]

  public_deps = [
    ":annotation_map",
    "//sdk/fidl/fuchsia.feedback",
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//src/developer/forensics/feedback/annotations",
    "//src/developer/forensics/utils:sized_data",
    "//src/developer/forensics/utils:storage_size",
    "//src/lib/timekeeper",
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/zx",
  ]

  deps = [
    ":errors",
    "//sdk/lib/syslog/cpp",
    "//src/lib/uuid",
  ]
}

source_set("store") {
  sources = [
    "store.cc",
    "store.h",
    "store_metadata.cc",
    "store_metadata.h",
  ]

  public_deps = [
    ":annotation_map",
    ":log_tags",
    ":report",
    ":report_id",
    "//src/developer/forensics/crash_reports/info",
    "//src/developer/forensics/utils:storage_size",
  ]

  deps = [
    ":report_util",
    "//sdk/lib/fit",
    "//sdk/lib/syslog/cpp",
    "//src/lib/files",
    "//src/lib/fxl",
    "//third_party/rapidjson",
  ]
}
