blob: 7e8e6a42313d68aba12989898da1c4b25ea4692e [file] [log] [blame]
# Copyright 2018 The Chromium 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/chromeos/ui_mode.gni")
import("//chrome/browser/buildflags.gni")
group("web_app_group") {
public_configs = [ "//build/config/compiler:wexit_time_destructors" ]
}
group("web_app_test_group") {
}
source_set("web_applications") {
sources = [
"components/app_registrar_observer.h",
"components/app_registry_controller.cc",
"components/app_registry_controller.h",
"components/external_install_options.cc",
"components/external_install_options.h",
"components/externally_installed_web_app_prefs.h",
"components/file_handler_manager.h",
"components/file_handling_permission_context.cc",
"components/file_handling_permission_context.h",
"components/install_bounce_metric.cc",
"components/install_bounce_metric.h",
"components/policy/web_app_policy_constants.cc",
"components/policy/web_app_policy_constants.h",
"components/preinstalled_app_install_features.cc",
"components/preinstalled_app_install_features.h",
"components/protocol_handler_manager.h",
"components/url_handler_manager.h",
"components/web_app_audio_focus_id_map.cc",
"components/web_app_audio_focus_id_map.h",
"components/web_app_callback_app_identity.h",
"components/web_app_chromeos_data.cc",
"components/web_app_chromeos_data.h",
"components/web_app_constants.cc",
"components/web_app_constants.h",
"components/web_app_data_retriever.cc",
"components/web_app_data_retriever.h",
"components/web_app_file_handler_registration.cc",
"components/web_app_file_handler_registration.h",
"components/web_app_helpers.h",
"components/web_app_icon_generator.cc",
"components/web_app_icon_generator.h",
"components/web_app_id.h",
"components/web_app_id_constants.cc",
"components/web_app_id_constants.h",
"components/web_app_install_utils.cc",
"components/web_app_install_utils.h",
"components/web_app_origin_association_manager.cc",
"components/web_app_origin_association_manager.h",
"components/web_app_origin_association_task.cc",
"components/web_app_origin_association_task.h",
"components/web_app_prefs_utils.cc",
"components/web_app_prefs_utils.h",
"components/web_app_protocol_handler_registration.cc",
"components/web_app_protocol_handler_registration.h",
"components/web_app_run_on_os_login.cc",
"components/web_app_run_on_os_login.h",
"components/web_app_shortcut.cc",
"components/web_app_shortcut.h",
"components/web_app_shortcuts_menu.cc",
"components/web_app_shortcuts_menu.h",
"components/web_app_system_web_app_data.cc",
"components/web_app_system_web_app_data.h",
"components/web_app_ui_manager.h",
"components/web_app_uninstallation_via_os_settings_registration.cc",
"components/web_app_uninstallation_via_os_settings_registration.h",
"components/web_app_url_loader.cc",
"components/web_app_url_loader.h",
"components/web_app_utils.h",
"components/web_application_info.cc",
"components/web_application_info.h",
# TODO(nigeltao): move these two files from
# //chrome/browser/web_applications/components to a stand-alone
# //components/web_app_icon_downloader?
#
# There's //components/image_fetcher as well as code split between
# //content/public/browser/manifest_icon_downloader.h and
# //content/browser/manfest/manifest_icon_downloader.cc. Some or all of
# those might be similar enough to merge.
"components/web_app_icon_downloader.cc",
"components/web_app_icon_downloader.h",
"daily_metrics_helper.cc",
"daily_metrics_helper.h",
"extension_status_utils.h",
"externally_installed_web_app_prefs.cc",
"externally_managed_app_install_task.cc",
"externally_managed_app_install_task.h",
"externally_managed_app_manager.cc",
"externally_managed_app_manager.h",
"externally_managed_app_manager_impl.cc",
"externally_managed_app_manager_impl.h",
"externally_managed_app_registration_task.cc",
"externally_managed_app_registration_task.h",
"file_handler_manager.cc",
"file_handlers_permission_helper.cc",
"file_handlers_permission_helper.h",
"file_utils_wrapper.cc",
"file_utils_wrapper.h",
"isolation_prefs_utils.cc",
"isolation_prefs_utils.h",
"manifest_update_manager.cc",
"manifest_update_manager.h",
"manifest_update_task.cc",
"manifest_update_task.h",
"os_integration_manager.cc",
"os_integration_manager.h",
"policy/web_app_policy_manager.cc",
"policy/web_app_policy_manager.h",
"policy/web_app_policy_manager_observer.h",
"preinstalled_web_app_manager.cc",
"preinstalled_web_app_manager.h",
"preinstalled_web_app_utils.cc",
"preinstalled_web_app_utils.h",
"preinstalled_web_apps/preinstalled_web_app_definition_utils.cc",
"preinstalled_web_apps/preinstalled_web_app_definition_utils.h",
"preinstalled_web_apps/preinstalled_web_apps.cc",
"preinstalled_web_apps/preinstalled_web_apps.h",
"protocol_handler_manager.cc",
"system_web_apps/system_web_app_background_task.cc",
"system_web_apps/system_web_app_background_task.h",
"system_web_apps/system_web_app_delegate.cc",
"system_web_apps/system_web_app_delegate.h",
"system_web_apps/system_web_app_manager.cc",
"system_web_apps/system_web_app_manager.h",
"system_web_apps/system_web_app_types.h",
"url_handler_manager.cc",
"web_app.cc",
"web_app.h",
"web_app_database.cc",
"web_app_database.h",
"web_app_database_factory.cc",
"web_app_database_factory.h",
"web_app_file_handler_manager.cc",
"web_app_file_handler_manager.h",
"web_app_helpers.cc",
"web_app_icon_manager.cc",
"web_app_icon_manager.h",
"web_app_install_finalizer.cc",
"web_app_install_finalizer.h",
"web_app_install_manager.cc",
"web_app_install_manager.h",
"web_app_install_params.cc",
"web_app_install_params.h",
"web_app_install_task.cc",
"web_app_install_task.h",
"web_app_installation_utils.cc",
"web_app_installation_utils.h",
"web_app_mover.cc",
"web_app_mover.h",
"web_app_proto_utils.cc",
"web_app_proto_utils.h",
"web_app_protocol_handler_manager.cc",
"web_app_protocol_handler_manager.h",
"web_app_provider.cc",
"web_app_provider.h",
"web_app_provider_factory.cc",
"web_app_provider_factory.h",
"web_app_registrar.cc",
"web_app_registrar.h",
"web_app_registry_update.cc",
"web_app_registry_update.h",
"web_app_shortcut_manager.cc",
"web_app_shortcut_manager.h",
"web_app_sync_bridge.cc",
"web_app_sync_bridge.h",
"web_app_sync_install_delegate.h",
"web_app_tab_helper.cc",
"web_app_tab_helper.h",
"web_app_utils.cc",
]
if (is_chromeos_ash || is_chromeos_lacros) {
sources += [
"components/web_app_run_on_os_login_chromeos.cc",
"components/web_app_shortcut_chromeos.cc",
]
}
if (is_fuchsia) {
sources += [ "components/web_app_stubs.cc" ]
}
if (is_linux) {
# Desktop linux, doesn't count ChromeOS.
sources += [
"components/web_app_run_on_os_login_linux.cc",
"components/web_app_shortcut_linux.cc",
"components/web_app_shortcut_linux.h",
"web_app_file_handler_registration_linux.cc",
]
}
if (is_mac) {
sources += [
"components/app_shim_registry_mac.cc",
"components/app_shim_registry_mac.h",
"components/web_app_file_handler_registration_mac.cc",
"components/web_app_run_on_os_login_mac.mm",
"components/web_app_shortcut_mac.h",
"components/web_app_shortcut_mac.mm",
]
}
if (is_win) {
sources += [
"components/web_app_file_handler_registration_win.cc",
"components/web_app_handler_registration_utils_win.cc",
"components/web_app_handler_registration_utils_win.h",
"components/web_app_protocol_handler_registration_win.cc",
"components/web_app_run_on_os_login_win.cc",
"components/web_app_shortcut_win.cc",
"components/web_app_shortcut_win.h",
"components/web_app_shortcuts_menu_win.cc",
"components/web_app_shortcuts_menu_win.h",
"components/web_app_uninstallation_via_os_settings_registration_win.cc",
]
}
if (is_win || is_mac || (is_linux && !is_chromeos_lacros)) {
sources += [
"components/url_handler_launch_params.cc",
"components/url_handler_launch_params.h",
"components/url_handler_manager_impl.h",
"components/url_handler_prefs.cc",
"components/url_handler_prefs.h",
"url_handler_manager_impl.cc",
]
}
# web_applications must not depend on //chrome/browser/extensions and //extensions
deps = [
":web_app_group",
"//base",
"//build:branding_buildflags",
"//build:chromeos_buildflags",
"//chrome/app/resources:platform_locale_settings",
"//chrome/app/theme:chrome_unscaled_resources",
"//chrome/browser:browser_process",
"//chrome/browser/profiles:profile",
"//chrome/common",
"//chrome/common:non_code_constants",
"//components/content_settings/core/browser",
# TODO(crbug.com/1225132): Clean up this legacy crx dependency.
"//components/crx_file",
"//components/device_event_log",
"//components/keep_alive_registry:keep_alive_registry",
"//components/keyed_service/content",
"//components/performance_manager",
"//components/permissions:permissions",
"//components/pref_registry",
"//components/services/app_service/public/cpp:app_file_handling",
"//components/services/app_service/public/cpp:app_url_handling",
"//components/services/app_service/public/cpp:protocol_handling",
"//components/services/app_service/public/mojom",
"//components/site_engagement/content",
"//components/site_engagement/core/mojom:mojo_bindings",
"//components/sync",
"//components/user_manager",
"//components/webapps/browser",
"//components/webapps/common:mojo_bindings",
"//components/webapps/services/web_app_origin_association:lib",
"//components/webapps/services/web_app_origin_association:service",
"//content/public/browser",
"//extensions/common:common_constants",
"//mojo/public/cpp/bindings",
"//net",
"//services/metrics/public/cpp:ukm_builders",
"//services/network/public/cpp",
"//services/preferences/public/cpp",
"//skia",
"//third_party/blink/public/common",
"//ui/base",
"//ui/base/idle",
"//ui/events/devices:devices",
"//url",
]
if (is_chrome_branded) {
sources += [
"preinstalled_web_apps/gmail.cc",
"preinstalled_web_apps/gmail.h",
"preinstalled_web_apps/google_docs.cc",
"preinstalled_web_apps/google_docs.h",
"preinstalled_web_apps/google_drive.cc",
"preinstalled_web_apps/google_drive.h",
"preinstalled_web_apps/google_sheets.cc",
"preinstalled_web_apps/google_sheets.h",
"preinstalled_web_apps/google_slides.cc",
"preinstalled_web_apps/google_slides.h",
"preinstalled_web_apps/youtube.cc",
"preinstalled_web_apps/youtube.h",
]
if (is_chromeos_ash) {
sources += [
"preinstalled_web_apps/google_calendar.cc",
"preinstalled_web_apps/google_calendar.h",
"preinstalled_web_apps/google_chat.cc",
"preinstalled_web_apps/google_chat.h",
"preinstalled_web_apps/google_meet.cc",
"preinstalled_web_apps/google_meet.h",
]
}
deps += [ "//chrome/browser/resources:preinstalled_web_apps_resources" ]
}
if (is_win) {
deps += [ "//chrome/browser/web_applications/chrome_pwa_launcher:util" ]
}
if (is_chromeos_ash) {
deps += [
"//ash/constants",
"//ash/public/cpp",
"//ash/webui/file_manager:file_manager_ui",
"//ash/webui/os_feedback_ui",
"//ash/webui/shimless_rma",
"//ash/webui/shortcut_customization_ui",
"//chromeos/components/camera_app_ui",
"//chromeos/components/connectivity_diagnostics",
"//chromeos/components/eche_app_ui",
"//chromeos/components/help_app_ui",
"//chromeos/components/media_app_ui",
"//chromeos/components/personalization_app",
"//chromeos/strings",
"//components/arc:arc_base",
"//components/arc/mojom",
]
if (!is_official_build) {
deps += [ "//ash/webui/sample_system_web_app_ui" ]
}
}
public_deps = [
"//chrome/browser/web_applications/proto",
"//components/permissions:permissions",
"//components/services/app_service/public/cpp:app_share_target",
"//components/services/app_service/public/cpp:app_url_handling",
]
}
# The set of dependencies that //chrome/test:test_support{_ui} have on
# web_applications test support. Split out from the below target as the below
# target itself depends on //chrome/test:test_support{_ui}.
source_set("web_applications_test_support_minimal") {
testonly = true
sources = [
"system_web_apps/test/test_system_web_app_manager.cc",
"system_web_apps/test/test_system_web_app_manager.h",
"test/service_worker_registration_waiter.cc",
"test/service_worker_registration_waiter.h",
"test/test_web_app_provider.cc",
"test/test_web_app_provider.h",
"test/web_app_install_observer.cc",
"test/web_app_install_observer.h",
"test/web_app_install_test_utils.cc",
"test/web_app_install_test_utils.h",
"test/with_crosapi_param.cc",
"test/with_crosapi_param.h",
]
deps = [
"//base",
"//base/test:test_support",
"//build:chromeos_buildflags",
"//chrome/browser/profiles:profile",
"//chrome/browser/web_applications",
"//chrome/common:buildflags",
"//chrome/common:chrome_features",
"//chrome/common:non_code_constants",
"//components/keyed_service/content",
"//components/services/app_service/public/cpp:app_url_handling",
"//components/webapps/browser",
"//content/public/browser",
"//url",
]
if (is_chromeos_ash) {
deps += [ "//ash/constants" ]
}
}
# This test_support library doesn't use extensions.
source_set("web_applications_test_support") {
testonly = true
sources = [
"system_web_apps/test/system_web_app_browsertest_base.cc",
"system_web_apps/test/system_web_app_browsertest_base.h",
"system_web_apps/test/test_system_web_app_installation.cc",
"system_web_apps/test/test_system_web_app_installation.h",
"system_web_apps/test/test_system_web_app_url_data_source.cc",
"system_web_apps/test/test_system_web_app_url_data_source.h",
"system_web_apps/test/test_system_web_app_web_ui_controller_factory.cc",
"system_web_apps/test/test_system_web_app_web_ui_controller_factory.h",
"test/fake_protocol_handler_manager.cc",
"test/fake_protocol_handler_manager.h",
"test/fake_url_handler_manager.cc",
"test/fake_url_handler_manager.h",
"test/fake_web_app_origin_association_manager.cc",
"test/fake_web_app_origin_association_manager.h",
"test/test_app_registry_controller.cc",
"test/test_app_registry_controller.h",
"test/test_data_retriever.cc",
"test/test_data_retriever.h",
"test/test_externally_managed_app_manager.cc",
"test/test_externally_managed_app_manager.h",
"test/test_file_handler_manager.cc",
"test/test_file_handler_manager.h",
"test/test_file_utils.cc",
"test/test_file_utils.h",
"test/test_install_finalizer.cc",
"test/test_install_finalizer.h",
"test/test_os_integration_manager.cc",
"test/test_os_integration_manager.h",
"test/test_web_app_database_factory.cc",
"test/test_web_app_database_factory.h",
"test/test_web_app_registry_controller.cc",
"test/test_web_app_registry_controller.h",
"test/test_web_app_ui_manager.cc",
"test/test_web_app_ui_manager.h",
"test/test_web_app_url_loader.cc",
"test/test_web_app_url_loader.h",
"test/web_app_icon_test_utils.cc",
"test/web_app_icon_test_utils.h",
"test/web_app_registration_waiter.cc",
"test/web_app_registration_waiter.h",
"test/web_app_test.h",
"test/web_app_test_utils.cc",
"test/web_app_test_utils.h",
"test/web_app_uninstall_waiter.cc",
"test/web_app_uninstall_waiter.h",
]
public_deps = [ ":web_applications_test_support_minimal" ]
deps = [
":web_app_test_group",
":web_applications",
"//base/test:test_support",
"//chrome/app/theme:chrome_unscaled_resources_grit",
"//chrome/browser",
"//chrome/browser/profiles:profile",
"//chrome/browser/ui:ui",
"//chrome/test:test_support",
"//chrome/test:test_support_ui",
"//components/crx_file:crx_file",
"//components/keyed_service/content:content",
"//components/services/app_service/public/cpp:app_url_handling",
"//components/services/app_service/public/cpp:types",
"//components/sync:test_support_model",
"//components/webapps/browser",
"//content/test:test_support",
"//testing/gtest",
"//ui/webui:webui",
]
}
source_set("web_applications_unit_tests") {
testonly = true
sources = [
"components/file_handler_manager_unittest.cc",
"components/preinstalled_app_install_features_unittest.cc",
"components/protocol_handler_manager_unittest.cc",
"components/web_app_constants_unittest.cc",
"components/web_app_data_retriever_unittest.cc",
"components/web_app_helpers_unittest.cc",
"components/web_app_icon_downloader_unittest.cc",
"components/web_app_icon_generator_unittest.cc",
"components/web_app_install_utils_unittest.cc",
"components/web_app_prefs_utils_unittest.cc",
"components/web_app_shortcut_unittest.cc",
"components/web_app_url_loader_unittest.cc",
"components/web_app_utils_unittest.cc",
"daily_metrics_helper_unittest.cc",
"externally_managed_app_manager_impl_unittest.cc",
"externally_managed_app_manager_unittest.cc",
"isolation_prefs_utils_unittest.cc",
"manifest_update_task_unittest.cc",
"os_integration_manager_unittest.cc",
"preinstalled_web_app_manager_unittest.cc",
"preinstalled_web_app_utils_unittest.cc",
"preinstalled_web_apps/preinstalled_web_app_definition_utils_unittest.cc",
"system_web_apps/test/system_web_app_manager_unittest.cc",
"web_app_database_unittest.cc",
"web_app_icon_manager_unittest.cc",
"web_app_install_finalizer_unittest.cc",
"web_app_install_manager_unittest.cc",
"web_app_install_task_unittest.cc",
"web_app_installation_utils_unittest.cc",
"web_app_mover_unittest.cc",
"web_app_proto_utils_unittest.cc",
"web_app_registrar_unittest.cc",
"web_app_sync_bridge_unittest.cc",
"web_app_unittest.cc",
]
if (is_win) {
sources += [
"components/web_app_file_handler_registration_win_unittest.cc",
"components/web_app_handler_registration_utils_win_unittest.cc",
"components/web_app_protocol_handler_registration_win_unittest.cc",
"components/web_app_run_on_os_login_win_unittest.cc",
"components/web_app_shortcut_win_unittest.cc",
]
}
if (is_mac) {
sources += [
"components/app_shim_registry_mac_unittest.cc",
"components/web_app_run_on_os_login_mac_unittest.mm",
"components/web_app_shortcut_mac_unittest.mm",
]
}
if (is_linux) {
# Desktop linux, doesn't count ChromeOS.
sources += [
"components/web_app_file_handler_registration_linux_unittest.cc",
"components/web_app_run_on_os_login_linux_unittest.cc",
"components/web_app_shortcut_linux_unittest.cc",
]
}
if (is_win || is_mac || (is_linux && !is_chromeos_lacros)) {
sources += [
"components/url_handler_manager_impl_unittest.cc",
"components/url_handler_prefs_unittest.cc",
]
}
deps = [
":web_app_test_group",
":web_applications",
":web_applications_test_support",
"//base/test:test_support",
"//build:chromeos_buildflags",
"//chrome/app/theme:theme_resources",
"//chrome/browser",
"//chrome/browser:browser_process",
"//chrome/browser/profiles:profile",
"//chrome/browser/web_applications/extensions:extensions",
"//chrome/common",
"//chrome/test:test_support",
"//components/services/app_service/public/cpp:app_url_handling",
"//components/services/app_service/public/cpp:protocol_handling",
"//components/webapps/browser",
"//components/webapps/browser:test_support",
"//components/webapps/common:mojo_bindings",
"//content/public/browser",
"//content/test:test_support",
"//services/metrics/public/cpp:ukm_builders",
"//services/preferences/public/cpp",
"//skia",
"//testing/gmock",
"//testing/gtest",
"//ui/base/idle:idle",
"//ui/base/idle:test_support",
]
if (is_chromeos_ash) {
deps += [
"//ash/constants",
"//chrome/browser/chromeos",
"//components/arc:arc",
"//components/arc:arc_test_support",
"//components/arc/mojom",
]
}
if (is_win) {
deps += [
"//chrome/browser/web_applications/chrome_pwa_launcher:unit_tests",
"//chrome/browser/web_applications/chrome_pwa_launcher:util",
]
}
if (is_win || is_mac || (is_linux && !is_chromeos_lacros)) {
deps += [ "//components/services/app_service/public/cpp:app_url_handling" ]
}
}
source_set("web_applications_browser_tests") {
testonly = true
sources = [
"components/web_app_origin_association_manager_browsertest.cc",
"components/web_app_url_loader_browsertest.cc",
"externally_managed_app_manager_impl_browsertest.cc",
"manifest_update_manager_browsertest.cc",
"preinstalled_web_app_manager_browsertest.cc",
"preinstalled_web_app_migration_browsertest.cc",
"preinstalled_web_apps_browsertest.cc",
"system_web_apps/test/system_web_app_manager_browsertest.cc",
"web_app_audio_focus_browsertest.cc",
"web_app_icon_manager_browsertest.cc",
"web_app_mover_browsertest.cc",
]
if (is_linux) {
sources +=
[ "components/web_app_file_handler_registration_linux_browsertest.cc" ]
}
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
deps = [
":web_applications",
":web_applications_test_support",
"//base",
"//build:branding_buildflags",
"//build:chromeos_buildflags",
"//chrome/app:command_ids",
"//chrome/browser/apps/app_service:test_support",
"//chrome/browser/extensions:test_support",
"//chrome/browser/profiles:profile",
"//chrome/browser/web_applications/extensions",
"//chrome/test:test_support",
"//chrome/test:test_support_ui",
"//components/permissions:permissions",
"//components/services/app_service/public/cpp:app_update",
"//components/services/app_service/public/cpp:intents",
"//components/webapps/browser",
"//components/webapps/services/web_app_origin_association/test:test_support",
"//extensions/browser:test_support",
"//net:test_support",
"//third_party/blink/public/common",
"//ui/base/idle:idle",
"//ui/base/idle:test_support",
"//ui/events/devices:test_support",
"//url",
]
if (is_chromeos_ash) {
deps += [
"//ash:test_support",
"//chrome/browser/chromeos",
"//chrome/browser/ui",
]
}
}
group("unit_tests") {
testonly = true
deps = [
":web_app_test_group",
":web_applications_unit_tests",
"//chrome/browser/web_applications/extensions:unit_tests",
]
}
group("browser_tests") {
testonly = true
deps = [
":web_app_test_group",
":web_applications_browser_tests",
]
}
source_set("interactive_ui_tests") {
testonly = true
sources = [ "web_app_notifications_interactive_uitest.cc" ]
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
deps = [
":web_applications",
":web_applications_test_support",
"//chrome/app:command_ids",
"//chrome/test:test_support",
"//chrome/test:test_support_ui",
"//components/permissions:permissions",
"//components/webapps/browser",
"//ui/base/idle:idle",
"//ui/base/idle:test_support",
"//ui/events/devices:test_support",
]
}