# Copyright 2022 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("//build/components.gni")
import("//build/config.gni")
import("//build/icu/icu_fuchsia_component.gni")
import("//build/icu/icu_fuchsia_package.gni")
import("//build/icu/icu_rustc_binary.gni")
import("//build/icu/icu_rustc_library.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//src/sys/core/build/core_shard.gni")
import("//third_party/cobalt/metrics_registry.gni")

group("service") {
  testonly = true
  deps = [
    ":bin",
    ":lib",
    ":setui_service",
    ":tests",
  ]
}

icu_rustc_library("lib") {
  name = "settings"
  with_unit_tests = true
  edition = "2021"

  icu_deps = [
    "//src/lib/icu_data/rust/icu_data",
    "//third_party/rust_crates:rust_icu_uenum",
    "//third_party/rust_crates:rust_icu_uloc",
  ]

  deps = [
    "storage_fidl:fuchsia.settings.storage_rust",
    "//sdk/fidl/fuchsia.camera3:fuchsia.camera3_rust",
    "//sdk/fidl/fuchsia.hardware.light:fuchsia.hardware.light_rust",
    "//sdk/fidl/fuchsia.hardware.power.statecontrol:fuchsia.hardware.power.statecontrol_rust",
    "//sdk/fidl/fuchsia.input:fuchsia.input_rust",
    "//sdk/fidl/fuchsia.intl:fuchsia.intl_rust",
    "//sdk/fidl/fuchsia.io:fuchsia.io_rust",
    "//sdk/fidl/fuchsia.media:fuchsia.media_rust",
    "//sdk/fidl/fuchsia.media.audio:fuchsia.media.audio_rust",
    "//sdk/fidl/fuchsia.media.sessions2:fuchsia.media.sessions2_rust",
    "//sdk/fidl/fuchsia.media.sounds:fuchsia.media.sounds_rust",
    "//sdk/fidl/fuchsia.recovery.policy:fuchsia.recovery.policy_rust",
    "//sdk/fidl/fuchsia.settings:fuchsia.settings_rust",
    "//sdk/fidl/fuchsia.settings.policy:fuchsia.settings.policy_rust",
    "//sdk/fidl/fuchsia.stash:fuchsia.stash_rust",
    "//sdk/fidl/fuchsia.ui.brightness:fuchsia.ui.brightness_rust",
    "//sdk/fidl/fuchsia.ui.input:fuchsia.ui.input_rust",
    "//sdk/fidl/fuchsia.ui.policy:fuchsia.ui.policy_rust",
    "//sdk/fidl/fuchsia.ui.types:fuchsia.ui.types_rust",
    "//src/lib/diagnostics/inspect/derive",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-fs",
    "//src/lib/trace/rust:trace",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/settings/inspect_utils:settings_inspect_utils",
    "//src/settings/storage:settings_storage",
    "//src/sys/lib/bitflags-serde-legacy",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:bitflags",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:glob",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:paste",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:tracing",
  ]

  test_configs = [
    "//build/config/rust:codegen_units_16",
    "//build/config/lto:no-lto",
  ]

  test_deps = [
    "//sdk/fidl/fuchsia.mem:fuchsia.mem_rust",
    "//sdk/fidl/fuchsia.stash:fuchsia.stash_rust",
    "//src/lib/diagnostics/testing/diagnostics-assertions/rust:diagnostics-assertions",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-sync",
    "//src/storage/lib/vfs/rust:vfs",
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:rand",
  ]

  sources = [
    "src/accessibility.rs",
    "src/accessibility/accessibility_controller.rs",
    "src/accessibility/accessibility_fidl_handler.rs",
    "src/accessibility/types.rs",
    "src/agent.rs",
    "src/agent/authority.rs",
    "src/agent/camera_watcher.rs",
    "src/agent/earcons.rs",
    "src/agent/earcons/agent.rs",
    "src/agent/earcons/bluetooth_handler.rs",
    "src/agent/earcons/sound_ids.rs",
    "src/agent/earcons/utils.rs",
    "src/agent/earcons/volume_change_handler.rs",
    "src/agent/inspect.rs",
    "src/agent/inspect/external_apis.rs",
    "src/agent/inspect/setting_proxy.rs",
    "src/agent/inspect/setting_values.rs",
    "src/agent/inspect/usage_counts.rs",
    "src/agent/media_buttons.rs",
    "src/agent/restore_agent.rs",
    "src/agent/storage_agent.rs",
    "src/audio.rs",
    "src/audio/audio_controller.rs",
    "src/audio/audio_default_settings.rs",
    "src/audio/audio_fidl_handler.rs",
    "src/audio/stream_volume_control.rs",
    "src/audio/types.rs",
    "src/audio/utils.rs",
    "src/base.rs",
    "src/clock.rs",
    "src/config.rs",
    "src/config/base.rs",
    "src/config/default_settings.rs",
    "src/display.rs",
    "src/display/display_configuration.rs",
    "src/display/display_controller.rs",
    "src/display/display_fidl_handler.rs",
    "src/display/types.rs",
    "src/do_not_disturb.rs",
    "src/do_not_disturb/do_not_disturb_controller.rs",
    "src/do_not_disturb/do_not_disturb_fidl_handler.rs",
    "src/do_not_disturb/types.rs",
    "src/event.rs",
    "src/factory_reset.rs",
    "src/factory_reset/factory_reset_controller.rs",
    "src/factory_reset/factory_reset_fidl_handler.rs",
    "src/factory_reset/types.rs",
    "src/handler.rs",
    "src/handler/base.rs",
    "src/handler/setting_handler.rs",
    "src/handler/setting_handler_factory_impl.rs",
    "src/handler/setting_proxy.rs",
    "src/handler/setting_proxy_inspect_info.rs",
    "src/ingress.rs",
    "src/ingress/fidl.rs",
    "src/ingress/request.rs",
    "src/ingress/watch.rs",
    "src/input.rs",
    "src/input/common.rs",
    "src/input/input_controller.rs",
    "src/input/input_device_configuration.rs",
    "src/input/input_fidl_handler.rs",
    "src/input/types.rs",
    "src/inspect.rs",
    "src/inspect/config_logger.rs",
    "src/inspect/listener_logger.rs",
    "src/inspect/utils.rs",
    "src/inspect/utils/enums.rs",
    "src/intl.rs",
    "src/intl/intl_controller.rs",
    "src/intl/intl_fidl_handler.rs",
    "src/intl/types.rs",
    "src/job.rs",
    "src/job/manager.rs",
    "src/job/source.rs",
    "src/keyboard.rs",
    "src/keyboard/keyboard_controller.rs",
    "src/keyboard/keyboard_fidl_handler.rs",
    "src/keyboard/types.rs",
    "src/lib.rs",
    "src/light.rs",
    "src/light/light_controller.rs",
    "src/light/light_fidl_handler.rs",
    "src/light/light_hardware_configuration.rs",
    "src/light/types.rs",
    "src/message.rs",
    "src/message/action_fuse.rs",
    "src/message/base.rs",
    "src/message/beacon.rs",
    "src/message/delegate.rs",
    "src/message/message_client.rs",
    "src/message/message_hub.rs",
    "src/message/messenger.rs",
    "src/message/receptor.rs",
    "src/migration.rs",
    "src/night_mode.rs",
    "src/night_mode/night_mode_controller.rs",
    "src/night_mode/night_mode_fidl_handler.rs",
    "src/night_mode/types.rs",
    "src/privacy.rs",
    "src/privacy/privacy_controller.rs",
    "src/privacy/privacy_fidl_handler.rs",
    "src/privacy/types.rs",
    "src/service.rs",
    "src/service_context.rs",
    "src/setup.rs",
    "src/setup/setup_controller.rs",
    "src/setup/setup_fidl_handler.rs",
    "src/setup/types.rs",
    "src/storage.rs",
    "src/storage_migrations.rs",
    "src/storage_migrations/v1653667208_light_migration.rs",
    "src/storage_migrations/v1653667210_light_migration_teardown.rs",
    "src/tests.rs",
    "src/tests/accessibility_tests.rs",
    "src/tests/agent_tests.rs",
    "src/tests/audio_tests.rs",
    "src/tests/camera_watcher_agent_tests.rs",
    "src/tests/display_tests.rs",
    "src/tests/environment_tests.rs",
    "src/tests/event_tests.rs",
    "src/tests/factory_reset_tests.rs",
    "src/tests/fakes.rs",
    "src/tests/fakes/audio_core_service.rs",
    "src/tests/fakes/base.rs",
    "src/tests/fakes/brightness_service.rs",
    "src/tests/fakes/camera3_service.rs",
    "src/tests/fakes/hardware_light_service.rs",
    "src/tests/fakes/input_device_registry_service.rs",
    "src/tests/fakes/recovery_policy_service.rs",
    "src/tests/fakes/service_registry.rs",
    "src/tests/helpers.rs",
    "src/tests/input_test_environment.rs",
    "src/tests/input_tests.rs",
    "src/tests/intl_tests.rs",
    "src/tests/keyboard_tests.rs",
    "src/tests/media_buttons_agent_tests.rs",
    "src/tests/message_tests.rs",
    "src/tests/message_utils.rs",
    "src/tests/privacy_tests.rs",
    "src/tests/restore_agent_tests.rs",
    "src/tests/scaffold.rs",
    "src/tests/scaffold/event.rs",
    "src/tests/scaffold/workload.rs",
    "src/tests/service_configuration_tests.rs",
    "src/tests/setting_handler_tests.rs",
    "src/tests/setting_proxy_tests.rs",
    "src/tests/storage_agent_tests.rs",
    "src/tests/stream_volume_tests.rs",
    "src/tests/test_failure_utils.rs",
    "src/trace.rs",
  ]

  # TODO(https://fxbug.dev/42166874): Split this library up to be less monolithic.
  # If building this massive crate runs into OOM issues on RBE, `disable_rbe = true`

  configs -= [ "//build/config/rust/lints:allow_unused_results" ]
  configs += [ "//build/config/rust/lints:clippy_warn_all" ]
}

fuchsia_unittest_package("setui_service_tests") {
  component_name = "settings_lib_test"
  manifest = "meta/settings_lib_test.cml"
  deps = [
    ":lib_test",
    ":setui_service_tests_resources",
    ":tests_config",
    "//src/intl:icudtl",
  ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
}

resource("setui_service_tests_resources") {
  sources = [ "src/tests/testdata/test_store_data.store" ]
  outputs = [ "data/{{source_file_part}}" ]
}

resource("tests_config") {
  sources = [
    "src/tests/testdata/agent_configuration.json",
    "src/tests/testdata/audio_config_data.json",
    "src/tests/testdata/bluetooth-connected.wav",
    "src/tests/testdata/bluetooth-disconnected.wav",
    "src/tests/testdata/display_configuration.json",
    "src/tests/testdata/fake_config_data.json",
    "src/tests/testdata/fake_invalid_config_data.json",
    "src/tests/testdata/interface_configuration.json",
    "src/tests/testdata/service_flags.json",
    "src/tests/testdata/volume-changed.wav",
    "src/tests/testdata/volume-max.wav",
  ]
  outputs = [ "setui_service_tests_config_data/{{source_file_part}}" ]
}

icu_rustc_binary("bin") {
  output_name = "setui_service"
  with_unit_tests = true

  edition = "2021"

  icu_deps = [ ":lib" ]

  deps = [
    "//sdk/fidl/fuchsia.stash:fuchsia.stash_rust",
    "//src/lib/diagnostics/inspect/runtime/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-fs",
    "//src/settings/storage:settings_storage",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:tracing",
  ]

  test_deps = [
    "//sdk/fidl/fuchsia.settings:fuchsia.settings_rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-sync",
    "//src/lib/zircon/rust:fuchsia-zircon",
  ]

  sources = [ "src/main.rs" ]

  configs -= [ "//build/config/rust/lints:allow_unused_results" ]
  configs += [ "//build/config/rust/lints:clippy_warn_all" ]
}

icu_fuchsia_component("setui_service_v2") {
  component_name = "setui_service"
  manifest = "meta/setui_service.cml"
  icu_deps = [ ":bin" ]
}

icu_fuchsia_component("setui_service_with_camera") {
  component_name = "setui_service_with_camera"
  manifest = "meta/setui_service_with_camera.cml"
  icu_deps = [ ":bin" ]
}

icu_fuchsia_package("setui_service") {
  visibility = [
    ":*",
    "//:developer_base_packages",
    "//:legacy_base_packages",
    "//build/icu:*",
    "//build/images/recovery:*",
    "//bundles/assembly/*",
    "//src/developer/forensics/feedback/tests/*",
    "//vendor/google/*",
  ]
  icu_deps = [
    ":setui_service_v2",
    ":setui_service_with_camera",
    "//src/lib/icu:icudtl",
  ]
}

# Core shard for products that don't have a camera.
# TODO(https://fxbug.dev/42069176): Make into an empty target on migration.
group("setui_service_core_shard") {
  visibility = [
    ":*",
    "//build/images/fuchsia:*",
    "//build/images/recovery:*",
    "//bundles/assembly_input_groups:*",
    "//vendor/google/*",
  ]
  public_deps = [ ":setui_service_core_shard_migration" ]
}
core_shard("setui_service_core_shard_migration") {
  visibility = []
  visibility = [ ":*" ]
  shard_file = "meta/setui_service.core_shard.cml"
}

rustc_binary("setui-config-test") {
  testonly = true
  edition = "2021"
  output_name = "setui_config_test"
  deps = [
    ":lib",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:argh",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:tracing",
  ]

  source_root = "src/setui_config_test.rs"

  sources = [ "src/setui_config_test.rs" ]

  configs -= [ "//build/config/rust/lints:allow_unused_results" ]
}

resource("sample-setui-config-test-resources") {
  sources = [
    "src/tests/testdata/agent_configuration.json",
    "src/tests/testdata/audio_policy_configuration.json",
    "src/tests/testdata/display_configuration.json",
    "src/tests/testdata/input_device_configuration.json",
    "src/tests/testdata/interface_configuration.json",
    "src/tests/testdata/light_hardware_configuration.json",
    "src/tests/testdata/service_flags.json",
  ]
  outputs = [ "data/{{source_file_part}}" ]
}

fuchsia_unittest_component("sample-setui-config-test-all-args") {
  manifest = "meta/sample_setui_config_test_all_args.cml"
  deps = [ ":setui-config-test" ]
}

fuchsia_unittest_component("sample-setui-config-test-multiple-args") {
  manifest = "meta/sample_setui_config_test_multiple_args.cml"
  deps = [ ":setui-config-test" ]
}

fuchsia_unittest_component("sample-setui-config-test-no-args") {
  manifest = "meta/sample_setui_config_test_no_args.cml"
  deps = [ ":setui-config-test" ]
}

fuchsia_unittest_component("sample-setui-config-test-short-args") {
  manifest = "meta/sample_setui_config_test_short_args.cml"
  deps = [ ":setui-config-test" ]
}

fuchsia_test_package("sample-setui-config-test") {
  test_components = [
    ":sample-setui-config-test-all-args",
    ":sample-setui-config-test-multiple-args",
    ":sample-setui-config-test-no-args",
    ":sample-setui-config-test-short-args",
  ]
  deps = [ ":sample-setui-config-test-resources" ]
}

group("setui_service_with_camera_package") {
  deps = [ ":setui_service" ]
}

group("tests") {
  testonly = true
  deps = [
    ":sample-setui-config-test",
    ":setui-config-test",
    ":setui_service_tests",
    "integration_tests",
  ]
}
