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

import("//products/core.gni")

core_realm_package_name = "core-workstation"
core_realm_shards += [
  "//src/developer/build_info:build_info_core_shard",
  "//src/developer/memory/monitor:memory_monitor_core_shard",
  "//src/identity/bin/account:account-core-shard",
  "//src/media/audio/drivers/configurator:configurator_provider_shard",
  "//src/power/battery-manager:battery-manager-core-shard",
  "//src/session/bin/session_manager:workstation_core_shard",
]

base_package_labels += [
  "//garnet/packages/config:shortcut",
  "//src/dart:dart_jit",
  "//src/dart:dart_jit_product",
  "//src/developer/memory/buckets:workstation_memory_monitor_config",
  "//src/developer/ssh-key-manager",
  "//src/fonts",
  "//src/fonts:open-fonts-collection",
  "//src/graphics/bin/vulkan_loader",
  "//src/identity/bin:password_authenticator_only",
  "//src/intl/intl_services/config:sysmgr",
  "//src/intl/intl_services:pkg",
  "//src/media/audio/bundles:services",
  "//src/media/audio/drivers/configurator",
  "//src/power:battery",
  "//src/session/bundles:session_manager",
  "//src/sys/activity",
  "//src/ui/a11y",
  "//src/ui/bin/brightness_manager",
  "//src/ui/bin/screensaver",
  "//src/ui/bin/shortcut",
  "//third_party/openssh-portable:openssh-tools",

  # TODO(fxbug.dev/82822): Remove after out-of-tree tests migrate to
  # text_manager.
  "//src/ui/bin/text:ime_service",
  "//src/ui/bin/text:text_manager",
]
base_package_labels -= [ "//src/intl/intl_services/config:sysmgr_small" ]

# Add build type config data
base_package_labels += [ "//src/fonts:build_type_eng" ]

# Add Linux runner
base_package_labels += [ "//src/virtualization/bin/linux_runner" ]

# Disable reporting DEBUG metrics in Cobalt
base_package_labels -= [ "//src/cobalt/bin/app:config" ]
base_package_labels += [ "//src/cobalt/bin/app:user_config" ]

# Explicitly prefer wired networking on workstation
base_package_labels -=
    [ "//src/connectivity/management:network_config_default" ]
base_package_labels +=
    [ "//src/connectivity/management:network_config_prefer_wired" ]

cache_package_labels += [
  "//src/chromium:web_engine",
  "//src/experiences/bin/settings/license:license_settings",
  "//src/experiences/bin/simple_browser:simple-browser",
  "//src/experiences/session_shells/ermine",
  "//src/experiences/session_shells/ermine/session:session_config",
  "//src/dart:dart_jit",
  "//src/dart:dart_jit_product",
  "//src/fonts",
  "//src/flutter",
  "//src/media/playback/bundles:services",
  "//src/media/playback/bundles:audio_consumer_config",
  "//src/session",
  "//src/ui/bin/terminal",
  "//src/ui/scenic",
]

universe_package_labels += [
  "//examples/fidl:tests",

  "//src/lib/ui/carnelian:examples",
  "//src/ui/examples/bouncing_ball",
  "//src/ui/examples/spinning_square_view",
  "//src/virtualization/bin",

  "//src/proc/bundles:examples",
]

product_bootfs_labels += [
  # hide the virtual console on boot
  "//products/kernel_cmdline:virtcon.hide-on-boot",

  # enable boot animation
  "//products/kernel_cmdline:virtcon.boot-animation--true",

  # enable DPI based scale factors, 2x above 240 DPI, 3x above 360, etc.
  "//products/kernel_cmdline:virtcon.dpi--240-360-480",

  # enable double buffered output
  "//products/kernel_cmdline:virtcon.buffer-count--2",
]

# End to end (E2E) product test runtime dependencies. Must be added to cache,
# not universe, so the test can run on bots where there is no package server.
#
# TODO(fxbug.dev/9892): Support a package server on bots so this can be added to
# universe like the tests.
cache_package_labels += [
  # Used for Chromium tests for example:
  #    //src/chromium/web_runner_tests:tests
  "//examples/intl/manager:intl_property_manager",

  "//src/tests/end_to_end/bundles:end_to_end_deps",
  "//src/tests/end_to_end/bundles:end_to_end_deps",
  "//src/experiences/tests/e2e:end_to_end_deps",
  "//src/experiences/tests/performance:performance_deps",

  # CFv2 test framework.
  "//src/sys/run_test_suite",
]

# E2E Product Tests. They don't produce fuchsia packages, but host executables
# used by the tests.
host_labels += [
  "//src/experiences/tests/e2e:test",
  "//src/experiences/tests/performance:test",
  "//src/tests/end_to_end/copy_files:test",
]

universe_package_labels += [
  # E2E Product Tests. They don't produce fuchsia packages, but host
  # executables, and must just be included somewhere in the build configuration
  # of the product.
  "//src/tests/end_to_end/screen_is_not_black",
  "//src/tests/end_to_end/sl4f:test",
  "//src/tests/end_to_end/time_sync:test",

  # Only for products in which Flutter is supported.
  "//src/tests/intl/timezone:tests-for-flutter",

  "//src/fonts:open-fonts",
]

# Add SDK tools set to "cache" so these tools are automatically available in
# QEMU images generated for the SDK, but in cache, so they can be updated.
cache_package_labels += [ "//sdk/bundles:tools" ]

core_realm_shards += [ "//src/media/codec:codec_factory_shard" ]

# Enable the live_usb component.
with_live_usb = true
product_bootfs_labels += [ "//src/sys/live_usb:live_usb_is_system" ]

# Enable input injection for testing through `fuchsia.input.injection.InputDeviceRegistry`.
use_modern_input_injection = true

# Create an additional (initially empty) account partition in FVM to enable
# user data protection.
include_account_in_fvm = true
