|  | # Copyright 2024 The Chromium Authors | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | import("//chrome/common/features.gni") | 
|  | import("//components/supervised_user/buildflags.gni") | 
|  | import("//extensions/buildflags/buildflags.gni") | 
|  |  | 
|  | assert(is_win || is_mac || is_linux || is_chromeos || is_android) | 
|  |  | 
|  | source_set("sync") { | 
|  | sources = [ | 
|  | "account_bookmark_sync_service_factory.cc", | 
|  | "account_bookmark_sync_service_factory.h", | 
|  | "chrome_sync_client.cc", | 
|  | "chrome_sync_client.h", | 
|  | "chrome_sync_controller_builder.cc", | 
|  | "chrome_sync_controller_builder.h", | 
|  | "data_type_store_service_factory.cc", | 
|  | "data_type_store_service_factory.h", | 
|  | "device_info_sync_client_impl.cc", | 
|  | "device_info_sync_client_impl.h", | 
|  | "device_info_sync_service_factory.cc", | 
|  | "device_info_sync_service_factory.h", | 
|  | "glue/extensions_activity_monitor.cc", | 
|  | "glue/extensions_activity_monitor.h", | 
|  | "glue/sync_start_util.cc", | 
|  | "glue/sync_start_util.h", | 
|  | "local_or_syncable_bookmark_sync_service_factory.cc", | 
|  | "local_or_syncable_bookmark_sync_service_factory.h", | 
|  | "prefs/chrome_syncable_prefs_database.cc", | 
|  | "prefs/chrome_syncable_prefs_database.h", | 
|  | "prefs/cross_device_pref_tracker/chrome_cross_device_pref_provider.cc", | 
|  | "prefs/cross_device_pref_tracker/chrome_cross_device_pref_provider.h", | 
|  | "prefs/cross_device_pref_tracker/cross_device_pref_tracker_factory.cc", | 
|  | "prefs/cross_device_pref_tracker/cross_device_pref_tracker_factory.h", | 
|  | "send_tab_to_self_sync_service_factory.cc", | 
|  | "send_tab_to_self_sync_service_factory.h", | 
|  | "session_sync_service_factory.cc", | 
|  | "session_sync_service_factory.h", | 
|  | "sessions/sync_sessions_router_tab_helper.cc", | 
|  | "sessions/sync_sessions_router_tab_helper.h", | 
|  | "sessions/sync_sessions_web_contents_router.cc", | 
|  | "sessions/sync_sessions_web_contents_router.h", | 
|  | "sessions/sync_sessions_web_contents_router_factory.cc", | 
|  | "sessions/sync_sessions_web_contents_router_factory.h", | 
|  | "sync_invalidations_service_factory.cc", | 
|  | "sync_invalidations_service_factory.h", | 
|  | "sync_service_factory.cc", | 
|  | "sync_service_factory.h", | 
|  | "sync_startup_tracker.cc", | 
|  | "sync_startup_tracker.h", | 
|  | "sync_ui_util.cc", | 
|  | "sync_ui_util.h", | 
|  | "user_event_service_factory.cc", | 
|  | "user_event_service_factory.h", | 
|  | ] | 
|  | public_deps = [ | 
|  | ":factories", | 
|  | "//base", | 
|  | "//chrome/browser:browser_public_dependencies", | 
|  | "//chrome/browser/profiles:profile", | 
|  | "//chrome/browser/tab_group_sync:factories", | 
|  | "//chrome/browser/translate", | 
|  | "//components/browser_sync", | 
|  | "//components/collaboration/public", | 
|  | "//components/favicon/core", | 
|  | "//components/keyed_service/core", | 
|  | "//components/prefs", | 
|  | "//components/sessions:session_id", | 
|  | "//components/sync/model", | 
|  | "//components/sync/service", | 
|  | "//components/sync_device_info", | 
|  | "//components/sync_preferences", | 
|  | "//components/sync_preferences:common_syncable_prefs_database", | 
|  | "//components/sync_sessions", | 
|  | "//components/translate/core/browser", | 
|  | "//content/public/browser", | 
|  |  | 
|  | # TODO: Use //chrome/browser/ui instead after fixing cyclic dependency. | 
|  | "//components/paint_preview/buildflags", | 
|  | ] | 
|  | deps = [ | 
|  | "//chrome/app:branded_strings", | 
|  | "//chrome/app:branded_strings_grit", | 
|  | "//chrome/app:generated_resources", | 
|  | "//chrome/app:generated_resources_grit", | 
|  | "//chrome/browser:browser_process", | 
|  | "//chrome/browser/consent_auditor", | 
|  | "//chrome/browser/history", | 
|  | "//chrome/browser/password_manager/factories", | 
|  | "//chrome/browser/plus_addresses", | 
|  | "//chrome/browser/signin", | 
|  | "//chrome/browser/subscription_eligibility", | 
|  | "//chrome/browser/ui/sync", | 
|  | "//chrome/browser/ui/toolbar", | 
|  | "//chrome/browser/webauthn", | 
|  | "//chrome/browser/webdata_services", | 
|  |  | 
|  | # TODO(crbug.com/374910357): Investigate for a better dependency injection. | 
|  | "//chrome/browser/autofill", | 
|  | "//chrome/browser/favicon", | 
|  | "//chrome/browser/prefs:util", | 
|  | "//chrome/browser/profiles", | 
|  | "//chrome/browser/promos:utils", | 
|  | "//chrome/browser/reading_list", | 
|  | "//chrome/browser/search_engines", | 
|  | "//chrome/browser/tab_group_sync:utils", | 
|  | "//chrome/browser/ui:ui_features", | 
|  | "//chrome/common", | 
|  | "//chrome/common:buildflags", | 
|  | "//chrome/common:channel_info", | 
|  | "//chrome/common:constants", | 
|  | "//components/autofill/core/browser", | 
|  | "//components/consent_auditor", | 
|  | "//components/data_sharing/public", | 
|  | "//components/dom_distiller/core", | 
|  | "//components/favicon/content", | 
|  | "//components/history/core/browser", | 
|  | "//components/language/core/browser", | 
|  | "//components/language/core/common", | 
|  | "//components/live_caption:constants", | 
|  | "//components/metrics/demographics", | 
|  | "//components/password_manager/core/browser/features:password_features", | 
|  | "//components/password_manager/core/browser/features:utils", | 
|  | "//components/password_manager/core/browser/password_store:password_store_interface", | 
|  | "//components/password_manager/core/browser/sharing", | 
|  | "//components/performance_manager", | 
|  | "//components/plus_addresses/core/browser/settings", | 
|  | "//components/plus_addresses/core/browser/webdata", | 
|  | "//components/privacy_sandbox:privacy_sandbox_prefs", | 
|  | "//components/privacy_sandbox:tracking_protection_prefs", | 
|  | "//components/saved_tab_groups/public", | 
|  | "//components/send_tab_to_self", | 
|  | "//components/sharing_message", | 
|  | "//components/spellcheck:buildflags", | 
|  | "//components/spellcheck/browser", | 
|  | "//components/strings:components_strings_grit", | 
|  | "//components/sync_bookmarks", | 
|  | "//components/sync_preferences:features", | 
|  | "//components/sync_preferences/cross_device_pref_tracker", | 
|  | "//components/sync_user_events", | 
|  | "//components/user_manager", | 
|  | "//components/variations/service", | 
|  | "//components/webauthn/core/browser:passkey_model", | 
|  |  | 
|  | # TODO(crbug.com/352700220): Extract target for //chrome/browser/android/webapk from | 
|  | # //chrome/browser and use that instead here. | 
|  | "//chrome/browser/android/webapk/proto", | 
|  | "//components/webapps/browser", | 
|  | ] | 
|  |  | 
|  | allow_circular_includes_from = [] | 
|  |  | 
|  | if (enable_extensions) { | 
|  | deps += [ "//chrome/browser/web_applications" ] | 
|  | } | 
|  |  | 
|  | if (enable_supervised_users) { | 
|  | deps += [ | 
|  | "//components/supervised_user/core/browser", | 
|  | "//components/supervised_user/core/common", | 
|  | ] | 
|  | } | 
|  |  | 
|  | if (is_android) { | 
|  | sources += [ | 
|  | "glue/synced_tab_delegate_android.cc", | 
|  | "glue/synced_tab_delegate_android.h", | 
|  | "glue/synced_window_delegate_android.cc", | 
|  | "glue/synced_window_delegate_android.h", | 
|  | "glue/synced_window_delegates_getter_android.cc", | 
|  | "glue/synced_window_delegates_getter_android.h", | 
|  | "glue/web_contents_state_synced_tab_delegate.cc", | 
|  | "glue/web_contents_state_synced_tab_delegate.h", | 
|  | ] | 
|  | deps += [ | 
|  | "//chrome/browser/sync/android:jni_headers", | 
|  | "//chrome/browser/tab", | 
|  | "//chrome/browser/ui/android/tab_model", | 
|  | ] | 
|  | } else { | 
|  | sources += [ | 
|  | "sessions/browser_list_router_helper.cc", | 
|  | "sessions/browser_list_router_helper.h", | 
|  | ] | 
|  | public_deps += [ | 
|  | "//chrome/browser/ui:browser_list", | 
|  | "//chrome/browser/ui/tabs:tab_strip_model_observer", | 
|  | ] | 
|  | deps += [ | 
|  | "//chrome/browser/accessibility/tree_fixing:prefs", | 
|  | "//chrome/browser/ui/tabs:tab_strip", | 
|  | "//chrome/browser/ui/tabs/saved_tab_groups", | 
|  | ] | 
|  | } | 
|  | if (enable_extensions_core) { | 
|  | sources += [ | 
|  | "glue/extension_data_type_controller.cc", | 
|  | "glue/extension_data_type_controller.h", | 
|  | "glue/extension_setting_data_type_controller.cc", | 
|  | "glue/extension_setting_data_type_controller.h", | 
|  | ] | 
|  | public_deps += [ "//extensions/buildflags" ] | 
|  | deps += [ | 
|  | "//extensions/browser", | 
|  | "//extensions/browser/api/storage", | 
|  | "//extensions/common", | 
|  | ] | 
|  | } | 
|  | if (enable_extensions) { | 
|  | deps += [ | 
|  | "//chrome/browser/themes", | 
|  | "//chrome/browser/web_applications", | 
|  | ] | 
|  | } | 
|  | if (is_chromeos) { | 
|  | sources += [ | 
|  | "desk_sync_service_factory.cc", | 
|  | "desk_sync_service_factory.h", | 
|  | "wifi_configuration_sync_service_factory.cc", | 
|  | "wifi_configuration_sync_service_factory.h", | 
|  | ] | 
|  | deps += [ | 
|  | "//ash/constants", | 
|  | "//ash/public/cpp", | 
|  | "//chrome/browser/ash/app_list", | 
|  | "//chrome/browser/ash/app_list/arc", | 
|  | "//chrome/browser/ash/arc", | 
|  | "//chrome/browser/ash/arc:arc_util", | 
|  | "//chrome/browser/ash/arc/tracing", | 
|  | "//chrome/browser/ash/floating_sso", | 
|  | "//chrome/browser/ash/floating_workspace:utils", | 
|  | "//chrome/browser/ash/guest_os", | 
|  | "//chrome/browser/ash/login/session", | 
|  | "//chrome/browser/ash/printing", | 
|  | "//chrome/browser/ash/printing/oauth2", | 
|  | "//chrome/browser/ash/profiles", | 
|  | "//chrome/browser/ui/ash/multi_user", | 
|  | "//chromeos/ash/components/network", | 
|  | "//chromeos/ash/components/sync_wifi", | 
|  | "//chromeos/ash/components/tether", | 
|  | "//chromeos/ash/experiences/arc:arc_base_utils", | 
|  | "//components/desks_storage", | 
|  | "//ui/events/ash", | 
|  | ] | 
|  | allow_circular_includes_from += [ | 
|  | "//chrome/browser/ash/app_list", | 
|  | "//chrome/browser/ash/app_list/arc", | 
|  | "//chrome/browser/ash/login/session", | 
|  | ] | 
|  | } | 
|  |  | 
|  | allow_circular_includes_from += [ "//chrome/browser/consent_auditor" ] | 
|  |  | 
|  | if (enable_glic) { | 
|  | deps += [ "//chrome/browser/glic" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | # Code that depends on this target must be linked into //chrome/browser:browser | 
|  | # to pick up the implementations. The reason for this target separation is | 
|  | # because KeyedServiceFactories mix the interface and implementation. | 
|  | source_set("factories") { | 
|  | sources = [ | 
|  | "data_type_store_service_factory.h", | 
|  | "sync_service_factory.h", | 
|  | ] | 
|  | public_deps = [ | 
|  | "//base", | 
|  | "//chrome/browser/profiles", | 
|  | "//components/sync/engine", | 
|  | ] | 
|  | } |