blob: 160cf2f9c33d2190da6d06b1f57e2b6d3c2b830e [file] [log] [blame]
# Copyright 2021 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/config.gni")
import("//build/dart/dart_library.gni")
import("//build/fidl/fidl.gni")
import("//build/flutter/flutter_component.gni")
import("//build/flutter/test.gni")
import("//build/testing/flutter_driver.gni")
import("//src/lib/icu/tools/static_icu_data.gni")
declare_args() {
# Build arg that allows overriding the default set of application entries
# using '--args=ermine_app_entries="config/app_launch_entries.json"'
ermine_app_entries = "config/app_launch_entries.json"
# Whether or not to launch screensaver.
ermine_start_screensaver = false
# Whether or not to allow user feedback report from the device.
ermine_user_feedback_enabled = false
}
dart_library("lib") {
package_name = "ermine"
null_safe = true
entrypoints = [
"main.dart",
"test_main.dart",
]
services = [
"src/services/automator_service.dart",
"src/services/focus_service.dart",
"src/services/launch_service.dart",
"src/services/preferences_service.dart",
"src/services/presenter_service.dart",
"src/services/shortcuts_service.dart",
"src/services/startup_service.dart",
"src/services/settings/battery_watcher_service.dart",
"src/services/settings/brightness_service.dart",
"src/services/settings/channel_service.dart",
"src/services/settings/data_sharing_consent_service.dart",
"src/services/settings/datetime_service.dart",
"src/services/settings/keyboard_service.dart",
"src/services/settings/memory_watcher_service.dart",
"src/services/settings/network_address_service.dart",
"src/services/settings/task_service.dart",
"src/services/settings/timezone_service.dart",
"src/services/settings/volume_service.dart",
"src/services/settings/wifi_service.dart",
"src/services/user_feedback_service.dart",
]
states = [
"src/states/app_state.dart",
"src/states/app_state_impl.dart",
"src/states/settings_state.dart",
"src/states/settings_state_impl.dart",
"src/states/view_state.dart",
"src/states/view_state_impl.dart",
]
widgets = [
"src/widgets/app.dart",
"src/widgets/app_bar.dart",
"src/widgets/app_chips.dart",
"src/widgets/app_launcher.dart",
"src/widgets/app_switcher.dart",
"src/widgets/app_view.dart",
"src/widgets/launch_button.dart",
"src/widgets/overlays.dart",
"src/widgets/quick_settings.dart",
"src/widgets/scrim.dart",
"src/widgets/settings/about_settings.dart",
"src/widgets/settings/channel_settings.dart",
"src/widgets/settings/data_sharing_consent_settings.dart",
"src/widgets/settings/keyboard_settings.dart",
"src/widgets/settings/setting_details.dart",
"src/widgets/settings/shortcut_settings.dart",
"src/widgets/settings/timezone_settings.dart",
"src/widgets/user_feedback.dart",
"src/widgets/settings/wifi_settings.dart",
"src/widgets/side_bar.dart",
"src/widgets/status.dart",
"src/widgets/timeout.dart",
]
sources = entrypoints + services + states + widgets
deps = [
"//sdk/dart/fidl",
"//sdk/dart/fuchsia",
"//sdk/dart/fuchsia_inspect",
"//sdk/dart/fuchsia_internationalization_flutter",
"//sdk/dart/fuchsia_logger",
"//sdk/dart/fuchsia_scenic",
"//sdk/dart/fuchsia_scenic_flutter",
"//sdk/dart/fuchsia_services",
"//sdk/dart/zircon",
"//sdk/fidl/fuchsia.buildinfo:fuchsia.buildinfo_dart",
"//sdk/fidl/fuchsia.element:fuchsia.element_dart",
"//sdk/fidl/fuchsia.feedback:fuchsia.feedback_dart",
"//sdk/fidl/fuchsia.hardware.power.statecontrol:fuchsia.hardware.power.statecontrol_dart",
"//sdk/fidl/fuchsia.input:fuchsia.input_dart",
"//sdk/fidl/fuchsia.intl:fuchsia.intl_dart",
"//sdk/fidl/fuchsia.media:fuchsia.media_dart",
"//sdk/fidl/fuchsia.media.audio:fuchsia.media.audio_dart",
"//sdk/fidl/fuchsia.memory:fuchsia.memory_dart",
"//sdk/fidl/fuchsia.net.interfaces:fuchsia.net.interfaces_dart",
"//sdk/fidl/fuchsia.power.battery:fuchsia.power.battery_dart",
"//sdk/fidl/fuchsia.power.button:fuchsia.power.button_dart",
"//sdk/fidl/fuchsia.settings:fuchsia.settings_dart",
"//sdk/fidl/fuchsia.ssh:fuchsia.ssh_dart",
"//sdk/fidl/fuchsia.ui.activity:fuchsia.ui.activity_dart",
"//sdk/fidl/fuchsia.ui.app:fuchsia.ui.app_dart",
"//sdk/fidl/fuchsia.ui.brightness:fuchsia.ui.brightness_dart",
"//sdk/fidl/fuchsia.ui.focus:fuchsia.ui.focus_dart",
"//sdk/fidl/fuchsia.ui.input:fuchsia.ui.input_dart",
"//sdk/fidl/fuchsia.ui.shortcut:fuchsia.ui.shortcut_dart",
"//sdk/fidl/fuchsia.ui.views:fuchsia.ui.views_dart",
"//sdk/fidl/fuchsia.update:fuchsia.update_dart",
"//sdk/fidl/fuchsia.update.channelcontrol:fuchsia.update.channelcontrol_dart",
"//sdk/fidl/fuchsia.wlan.common:fuchsia.wlan.common_dart",
"//sdk/fidl/fuchsia.wlan.policy:fuchsia.wlan.policy_dart",
"//src/experiences/session_shells/ermine/fidl",
"//src/experiences/session_shells/ermine/internationalization",
"//src/experiences/session_shells/ermine/keyboard_shortcuts",
"//src/experiences/session_shells/ermine/utils:ermine_utils",
"//third_party/dart-pkg/git/flutter/packages/flutter",
"//third_party/dart-pkg/git/flutter/packages/flutter_driver",
"//third_party/dart-pkg/git/flutter/packages/flutter_localizations",
"//third_party/dart-pkg/git/flutter/packages/flutter_test",
"//third_party/dart-pkg/pub/async",
"//third_party/dart-pkg/pub/collection",
"//third_party/dart-pkg/pub/flutter_mobx",
"//third_party/dart-pkg/pub/intl",
"//third_party/dart-pkg/pub/mobx",
"//third_party/dart-pkg/pub/uuid",
"//third_party/dart-pkg/pub/vector_math",
]
}
flutter_component("component") {
if (flutter_driver_enabled) {
main_dart = "test_main.dart"
} else {
main_dart = "main.dart"
}
component_name = "ermine"
manifest = "meta/ermine.cml"
deps = [
":app_launch_entries_resource",
":lib",
":resources",
":time_zone_list",
]
if (ermine_user_feedback_enabled) {
deps += [ ":enable_user_feedback" ]
}
}
tz_ids_path = "${target_gen_dir}/tz_ids.txt"
static_icu_data("time_zone_list") {
command = "tz-ids"
output = tz_ids_path
# Put these time zones at the top for the convenience of Fuchsia developers.
fixed_order_ids = [
"America/Los_Angeles",
"America/New_York",
"Europe/Paris",
"Australia/Sydney",
]
fixed_order = string_join(",", fixed_order_ids)
command_args = [ "--fixed-order=${fixed_order}" ]
}
resource("app_launch_entries_resource") {
sources = [ ermine_app_entries ]
outputs = [ "data/app_launch_entries.json" ]
visibility = [ ":*" ]
}
preferences_path = "${target_gen_dir}/preferences.json"
generated_file("preferences") {
outputs = [ preferences_path ]
contents = {
screensaver = ermine_start_screensaver
}
output_conversion = "json"
}
resource("resources") {
sources = [
"config/keyboard_shortcuts.json",
rebase_path(preferences_path),
rebase_path(tz_ids_path),
rebase_path(
"//prebuilt/third_party/dart/${host_platform}/bin/resources/devtools/assets/fonts/MaterialIcons-Regular.otf"),
]
outputs = [ "data/{{source_file_part}}" ]
deps = [ ":preferences" ]
}
# With this JSON, user feedback will be enabled in Ermine.
resource("enable_user_feedback") {
sources = [ "config/enable_user_feedback" ]
outputs = [ "config/enable_user_feedback" ]
}
config_data("images") {
for_pkg = "ermine"
sources = rebase_path([
"images/Chromium-icon-2x.png",
"images/Default-icon-2x.png",
"images/Fuchsia-logo-2x.png",
"images/Linux-icon-2x.png",
"images/Settings-icon-2x.png",
"images/SimpleBrowser-icon-2x.png",
"images/SpinningSquare-icon-2x.png",
"images/Terminal-icon-2x.png",
])
outputs = [ "{{source_file_part}}" ]
}
flutter_test("ermine_unittests") {
null_safe = true
sources = [
"app_chips_test.dart",
"app_launcher_test.dart",
"app_widget_test.dart",
"overlays_widget_test.dart",
"quick_settings_widget_test.dart",
"side_bar_widget_test.dart",
]
deps = [
":lib",
"//sdk/dart/fuchsia_logger",
"//src/experiences/session_shells/ermine/internationalization",
"//src/experiences/session_shells/ermine/keyboard_shortcuts",
"//src/experiences/session_shells/ermine/utils:ermine_utils",
"//third_party/dart-pkg/git/flutter/packages/flutter",
"//third_party/dart-pkg/git/flutter/packages/flutter_test",
"//third_party/dart-pkg/pub/http",
"//third_party/dart-pkg/pub/intl",
"//third_party/dart-pkg/pub/mobx",
"//third_party/dart-pkg/pub/mockito",
"//third_party/dart-pkg/pub/test",
]
}