# Copyright 2020 The Chromium Authors
# 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("//extensions/buildflags/buildflags.gni")
assert(!is_android)
source_set("app_service") {
sources = [
"app_icon_source.cc",
"app_icon_source.h",
"app_service_proxy.h",
"app_service_proxy_factory.cc",
"app_service_proxy_factory.h",
"app_service_proxy_forward.h",
"browser_app_launcher.cc",
"browser_app_launcher.h",
"intent_util.cc",
"intent_util.h",
"launch_result_type.cc",
"launch_result_type.h",
"launch_utils.cc",
"launch_utils.h",
"metrics/app_service_metrics.cc",
"metrics/app_service_metrics.h",
"package_id_util.cc",
"package_id_util.h",
"paused_apps.cc",
"paused_apps.h",
"policy_util.cc",
"policy_util.h",
"publishers/app_publisher.cc",
"publishers/app_publisher.h",
"publishers/extension_apps_enable_flow.cc",
"publishers/extension_apps_enable_flow.h",
"publishers/extension_apps_util.cc",
"publishers/extension_apps_util.h",
"web_contents_app_id_utils.cc",
"web_contents_app_id_utils.h",
]
configs += [ "//build/config/compiler:wexit_time_destructors" ]
public_deps = [
":constants",
"//chrome/browser:browser_public_dependencies",
]
deps = [
"//base",
"//chrome/app/theme:chrome_unscaled_resources",
"//chrome/browser/apps/app_service/app_icon",
"//chrome/browser/apps/app_service/app_icon:util",
"//chrome/browser/profiles",
"//chrome/browser/profiles:profile",
"//chrome/browser/resources:app_icon_resources",
"//chrome/browser/sync",
"//chrome/browser/ui:browser_navigator_params_headers",
"//chrome/browser/ui/tabs:tab_enums",
"//chrome/browser/web_applications",
"//components/app_constants",
"//components/crx_file",
"//components/keyed_service/content",
"//components/services/app_service",
"//components/web_package",
"//components/webapps/common",
]
# TODO(crbug.com/40251079): Remove circular dependencies. Possibly flip
# dependency direction so AppService doesn't depend on extensions
# (crbug.com/1402146).
allow_circular_includes_from = []
if (enable_extensions) {
deps += [
"//chrome/browser/extensions",
"//chrome/browser/web_applications/extensions",
"//extensions/browser",
"//extensions/common",
]
allow_circular_includes_from += [
"//chrome/browser/extensions",
"//chrome/browser/web_applications/extensions",
]
}
if (is_chromeos) {
sources += [
"app_notifications.cc",
"app_notifications.h",
"extension_apps_utils.cc",
"extension_apps_utils.h",
"media_requests.cc",
"media_requests.h",
"menu_item_constants.h",
"webapk/webapk_utils.cc",
"webapk/webapk_utils.h",
]
deps += [
"//ash/webui/projector_app/public/cpp",
"//chrome/browser/apps/app_service/app_install",
"//chrome/browser/apps/browser_instance",
"//chrome/browser/chromeos/arc",
"//chromeos/crosapi/mojom",
"//chromeos/startup",
"//components/webapk:proto",
"//third_party/smhasher:murmurhash2",
"//ui/wm/public",
]
# Needed only to allow circular includes.
deps += [ "//chrome/browser/chromeos/app_mode" ]
allow_circular_includes_from += [
"//chrome/browser/chromeos/app_mode",
"//chrome/browser/chromeos/arc",
]
}
if (is_chromeos_ash) {
sources += [
"app_service_proxy_ash.cc",
"app_service_proxy_ash.h",
"app_shortcut_item.cc",
"app_shortcut_item.h",
"file_utils.cc",
"file_utils.h",
"instance_registry_updater.cc",
"instance_registry_updater.h",
"menu_util.cc",
"menu_util.h",
"metrics/app_discovery_metrics.cc",
"metrics/app_discovery_metrics.h",
"metrics/app_platform_input_metrics.cc",
"metrics/app_platform_input_metrics.h",
"metrics/app_platform_metrics.cc",
"metrics/app_platform_metrics.h",
"metrics/app_platform_metrics_service.cc",
"metrics/app_platform_metrics_service.h",
"metrics/app_platform_metrics_utils.cc",
"metrics/app_platform_metrics_utils.h",
"metrics/browser_to_tab_list.cc",
"metrics/browser_to_tab_list.h",
"metrics/shortcut_metrics.cc",
"metrics/shortcut_metrics.h",
"metrics/website_metrics.cc",
"metrics/website_metrics.h",
"promise_apps/promise_app.cc",
"promise_apps/promise_app.h",
"promise_apps/promise_app_almanac_connector.cc",
"promise_apps/promise_app_almanac_connector.h",
"promise_apps/promise_app_icon_cache.cc",
"promise_apps/promise_app_icon_cache.h",
"promise_apps/promise_app_metrics.cc",
"promise_apps/promise_app_metrics.h",
"promise_apps/promise_app_registry_cache.cc",
"promise_apps/promise_app_registry_cache.h",
"promise_apps/promise_app_service.cc",
"promise_apps/promise_app_service.h",
"promise_apps/promise_app_update.cc",
"promise_apps/promise_app_update.h",
"promise_apps/promise_app_utils.cc",
"promise_apps/promise_app_utils.h",
"promise_apps/promise_app_web_apps_utils.cc",
"promise_apps/promise_app_web_apps_utils.h",
"promise_apps/promise_app_wrapper.cc",
"promise_apps/promise_app_wrapper.h",
"publishers/arc_apps.cc",
"publishers/arc_apps.h",
"publishers/arc_apps_factory.cc",
"publishers/arc_apps_factory.h",
"publishers/borealis_apps.cc",
"publishers/borealis_apps.h",
"publishers/bruschetta_apps.cc",
"publishers/bruschetta_apps.h",
"publishers/built_in_chromeos_apps.cc",
"publishers/built_in_chromeos_apps.h",
"publishers/crostini_apps.cc",
"publishers/crostini_apps.h",
"publishers/extension_apps_chromeos.cc",
"publishers/extension_apps_chromeos.h",
"publishers/guest_os_apps.cc",
"publishers/guest_os_apps.h",
"publishers/plugin_vm_apps.cc",
"publishers/plugin_vm_apps.h",
"publishers/remote_apps.cc",
"publishers/remote_apps.h",
"publishers/standalone_browser_apps.cc",
"publishers/standalone_browser_apps.h",
"publishers/standalone_browser_extension_apps.cc",
"publishers/standalone_browser_extension_apps.h",
"publishers/standalone_browser_extension_apps_factory.cc",
"publishers/standalone_browser_extension_apps_factory.h",
"publishers/web_apps_crosapi.cc",
"publishers/web_apps_crosapi.h",
"publishers/web_apps_crosapi_factory.cc",
"publishers/web_apps_crosapi_factory.h",
"subscriber_crosapi.cc",
"subscriber_crosapi.h",
"subscriber_crosapi_factory.cc",
"subscriber_crosapi_factory.h",
"uninstall_dialog.cc",
"uninstall_dialog.h",
"webapk/webapk_install_queue.cc",
"webapk/webapk_install_queue.h",
"webapk/webapk_install_task.cc",
"webapk/webapk_install_task.h",
"webapk/webapk_manager.cc",
"webapk/webapk_manager.h",
"webapk/webapk_metrics.cc",
"webapk/webapk_metrics.h",
"webapk/webapk_prefs.cc",
"webapk/webapk_prefs.h",
]
deps += [
"//ash",
"//ash/components/arc",
"//ash/components/arc:arc_base",
"//ash/components/arc:arc_base_utils",
"//ash/components/arc:arc_metrics_constants",
"//ash/components/arc/mojom",
"//ash/components/arc/session",
"//ash/components/arc/session:connection_holder",
"//ash/public/cpp",
"//ash/webui/mall:app_id",
"//ash/webui/system_apps/public:system_web_app_type",
"//chrome/browser:browser_process",
"//chrome/browser/apps/almanac_api_client",
"//chrome/browser/apps/app_service/promise_apps/proto",
"//chrome/browser/ash/android_sms",
"//chrome/browser/ash/app_list",
"//chrome/browser/ash/app_list/app_service",
"//chrome/browser/ash/app_list/arc",
"//chrome/browser/ash/app_list/internal_app",
"//chrome/browser/ash/app_list/search",
"//chrome/browser/ash/app_mode/web_app",
"//chrome/browser/ash/app_restore",
"//chrome/browser/ash/apps",
"//chrome/browser/ash/arc",
"//chrome/browser/ash/arc/app_shortcuts",
"//chrome/browser/ash/arc/intent_helper",
"//chrome/browser/ash/arc/nearby_share",
"//chrome/browser/ash/arc/privacy_items",
"//chrome/browser/ash/arc/session",
"//chrome/browser/ash/arc/tracing",
"//chrome/browser/ash/borealis",
"//chrome/browser/ash/bruschetta",
"//chrome/browser/ash/calendar",
"//chrome/browser/ash/child_accounts",
"//chrome/browser/ash/child_accounts/on_device_controls",
"//chrome/browser/ash/child_accounts/time_limits",
"//chrome/browser/ash/crosapi:browser_util",
"//chrome/browser/ash/crostini",
"//chrome/browser/ash/extensions",
"//chrome/browser/ash/extensions/autotest_private",
"//chrome/browser/ash/extensions/file_manager",
"//chrome/browser/ash/file_manager",
"//chrome/browser/ash/file_manager/virtual_tasks",
"//chrome/browser/ash/file_system_provider",
"//chrome/browser/ash/fusebox",
"//chrome/browser/ash/guest_os",
"//chrome/browser/ash/guest_os/public",
"//chrome/browser/ash/login/demo_mode",
"//chrome/browser/ash/mall",
"//chrome/browser/ash/plugin_vm",
"//chrome/browser/ash/policy/core",
"//chrome/browser/ash/policy/dlp",
"//chrome/browser/ash/policy/handlers",
"//chrome/browser/ash/printing",
"//chrome/browser/ash/profiles",
"//chrome/browser/ash/remote_apps",
"//chrome/browser/ash/scanning",
"//chrome/browser/ash/system_logs",
"//chrome/browser/ash/system_web_apps",
"//chrome/browser/ash/system_web_apps/apps",
"//chrome/browser/ash/system_web_apps/apps/camera_app",
"//chrome/browser/ash/system_web_apps/apps/media_app",
"//chrome/browser/ash/system_web_apps/types",
"//chrome/browser/chromeos/extensions/login_screen/login/cleanup",
"//chrome/browser/chromeos/extensions/web_file_handlers",
"//chrome/browser/image_fetcher",
"//chrome/browser/metrics/structured:features",
"//chrome/browser/resources",
"//chrome/browser/ui/ash/multi_user",
"//chrome/browser/ui/ash/session",
"//chrome/browser/ui/ash/shelf",
"//chrome/browser/ui/ash/shelf/app_service",
"//chrome/browser/ui/ash/system_web_apps",
"//chrome/browser/ui/webui/ash/add_supervision",
"//chrome/browser/ui/webui/ash/settings/app_management",
"//chromeos/ash/components/browser_context_helper",
"//chromeos/ash/components/login/login_state",
"//chromeos/components/kiosk:kiosk",
"//chromeos/components/mgs",
"//components/app_restore",
"//components/arc",
"//components/arc/common",
"//components/arc/common:arc_intent_helper_constants",
"//components/exo",
"//components/image_fetcher/core",
"//components/metrics/structured:structured_events",
"//components/resources:components_resources",
"//components/services/app_service/public/cpp:instance_update",
"//components/services/app_service/public/cpp:macros",
"//components/ukm",
"//components/webapps/browser",
"//services/metrics/public/cpp:ukm_builders",
"//ui/chromeos/styles:cros_tokens_color_mappings",
]
# TODO(crbug.com/40251079): Remove circular dependencies.
allow_circular_includes_from += [
"//chrome/browser/ash/android_sms",
"//chrome/browser/ash/app_list",
"//chrome/browser/ash/app_list/arc",
"//chrome/browser/ash/app_list/internal_app",
"//chrome/browser/ash/app_list/search",
"//chrome/browser/ash/app_restore",
"//chrome/browser/ash/borealis",
"//chrome/browser/ash/app_list/app_service",
"//chrome/browser/ash/app_mode/web_app",
"//chrome/browser/ash/apps",
"//chrome/browser/ash/arc",
"//chrome/browser/ash/arc/app_shortcuts",
"//chrome/browser/ash/arc/intent_helper",
"//chrome/browser/ash/arc/nearby_share",
"//chrome/browser/ash/arc/privacy_items",
"//chrome/browser/ash/arc/session",
"//chrome/browser/ash/arc/tracing",
"//chrome/browser/ash/calendar",
"//chrome/browser/ash/child_accounts",
"//chrome/browser/ash/child_accounts/on_device_controls",
"//chrome/browser/ash/child_accounts/time_limits",
"//chrome/browser/ash/file_manager",
"//chrome/browser/ash/file_system_provider",
"//chrome/browser/ash/guest_os",
"//chrome/browser/ash/extensions",
"//chrome/browser/ash/extensions/autotest_private",
"//chrome/browser/ash/extensions/file_manager",
"//chrome/browser/ash/login/demo_mode",
"//chrome/browser/ash/policy/dlp",
"//chrome/browser/ash/policy/handlers",
"//chrome/browser/ash/printing",
"//chrome/browser/ash/remote_apps",
"//chrome/browser/ash/scanning",
"//chrome/browser/ash/system_logs",
"//chrome/browser/ash/system_web_apps/apps",
"//chrome/browser/ash/system_web_apps/apps/camera_app",
"//chrome/browser/ash/system_web_apps/apps/media_app",
"//chrome/browser/chromeos/extensions/login_screen/login/cleanup",
"//chrome/browser/ui/ash/shelf",
"//chrome/browser/ui/ash/shelf/app_service",
"//chrome/browser/ui/ash/system_web_apps",
"//chrome/browser/ui/webui/ash/add_supervision",
]
}
if (is_chromeos_lacros) {
sources += [
"app_service_proxy_lacros.cc",
"app_service_proxy_lacros.h",
"metrics/website_metrics.cc",
"metrics/website_metrics.h",
"metrics/website_metrics_service_lacros.cc",
"metrics/website_metrics_service_lacros.h",
]
deps += [
"//chromeos/lacros",
"//components/keep_alive_registry",
"//components/webapps/browser",
"//services/metrics/public/cpp:ukm_builders",
"//ui/wm",
]
}
if (!is_chromeos) {
sources += [
"app_service_proxy_desktop.cc",
"app_service_proxy_desktop.h",
]
}
if (!is_chromeos_lacros) {
sources += [
# TODO(crbug.com/40251315): Make this safe to include in lacros by removing
# redefinition of types in app_service_proxy_lacros.
"app_service_proxy_base.cc",
"app_service_proxy_base.h",
"publisher_host.cc",
"publisher_host.h",
"publishers/extension_apps.cc",
"publishers/extension_apps.h",
"publishers/extension_apps_base.cc",
"publishers/extension_apps_base.h",
]
}
}
source_set("constants") {
sources = [
"app_launch_params.cc",
"app_launch_params.h",
]
configs += [ "//build/config/compiler:wexit_time_destructors" ]
deps = [
"//base",
"//components/services/app_service",
"//ui/base:types",
"//ui/display/types",
"//ui/gfx/geometry",
"//url",
]
}
source_set("unit_tests") {
testonly = true
sources = [
"app_service_proxy_unittest.cc",
"intent_util_unittest.cc",
"launch_utils_unittest.cc",
"publishers/publisher_unittest.cc",
]
deps = [
":app_service",
":constants",
":test_support",
"//base",
"//base/test:test_support",
"//build:chromeos_buildflags",
"//cc:test_support",
"//chrome/app/theme:chrome_unscaled_resources_grit",
"//chrome/browser/apps:icon_standardizer",
"//chrome/browser/apps/app_service/app_icon",
"//chrome/browser/apps/app_service/app_icon:unit_tests",
"//chrome/browser/apps/app_service/app_icon:util",
"//chrome/browser/apps/link_capturing:test_support",
"//chrome/browser/profiles:profile",
"//chrome/browser/resources:component_extension_resources",
"//chrome/browser/ui",
"//chrome/browser/web_applications",
"//chrome/browser/web_applications:web_applications_test_support",
"//chrome/common:chrome_features",
"//chrome/common:non_code_constants",
"//chrome/test:test_support",
"//components/account_id",
"//components/app_constants",
"//components/services/app_service",
"//components/services/app_service/public/cpp:test_support",
"//components/user_manager",
"//content/test:test_support",
"//mojo/public/cpp/bindings:bindings_base",
"//net",
"//services/data_decoder/public/cpp:test_support",
"//skia",
"//storage/browser",
"//storage/common",
"//testing/gmock",
"//testing/gtest",
"//ui/base",
"//ui/display/types",
"//ui/gfx",
"//ui/gfx:test_support",
"//ui/gfx/codec",
"//ui/gfx/geometry",
"//url",
]
if (enable_extensions) {
deps += [
"//chrome/browser/extensions",
"//extensions:test_support",
"//extensions/common",
]
}
if (is_chromeos) {
deps += [ "//chromeos/crosapi/mojom" ]
}
if (is_chromeos_ash) {
sources += [
"file_utils_unittest.cc",
"metrics/app_platform_metrics_service_unittest.cc",
"promise_apps/promise_app_almanac_connector_unittest.cc",
"promise_apps/promise_app_icon_cache_unittest.cc",
"promise_apps/promise_app_registry_cache_unittest.cc",
"promise_apps/promise_app_service_unittest.cc",
"promise_apps/promise_app_unittest.cc",
"promise_apps/promise_app_update_unittest.cc",
"promise_apps/promise_app_wrapper_unittest.cc",
"publishers/arc_apps_unittest.cc",
"publishers/bruschetta_apps_unittest.cc",
"publishers/crostini_apps_unittest.cc",
"publishers/guest_os_apps_unittest.cc",
"publishers/plugin_vm_apps_unittest.cc",
"webapk/webapk_install_task_unittest.cc",
"webapk/webapk_manager_unittest.cc",
]
deps += [
"//ash/components/arc:arc_test_support",
"//ash/constants",
"//chrome/browser/apps/app_service/app_install:unit_tests",
"//chrome/browser/apps/app_service/promise_apps/proto",
"//chrome/browser/ash/app_list/arc",
"//chrome/browser/ash/app_list/arc:test_support",
"//chrome/browser/ash/app_list/internal_app",
"//chrome/browser/ash/apps",
"//chrome/browser/ash/arc",
"//chrome/browser/ash/arc/fileapi",
"//chrome/browser/ash/borealis",
"//chrome/browser/ash/borealis/testing:test_support",
"//chrome/browser/ash/bruschetta",
"//chrome/browser/ash/bruschetta:test_support",
"//chrome/browser/ash/crosapi:browser_util",
"//chrome/browser/ash/crosapi:test_support",
"//chrome/browser/ash/crostini:test_support",
"//chrome/browser/ash/file_manager",
"//chrome/browser/ash/fusebox",
"//chrome/browser/ash/guest_os",
"//chrome/browser/ash/guest_os:test_support",
"//chrome/browser/ash/guest_os/public",
"//chrome/browser/ash/login/users:test_support",
"//chrome/browser/ash/plugin_vm",
"//chrome/browser/ash/plugin_vm:test_support",
"//chrome/browser/metrics/structured:features",
"//chrome/browser/resources:app_icon_resources_grit",
"//chrome/browser/web_applications/app_service:unit_tests",
"//chromeos/ash/components/dbus/chunneld",
"//chromeos/ash/components/dbus/cicerone",
"//chromeos/ash/components/dbus/seneschal",
"//chromeos/ash/components/login/login_state",
"//chromeos/ash/components/standalone_browser",
"//chromeos/ash/components/system",
"//chromeos/components/mgs:test_support",
"//chromeos/dbus/power:power_manager_proto",
"//components/arc",
"//components/arc:arc_test_support",
"//components/image_fetcher/core",
"//components/image_fetcher/core:test_support",
"//components/metrics/structured:common",
"//components/metrics/structured:structured_events",
"//components/metrics/structured:structured_metrics_features",
"//components/metrics/structured:test_support",
"//components/services/app_service/public/cpp/shortcut",
"//components/webapk:proto",
]
}
if (is_chromeos_lacros) {
sources += [
"app_service_proxy_lacros_unittest.cc",
"metrics/website_metrics_service_lacros_unittest.cc",
]
} else {
sources += [ "publishers/app_publisher_unittest.cc" ]
}
}
source_set("test_support") {
testonly = true
sources = [
"app_service_test.cc",
"app_service_test.h",
]
public_deps = [ ":app_service" ]
deps = [
"//build:chromeos_buildflags",
"//chrome/browser/sync",
"//chrome/test:test_support",
"//components/services/app_service",
"//skia",
]
if (is_chromeos_ash) {
sources += [
"metrics/app_platform_metrics_service_test_base.cc",
"metrics/app_platform_metrics_service_test_base.h",
"webapk/webapk_test_server.cc",
"webapk/webapk_test_server.h",
]
deps += [
"//chrome/browser/ash/login/users:test_support",
"//components/webapk:proto",
]
}
if (is_chromeos_lacros) {
sources += [
"mock_crosapi_app_service_proxy.cc",
"mock_crosapi_app_service_proxy.h",
]
}
}
source_set("app_registry_cache_waiter") {
testonly = true
sources = [
"app_registry_cache_waiter.cc",
"app_registry_cache_waiter.h",
]
public_deps = [ "//components/services/app_service" ]
deps = [
":app_service",
"//build:chromeos_buildflags",
"//url",
]
}