# 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") import("//extensions/buildflags/buildflags.gni") # assert(enable_extensions) 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", ] 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) { sources += [ "test/with_crosapi_param.cc", "test/with_crosapi_param.h", ] 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/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 (enable_extensions) { deps += [ "//chrome/browser/web_applications/extensions:extensions", ] } 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/profiles:profile", "//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", "//net:test_support", "//third_party/blink/public/common", "//ui/base/idle:idle", "//ui/base/idle:test_support", "//ui/events/devices:test_support", "//url", ] if (enable_extensions) { deps += [ "//chrome/browser/extensions:test_support", "//chrome/browser/web_applications/extensions", "//extensions/browser:test_support", ] } 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", ] if (enable_extensions) { deps += [ "//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", ] }