# 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("//build/config/chromebox_for_meetings/buildflags.gni")
import("//build/config/chromeos/args.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//extensions/buildflags/buildflags.gni")

assert(enable_extensions)
assert(is_chromeos)

source_set("unit_tests") {
  testonly = true

  sources = [
    "../extensions/updater/local_extension_cache_unittest.cc",
    "../metrics/chromeos_system_profile_provider_unittest.cc",
    "../metrics/cros_healthd_metrics_provider_unittest.cc",
    "../metrics/perf/cpu_identity_unittest.cc",
    "../metrics/perf/random_selector_unittest.cc",
    "../policy/default_geolocation_policy_handler_unittest.cc",
    "../ui/webui/settings/about_handler_unittest.cc",
  ]

  deps = [
    "//ash",
    "//base/test:test_support",
    "//chrome/browser",
    "//chrome/browser/ash/extended_updates",
    "//chrome/browser/ash/extended_updates/test:test_support",
    "//chrome/browser/ash/login/demo_mode",
    "//chrome/browser/ash/login/users:test_support",
    "//chrome/browser/ash/multidevice_setup",
    "//chrome/browser/ash/profiles",
    "//chrome/browser/ash/settings:test_support",
    "//chrome/browser/extensions",
    "//chrome/browser/metrics",
    "//chrome/browser/profiles:profile",
    "//chrome/browser/ui",
    "//chrome/browser/ui/webui/settings",
    "//chrome/test:test_support",
    "//chrome/test:test_support_ui",
    "//chromeos/ash/components/dbus/concierge",
    "//chromeos/ash/components/dbus/update_engine",
    "//chromeos/ash/components/install_attributes:test_support",
    "//chromeos/ash/components/login/login_state",
    "//chromeos/ash/components/mojo_service_manager:test_support",
    "//chromeos/ash/components/multidevice:test_support",
    "//chromeos/ash/components/system",
    "//chromeos/ash/experiences/arc",
    "//chromeos/ash/services/cros_healthd/public/cpp:fakes",
    "//chromeos/ash/services/cros_healthd/public/mojom",
    "//chromeos/ash/services/multidevice_setup/public/cpp",
    "//chromeos/ash/services/multidevice_setup/public/cpp:test_support",
    "//chromeos/dbus/power",
    "//chromeos/dbus/tpm_manager",
    "//components/policy/core/browser",
    "//components/policy/core/browser:test_support",
    "//components/prefs:test_support",
    "//content/test:test_support",
    "//extensions:test_support",
    "//extensions/browser",
    "//testing/gmock",
    "//testing/gtest",

    # Gather unit tests from subdirectories.
    "//chrome/browser/ash/accessibility:unit_tests",
    "//chrome/browser/ash/account_manager:unit_tests",
    "//chrome/browser/ash/ambient:unit_tests",
    "//chrome/browser/ash/api/tasks:unit_tests",
    "//chrome/browser/ash/app_list:unit_tests",
    "//chrome/browser/ash/app_mode:unit_tests",
    "//chrome/browser/ash/app_restore:unit_tests",
    "//chrome/browser/ash/apps:unit_tests",
    "//chrome/browser/ash/apps/webapk:unit_tests",
    "//chrome/browser/ash/arc:unit_tests",
    "//chrome/browser/ash/attestation:unit_tests",
    "//chrome/browser/ash/audio:unit_tests",
    "//chrome/browser/ash/bluetooth:unit_tests",
    "//chrome/browser/ash/boca:unit_tests",
    "//chrome/browser/ash/boca/babelorca:unit_tests",
    "//chrome/browser/ash/boca/on_task:unit_tests",
    "//chrome/browser/ash/boca/receiver:unit_tests",
    "//chrome/browser/ash/borealis:unit_tests",
    "//chrome/browser/ash/bruschetta:unit_tests",
    "//chrome/browser/ash/calendar:unit_tests",
    "//chrome/browser/ash/camera:unit_tests",
    "//chrome/browser/ash/camera_mic:unit_tests",
    "//chrome/browser/ash/cert_provisioning:unit_tests",
    "//chrome/browser/ash/certs:unit_tests",
    "//chrome/browser/ash/child_accounts:unit_tests",
    "//chrome/browser/ash/concierge_helper:unit_tests",
    "//chrome/browser/ash/crostini:unit_tests",
    "//chrome/browser/ash/cryptauth:unit_tests",
    "//chrome/browser/ash/customization:unit_tests",
    "//chrome/browser/ash/dbus:unit_tests",
    "//chrome/browser/ash/dbus/vm:unit_tests",
    "//chrome/browser/ash/diagnostics:unit_tests",
    "//chrome/browser/ash/drive:unit_tests",
    "//chrome/browser/ash/eche_app:unit_tests",
    "//chrome/browser/ash/eol:unit_tests",
    "//chrome/browser/ash/events:unit_tests",
    "//chrome/browser/ash/exo:unit_tests",
    "//chrome/browser/ash/extended_updates:unit_tests",
    "//chrome/browser/ash/extensions:unit_tests",
    "//chrome/browser/ash/extensions/file_manager:unit_tests",
    "//chrome/browser/ash/extensions/login_screen_ui:unit_tests",
    "//chrome/browser/ash/external_metrics:unit_tests",
    "//chrome/browser/ash/file_manager:unit_tests",
    "//chrome/browser/ash/file_suggest:unit_tests",
    "//chrome/browser/ash/file_system_provider:unit_tests",
    "//chrome/browser/ash/fileapi:unit_tests",
    "//chrome/browser/ash/floating_sso:unit_tests",
    "//chrome/browser/ash/floating_workspace:unit_tests",
    "//chrome/browser/ash/fusebox:unit_tests",
    "//chrome/browser/ash/game_mode:unit_tests",
    "//chrome/browser/ash/geolocation:unit_tests",
    "//chrome/browser/ash/growth:unit_tests",
    "//chrome/browser/ash/guest_os:unit_tests",
    "//chrome/browser/ash/hats:unit_tests",
    "//chrome/browser/ash/input_method:unit_tests",
    "//chrome/browser/ash/kcer/nssdb_migration:unit_tests",
    "//chrome/browser/ash/kerberos:unit_tests",
    "//chrome/browser/ash/language_packs:unit_tests",
    "//chrome/browser/ash/lobster:unit_tests",
    "//chrome/browser/ash/locale:unit_tests",
    "//chrome/browser/ash/login:unit_tests",
    "//chrome/browser/ash/magic_boost:unit_tests",
    "//chrome/browser/ash/mahi:unit_tests",
    "//chrome/browser/ash/mahi/web_contents:unit_tests",
    "//chrome/browser/ash/mall:unit_tests",
    "//chrome/browser/ash/nearby:unit_tests",
    "//chrome/browser/ash/net:unit_tests",
    "//chrome/browser/ash/network_change_manager:unit_tests",
    "//chrome/browser/ash/note_taking:unit_tests",
    "//chrome/browser/ash/notifications:unit_tests",
    "//chrome/browser/ash/os_feedback:unit_tests",
    "//chrome/browser/ash/ownership:unit_tests",
    "//chrome/browser/ash/phonehub:unit_tests",
    "//chrome/browser/ash/platform_keys:unit_tests",
    "//chrome/browser/ash/policy/arc:unit_tests",
    "//chrome/browser/ash/policy/core:unit_tests",
    "//chrome/browser/ash/policy/dlp:unit_tests",
    "//chrome/browser/ash/policy/enrollment:unit_tests",
    "//chrome/browser/ash/policy/enrollment/psm:unit_tests",
    "//chrome/browser/ash/policy/external_data:unit_tests",
    "//chrome/browser/ash/policy/external_data/handlers:unit_tests",
    "//chrome/browser/ash/policy/handlers:unit_tests",
    "//chrome/browser/ash/policy/networking:unit_tests",
    "//chrome/browser/ash/policy/off_hours:unit_tests",
    "//chrome/browser/ash/policy/remote_commands:unit_tests",
    "//chrome/browser/ash/policy/remote_commands/crd:unit_tests",
    "//chrome/browser/ash/policy/reporting:unit_tests",
    "//chrome/browser/ash/policy/reporting/event_based_logs:unit_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting:unit_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/apps:unit_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/audio:unit_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/device_activity:unit_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/external_display:unit_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/fatal_crash:unit_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/kiosk_heartbeat:unit_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/network:unit_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/usb:unit_tests",
    "//chrome/browser/ash/policy/reporting/os_updates:unit_tests",
    "//chrome/browser/ash/policy/reporting/user_added_removed:unit_tests",
    "//chrome/browser/ash/policy/reporting/user_session_activity:unit_tests",
    "//chrome/browser/ash/policy/rsu:unit_tests",
    "//chrome/browser/ash/policy/scheduled_task_handler/test:unit_tests",
    "//chrome/browser/ash/policy/server_backed_state:unit_tests",
    "//chrome/browser/ash/policy/skyvault:unit_tests",
    "//chrome/browser/ash/policy/status_collector:unit_tests",
    "//chrome/browser/ash/policy/uploading:unit_tests",
    "//chrome/browser/ash/power:unit_tests",
    "//chrome/browser/ash/power/auto_screen_brightness:unit_tests",
    "//chrome/browser/ash/power/ml:unit_tests",
    "//chrome/browser/ash/power/ml/smart_dim:unit_tests",
    "//chrome/browser/ash/power/smart_charging:unit_tests",
    "//chrome/browser/ash/preferences:unit_tests",
    "//chrome/browser/ash/printing:unit_tests",
    "//chrome/browser/ash/printing/enterprise:unit_tests",
    "//chrome/browser/ash/printing/history:unit_tests",
    "//chrome/browser/ash/printing/oauth2:unit_tests",
    "//chrome/browser/ash/printing/print_management:unit_tests",
    "//chrome/browser/ash/release_notes:unit_tests",
    "//chrome/browser/ash/remote_apps:unit_tests",
    "//chrome/browser/ash/report_controller_initializer:unit_tests",
    "//chrome/browser/ash/sanitize:unit_tests",
    "//chrome/browser/ash/scanning:unit_tests",
    "//chrome/browser/ash/schedqos:unit_tests",
    "//chrome/browser/ash/secure_channel:unit_tests",
    "//chrome/browser/ash/settings:unit_tests",
    "//chrome/browser/ash/sharesheet:unit_tests",
    "//chrome/browser/ash/shimless_rma:unit_tests",
    "//chrome/browser/ash/smb_client:unit_tests",
    "//chrome/browser/ash/smb_client/discovery:unit_tests",
    "//chrome/browser/ash/sync:unit_tests",
    "//chrome/browser/ash/system:unit_tests",
    "//chrome/browser/ash/system_logs:unit_tests",
    "//chrome/browser/ash/system_web_apps:unit_tests",
    "//chrome/browser/ash/tether:unit_tests",
    "//chrome/browser/ash/tpm:unit_tests",
    "//chrome/browser/ash/usb:unit_tests",
    "//chrome/browser/ash/video_conference:unit_tests",
    "//chrome/browser/ash/wallpaper_handlers:unit_tests",
    "//chrome/browser/memory:unit_tests",
    "//chrome/browser/ui/views/select_file_dialog_extension:unit_tests",

    # TODO(crbug.com/410983208): This is for FakeOwnerSettingsService.
    # Split the target into two, one for the production modules and
    # the other for test only modules, then let this target depend on
    # the latter.
    "//chrome/browser/ash/ownership",
  ]

  if (is_cfm) {
    deps += [ "//chrome/browser/ash/chromebox_for_meetings:unit_tests" ]
  }

  data = [ "//chromeos/test/data/" ]

  # 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" ]
}

group("browser_tests") {
  testonly = true

  deps = [
    # Gather browser tests from subdirectories.
    "//chrome/browser/ash/accessibility:browser_tests",
    "//chrome/browser/ash/account_manager:browser_tests",
    "//chrome/browser/ash/ambient:browser_tests",
    "//chrome/browser/ash/annotator:browser_tests",
    "//chrome/browser/ash/app_list:browser_tests",
    "//chrome/browser/ash/app_list/app_service:browser_tests",
    "//chrome/browser/ash/app_list/arc:browser_tests",
    "//chrome/browser/ash/app_list/search:browser_tests",
    "//chrome/browser/ash/app_list/search/files:browser_tests",
    "//chrome/browser/ash/app_mode:browser_tests",
    "//chrome/browser/ash/app_restore:browser_tests",
    "//chrome/browser/ash/apps:browser_tests",
    "//chrome/browser/ash/apps/webapk:browser_tests",
    "//chrome/browser/ash/arc:browser_tests",
    "//chrome/browser/ash/audio:browser_tests",
    "//chrome/browser/ash/base:browser_tests",
    "//chrome/browser/ash/bluetooth:browser_tests",
    "//chrome/browser/ash/boca/on_task:browser_tests",
    "//chrome/browser/ash/boca/spotlight:browser_tests",
    "//chrome/browser/ash/bruschetta:browser_tests",
    "//chrome/browser/ash/child_accounts:browser_tests",
    "//chrome/browser/ash/crostini:browser_tests",
    "//chrome/browser/ash/customization:browser_tests",
    "//chrome/browser/ash/dbus:browser_tests",
    "//chrome/browser/ash/display:browser_tests",
    "//chrome/browser/ash/drive:browser_tests",
    "//chrome/browser/ash/eche_app:browser_tests",
    "//chrome/browser/ash/eol:browser_tests",
    "//chrome/browser/ash/extensions:browser_tests",
    "//chrome/browser/ash/extensions/autotest_private:browser_tests",
    "//chrome/browser/ash/extensions/file_manager:browser_tests",
    "//chrome/browser/ash/extensions/login_screen_ui:browser_tests",
    "//chrome/browser/ash/extensions/speech:browser_tests",
    "//chrome/browser/ash/extensions/users_private:browser_tests",
    "//chrome/browser/ash/file_manager:browser_tests",
    "//chrome/browser/ash/file_suggest:browser_tests",
    "//chrome/browser/ash/file_system_provider:browser_tests",
    "//chrome/browser/ash/floating_sso:browser_tests",
    "//chrome/browser/ash/frozen_update:browser_tests",
    "//chrome/browser/ash/geolocation:browser_tests",
    "//chrome/browser/ash/guest_os:browser_tests",
    "//chrome/browser/ash/input_device_settings:browser_tests",
    "//chrome/browser/ash/input_method:browser_tests",
    "//chrome/browser/ash/kcer:browser_tests",
    "//chrome/browser/ash/kerberos:browser_tests",
    "//chrome/browser/ash/locale:browser_tests",
    "//chrome/browser/ash/logging:browser_tests",
    "//chrome/browser/ash/login:browser_tests",
    "//chrome/browser/ash/magic_boost:browser_tests",
    "//chrome/browser/ash/mahi:browser_tests",
    "//chrome/browser/ash/mahi/web_contents:browser_tests",
    "//chrome/browser/ash/net:browser_tests",
    "//chrome/browser/ash/network_change_manager:browser_tests",
    "//chrome/browser/ash/note_taking:browser_tests",
    "//chrome/browser/ash/os_feedback:browser_tests",
    "//chrome/browser/ash/platform_keys:browser_tests",
    "//chrome/browser/ash/policy/affiliation:browser_tests",
    "//chrome/browser/ash/policy/arc:browser_tests",
    "//chrome/browser/ash/policy/core:browser_tests",
    "//chrome/browser/ash/policy/display:browser_tests",
    "//chrome/browser/ash/policy/dlp:browser_tests",
    "//chrome/browser/ash/policy/dlp/dialogs:browser_tests",
    "//chrome/browser/ash/policy/external_data:browser_tests",
    "//chrome/browser/ash/policy/handlers:browser_tests",
    "//chrome/browser/ash/policy/login:browser_tests",
    "//chrome/browser/ash/policy/networking:browser_tests",
    "//chrome/browser/ash/policy/remote_commands:browser_tests",
    "//chrome/browser/ash/policy/reporting/event_based_logs:browser_tests",
    "//chrome/browser/ash/policy/reporting/event_based_logs/event_observers:browser_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting:browser_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/apps:browser_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/audio:browser_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/device_activity:browser_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/external_display:browser_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/fatal_crash:browser_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/kiosk_heartbeat:browser_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/network:browser_tests",
    "//chrome/browser/ash/policy/reporting/metrics_reporting/usb:browser_tests",
    "//chrome/browser/ash/policy/reporting/os_updates:browser_tests",
    "//chrome/browser/ash/policy/reporting/user_added_removed:browser_tests",
    "//chrome/browser/ash/policy/reporting/user_session_activity:browser_tests",
    "//chrome/browser/ash/policy/skyvault:browser_tests",
    "//chrome/browser/ash/preferences:browser_tests",
    "//chrome/browser/ash/printing/print_management:browser_tests",
    "//chrome/browser/ash/privacy_hub:browser_tests",
    "//chrome/browser/ash/remote_apps:browser_tests",
    "//chrome/browser/ash/set_shape:browser_tests",
    "//chrome/browser/ash/smb_client:browser_tests",
    "//chrome/browser/ash/system:browser_tests",
    "//chrome/browser/ash/system_web_apps:browser_tests",
    "//chrome/browser/ash/test:browser_tests",
    "//chrome/browser/ash/video_conference:browser_tests",
    "//chrome/browser/ash/wallpaper:browser_tests",
  ]
}

if (is_chromeos_device) {
  group("integration_tests") {
    testonly = true

    deps = [
      "//chrome/browser/ash/accessibility:integration_tests",
      "//chrome/browser/ash/bluetooth:integration_tests",
      "//chrome/browser/ash/child_accounts:integration_tests",
      "//chrome/browser/ash/external_metrics:integration_tests",
      "//chrome/browser/ash/integration_tests",
      "//chrome/browser/ash/login:integration_tests",
      "//chrome/browser/ash/power/ml/smart_dim:integration_tests",
      "//chrome/browser/ash/scanning:integration_tests",
      "//chrome/browser/ash/system_web_apps:integration_tests",
    ]

    if (is_chrome_branded) {
      deps += [ "//chrome/browser/ash/arc:integration_tests" ]
    }
  }
} else {
  group("interactive_ui_tests") {
    testonly = true

    deps = [
      "//chrome/browser/ash/app_list:interactive_ui_tests",
      "//chrome/browser/ash/child_accounts:interactive_ui_tests",
      "//chrome/browser/ash/file_manager:interactive_ui_tests",
      "//chrome/browser/ash/growth:interactive_ui_tests",
      "//chrome/browser/ash/os_feedback:interactive_ui_tests",
      "//chrome/browser/ash/printing/print_management:interactive_ui_tests",
    ]
  }
}

# Entry point of fuzzer test build.
# All fuzzer test rules should be linked from here.
# If missing, specifically if the BUILD.gn contains only the fuzzer_test
# target, the BUILD.gn file may not be read.
group("fuzzers") {
  testonly = true

  deps = [
    "//chrome/browser/ash/extensions/file_manager:create_fnmatch_query_fuzzer",
    "//chrome/browser/ash/extensions/file_manager:search_by_pattern_fuzzer",
    "//chrome/browser/ash/printing:zeroconf_printer_detector_fuzzer",
    "//chrome/browser/ash/smb_client:smb_url_fuzzer",
  ]

  if (use_fuzzing_engine_with_lpm) {
    deps += [
      "//chrome/browser/ash/policy/fuzzer:policy_fuzzer",
      "//chrome/browser/ash/policy/remote_commands:policy_remote_commands_fuzzer",
      "//chrome/browser/ash/policy/reporting:policy_single_install_event_log_fuzzer",
    ]
  }
}
