# 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("//components/enterprise/buildflags/buildflags.gni")
import("//extensions/buildflags/buildflags.gni")

source_set("sdk_manager") {
  configs += [ "//components/enterprise:extra_warnings" ]

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

  public_deps = [
    "//base",
    "//content/public/browser",
    "//third_party/content_analysis_sdk:liblcasdk",
  ]
}

if (is_chromeos) {
  source_set("obfuscation_rename_handler") {
    public = [ "obfuscation_rename_handler.h" ]

    sources = [ "obfuscation_rename_handler.cc" ]

    deps = [
      "//base",
      "//chrome/browser/ash/file_manager",
      "//components/enterprise/obfuscation/core:enterprise_obfuscation",
    ]
  }
  source_set("test_support") {
    testonly = true

    public = [
      "mock_file_transfer_analysis_delegate.h",
      "source_destination_test_util.h",
    ]

    sources = [
      "mock_file_transfer_analysis_delegate.cc",
      "source_destination_test_util.cc",
    ]

    public_deps = [
      "//base",
      "//chrome/browser/ash/file_manager",
      "//chrome/browser/ash/guest_os/public",
      "//chrome/browser/enterprise",
      "//chrome/browser/safe_browsing",
      "//chrome/browser/safe_browsing:test_support",
      "//chromeos/ash/components/disks",
      "//chromeos/ash/components/disks:test_support",
      "//components/enterprise/common/proto:connectors_proto",
      "//storage/browser",
      "//testing/gmock",
    ]

    deps = [
      "//base/test:test_support",
      "//chrome/test:test_support",
    ]
  }
}

source_set("unit_tests") {
  testonly = true

  # Some of these tests declare file-scope objects with non-trivial
  # destructors.
  configs += [ "//build/config/compiler:no_exit_time_destructors" ]

  sources = []
  deps = [
    "//base",
    "//chrome/browser/enterprise:impl",
    "//chrome/browser/enterprise/connectors/test:test_support",
    "//chrome/test:test_support",
    "//components/device_signals/core/browser:test_support",
    "//components/enterprise/connectors/core:test_support",
    "//testing/gtest",
  ]

  if (enterprise_cloud_content_analysis) {
    sources += [
      "clipboard_request_handler_unittest.cc",
      "content_analysis_delegate_unittest.cc",
      "content_analysis_downloads_delegate_unittest.cc",
      "copy_warning_delegate_tracker_unittest.cc",
      "files_request_handler_unittest.cc",
      "page_print_analysis_request_unittest.cc",
      "page_print_request_handler_unittest.cc",
    ]
  }

  if (enterprise_cloud_content_analysis || is_android) {
    sources += [ "analysis_service_settings_unittest.cc" ]
  }

  if (enable_extensions && enterprise_local_content_analysis) {
    sources += [
      "content_analysis_sdk_manager_unittest.cc",
      "local_binary_upload_service_unittest.cc",
    ]
    deps += [ ":sdk_manager" ]
  }

  if (is_chromeos) {
    sources += [
      "file_transfer_analysis_delegate_unittest.cc",
      "obfuscation_rename_handler_unittest.cc",
      "source_destination_matcher_ash_unittest.cc",
    ]
    deps += [
      ":obfuscation_rename_handler",
      ":test_support",
      "//chrome/browser/enterprise/connectors/reporting",
      "//chrome/browser/policy:test_support",
      "//components/enterprise/obfuscation/core:enterprise_obfuscation",
      "//storage/browser:test_support",
    ]
  }
}

if (!is_android && enterprise_cloud_content_analysis) {
  source_set("browser_tests") {
    testonly = true
    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

    # Some of these tests declare file-scope objects with non-trivial
    # destructors.
    configs += [ "//build/config/compiler:no_exit_time_destructors" ]

    sources = [
      "content_analysis_browsertest.cc",
      "content_analysis_delegate_browsertest.cc",
      "content_analysis_info_browsertest.cc",
    ]

    deps = [
      "//base",
      "//chrome/browser/enterprise:impl",
      "//chrome/browser/enterprise/connectors/test:test_support",
      "//chrome/browser/enterprise/test:test_support",
      "//chrome/test:test_support",
      "//chrome/test:test_support_ui",
      "//components/enterprise/connectors/core:content_analysis_browser_test_base",
      "//content/test:test_support",
      "//testing/gmock",

      # Inherits -Wno-sign-compare via fuzztest_public_config. See
      # crbug.com/527094632.
      "//third_party/fuzztest",
    ]
  }
}
