# Copyright 2021 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("//build/config/chromeos/ui_mode.gni")
import("//testing/test.gni")

assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //ash")

# To add a unit test to this target, make a "unit_test" source_set in your
# component and add a reference here.
test("ash_content_unittests") {
  sources = [
    "ash_content_test_suite.cc",
    "ash_content_test_suite.h",
    "run_all_unittests.cc",
  ]

  deps = [
    "//ash/content/scanning:unit_tests",
    "//ash/content/shimless_rma/mojom:unit_tests",
    "//ash/content/shortcut_customization_ui/backend:unit_tests",
    "//base",
    "//base/test:test_support",
    "//build:chromeos_buildflags",
    "//ui/base:base",
  ]

  data_deps = [
    "//chromeos/strings:chromeos_test_strings",
    "//ui/resources:ui_test_pak_data",
  ]
}

# When adding new WebUI, add your closure_compile target here. Otherwise you
# won't get type checking.
group("closure_compile") {
  testonly = true
  deps = [
    "//ash/content/os_feedback_ui:closure_compile",
    "//ash/content/scanning:closure_compile",
    "//ash/content/shimless_rma:closure_compile",
    "//ash/content/shortcut_customization_ui:closure_compile",
  ]

  if (!is_official_build) {
    deps += [ "//ash/content/file_manager/resources:closure_compile" ]
  }
}
