# Copyright 2017 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.

group("topaz") {
  testonly = true
  public_deps = [
    "//third_party/dart-pkg/git/flutter/examples/flutter_gallery",
    "//topaz:tests",
    "//topaz/bin/fidlgen_dart:install(//build/toolchain:host_x64)",
    "//topaz/examples/fidl/echo_client_async_dart",
    "//topaz/examples/fidl/echo_server_async_dart",
    "//topaz/examples/mediaplayer/mediaplayer_flutter",
    "//topaz/examples/ui/button_flutter",
    "//topaz/lib/story_shell/examples/example_manual_relationships",
    "//topaz/public/dart/fuchsia_inspect/codelab:bin",
    "//topaz/public/dart/fuchsia_inspect/examples/inspect_mod",
    "//topaz/public/dart/fuchsia_modular/examples/fibonacci_agent",
    "//topaz/public/dart/fuchsia_modular/examples/multilevel_mod",
    "//topaz/public/dart/fuchsia_modular/examples/shapes_mod",
    "//topaz/public/dart/fuchsia_modular/examples/slider_mod",
    "//topaz/public/dart/fuchsia_services/examples/mind_reader/bin:mind_reader_dart",
    "//topaz/public/dart/fuchsia_webview_flutter/examples/webview_mod",
    "//topaz/public/sdk",
    "//topaz/runtime/dart",
    "//topaz/runtime/dart_runner:dart_aot_product_runner",
    "//topaz/runtime/dart_runner:dart_aot_runner",
    "//topaz/runtime/dart_runner:dart_jit_product_runner",
    "//topaz/runtime/dart_runner:dart_jit_runner",
    "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_aot",
    "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_jit",
    "//topaz/runtime/dart_runner/examples/hello_app_dart:hello_app_dart_aot",
    "//topaz/runtime/dart_runner/examples/hello_app_dart:hello_app_dart_jit",
    "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_aot",
    "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_aot_product",
    "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_debug",
    "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_jit",
    "//topaz/runtime/dart_runner/examples/hello_dart:hello_dart_jit_product",
    "//topaz/shell/story_shell_labs",
    "//topaz/tests/benchmarks:all",
    "//topaz/tools/doc_checker:tests(//build/toolchain:host_x64)",
    "//topaz/tools/doc_checker(//build/toolchain:host_x64)",
  ]
}

group("tests") {
  testonly = true

  # TODO(fxb/41505): Temporarily disable flutter_tester tests on mac hosts.
  _flutter_tester_tests = []
  if (host_os != "mac") {
    _flutter_tester_tests += [
      "//topaz/public/dart/fuchsia_webview_flutter:fuchsia_webview_flutter_unittests($host_toolchain)",
      "//topaz/public/dart/widgets:dart_widget_tests($host_toolchain)",
      "//topaz/examples/test/flutter_widget_test($host_toolchain)",
      "//topaz/public/dart/fuchsia_internationalization_flutter:tests($host_toolchain)",
      "//topaz/public/dart/fuchsia_modular:fuchsia_modular_package_unittests($host_toolchain)",
      "//topaz/public/dart/fuchsia_scenic_flutter:fuchsia_scenic_flutter_unittests($host_toolchain)",
      "//topaz/public/dart/fuchsia_services:fuchsia_services_package_unittests($host_toolchain)",
      "//topaz/public/dart/fuchsia_inspect_flutter:inspect_flutter_test($host_toolchain)",
      "//topaz/public/dart/story_shell_labs:layout_unittests($host_toolchain)",
      "//topaz/lib/setui/common:lib_setui_common_test($host_toolchain)",
      "//topaz/lib/setui/flutter:lib_setui_flutter_test($host_toolchain)",
      "//topaz/lib/tiler:tiler_unittests($host_toolchain)",
      "//topaz/public/dart/fuchsia_inspect_flutter/examples/torus15:torus15_flutter_test($host_toolchain)",
    ]
  }

  public_deps = [
                  # TODO: This target should just aggregate the top-level directories and
                  # most of these dependencies should be in those subdirectories.
                  "//garnet/packages:garnet",
                  "//garnet/packages/testing:run_test_component",
                  "//garnet/packages/tests:scenic",
                  "//garnet/packages/tools:scenic",
                  "//src/modular/bundles:framework",
                  "//src/modular/bundles:tools",
                  "//src/modular/bundles:integration_testing",
                  "//src/fonts",
                  "//topaz/bin/crasher_dart",
                  "//topaz/bin/crasher_flutter",
                  "//topaz/bin/dart_fidl_json/test:dart_fidl_json_test($host_toolchain)",
                  "//topaz/bin/fidl_bindings_test/server:fidl_bindings_test_server",
                  "//topaz/bin/fidl_bindings_test/test:fidl_bindings_test",
                  "//topaz/bin/fidl_compatibility_test:fidl_compatibility_test_topaz",
                  "//topaz/bin/fidl_compatibility_test/dart:fidl_dart_compatibility_test_server",
                  "//topaz/bin/fidlgen_dart:fidlgen_dart_backend_test($host_toolchain)",
                  "//topaz/bin/flutter_screencap_test",
                  "//topaz/bin/flutter_screencap_test:flutter_screencap_test_app",
                  "//topaz/bin/ui/benchmarks/image_grid_flutter",
                  "//topaz/examples/fidl/echo_client_async_dart",
                  "//topaz/examples/fidl/echo_server_async_dart",
                  "//topaz/examples/test/driver_example_mod",
                  "//topaz/examples/test/driver_example_mod:driver_example_mod_tests",
                  "//topaz/lib/story_shell/examples/story_shell_test:key_listener_device_tests",
                  "//topaz/public/dart-pkg/zircon:dart_zircon_test",
                  "//topaz/public/dart/composition_delegate:composition_delegate_tests($host_toolchain)",
                  "//topaz/public/dart/fuchsia_inspect:fuchsia_inspect_package_unittests($host_toolchain)",
                  "//topaz/public/dart/fuchsia_inspect/examples/inspect_mod",
                  "//topaz/public/dart/fuchsia_inspect/codelab:tests",

                  # TODO(fxb/38305): Re-enable test when unblocked and inspect paths are corrected
                  # "//topaz/public/dart/fuchsia_inspect/examples/inspect_mod:inspect_mod_test",
                  "//topaz/public/dart/fuchsia_inspect/test/inspect_flutter_integration_tester",

                  # TODO(fxb/38305): Re-enable test when unblocked and inspect paths are corrected
                  # "//topaz/public/dart/fuchsia_inspect/test/inspect_flutter_integration_tester:inspect_dart_integration_test_driver",
                  "//topaz/public/dart/fuchsia_inspect/test/integration:dart_inspect_vmo_test",
                  "//topaz/public/dart/fuchsia_inspect/test/integration:dart_inspect_vmo_test_writer",
                  "//topaz/public/dart/fuchsia_inspect_flutter/examples/torus15",
                  "//topaz/public/dart/fuchsia_inspect_flutter/examples/torus15:torus15_dart_test",
                  "//topaz/public/dart/fuchsia_logger:fuchsia_logger_package_unittests($host_toolchain)",
                  "//topaz/public/dart/fuchsia_modular:fuchsia_modular_package_integration_tests",
                  "//topaz/public/dart/fuchsia_modular/examples/slider_mod",
                  "//topaz/public/dart/fuchsia_modular/examples/slider_mod:slider_mod_tests",
                  "//topaz/public/dart/fuchsia_modular_testing:fuchsia_modular_testing_package_integration_tests",
                  "//topaz/public/dart/fuchsia_services:fuchsia_services_foo_test_server",
                  "//topaz/public/dart/fuchsia_services:fuchsia_services_package_integration_tests",
                  "//topaz/public/dart/fuchsia_vfs:fuchsia_vfs_package_unittests",
                  "//topaz/public/dart/zircon:test_extract_zircon_constants($host_toolchain)",
                  "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_test",
                  "//topaz/runtime/dart_runner/integration:dart_aot_runner_test",
                  "//topaz/runtime/dart_runner/integration:dart_jit_runner_test",
                  "//topaz/tests/fidl-changes",
                  "//topaz/tests/fidl-dangerous-identifiers",
                ] + _flutter_tester_tests
}

group("deprecated_shell_allowlist") {
  #  ________  _________  ________  ________
  # |\   ____\|\___   ___\\   __  \|\   __  \
  # \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
  #  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
  #   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
  #     ____\_\  \   \ \__\ \ \_______\ \__\
  #    |\_________\   \|__|  \|_______|\|__|
  #    \|_________|
  # This is an allowlist of packages that have components manifests that include
  # the "deprecated-shell" feature. Do not add to this list. If the manifest
  # does not otherwise include the feature you need, please file a feature
  # request for that fine-grained feature to help us support least-privileged
  # components.
  visibility = [
    "//topaz/tests/benchmarks/input_latency:topaz_input_latency_benchmarks",
  ]
}

group("rootjob_svc_allowlist") {
  #  ________  _________  ________  ________
  # |\   ____\|\___   ___\\   __  \|\   __  \
  # \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
  #  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
  #   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
  #     ____\_\  \   \ \__\ \ \_______\ \__\
  #    |\_________\   \|__|  \|_______|\|__|
  #    \|_________|
  # This is an allowlist of packages that have components manifests that include
  # the "fuchsia.boot.RootJob" service. This is a highly privileged service that vends
  # out a very powerful capability. Do not add yourself to this unless this is the only
  # way to accomplish your goal and you have talked to the security team about this.
  visibility = [
    "//topaz/tests/benchmarks/input_latency:topaz_input_latency_benchmarks",
  ]
}
