blob: 552c77989e6e6a1e45d3267c972549d53f4006eb [file] [log] [blame]
# 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/enterprise/buildflags/buildflags.gni")
import("//components/safe_browsing/buildflags.gni")
import("//components/services/on_device_translation/buildflags/features.gni")
import("//extensions/buildflags/buildflags.gni")
import("//pdf/features.gni")
assert(is_win || is_mac || is_linux || is_chromeos || is_android)
source_set("prefs") {
sources = [
"browser_prefs.h",
"chrome_command_line_pref_store.h",
"chrome_pref_model_associator_client.h",
"chrome_pref_service_factory.h",
"incognito_mode_prefs.h",
"pref_metrics_service.h",
"profile_pref_store_manager.h",
]
public_deps = [
"//base",
"//chrome/browser/profiles:profile",
"//chrome/browser/sync",
"//components/keyed_service/core",
"//components/prefs",
"//components/sync_preferences",
"//mojo/public/cpp/bindings",
"//services/preferences/public/mojom",
"//third_party/blink/public/mojom:mojom_platform_headers",
"//url",
]
if (!is_android) {
sources += [
"persistent_renderer_prefs_manager.h",
"persistent_renderer_prefs_manager_factory.h",
]
}
}
source_set("impl") {
public_deps = [ "//chrome/browser:browser_public_dependencies" ]
sources = [
"browser_prefs.cc",
"chrome_command_line_pref_store.cc",
"chrome_pref_model_associator_client.cc",
"chrome_pref_service_factory.cc",
"incognito_mode_prefs.cc",
"pref_metrics_service.cc",
"profile_pref_store_manager.cc",
]
deps = [
":prefs",
":util",
"//chrome/browser:browser_process",
"//chrome/browser:flags",
"//chrome/browser/autocomplete:aim_eligibility_service",
"//chrome/browser/devtools",
"//chrome/browser/media/prefs",
"//chrome/browser/media/router:media_router_feature",
"//chrome/browser/media/router/discovery/access_code:access_code_cast_feature",
"//chrome/browser/media/webrtc",
"//chrome/browser/permissions",
"//chrome/browser/platform_experience:prefs",
"//chrome/browser/preloading:prefs",
"//chrome/browser/privacy_sandbox/notice:core",
"//chrome/browser/profiles",
"//chrome/browser/profiles:profile",
"//chrome/browser/profiles:profile_util",
"//chrome/browser/search",
"//chrome/browser/serial",
"//chrome/browser/signin:signin_promo",
"//chrome/browser/sync",
"//chrome/browser/task_manager",
"//chrome/browser/ui/hats",
"//chrome/browser/ui/prefs",
"//chrome/browser/ui/profiles",
"//chrome/browser/ui/safety_hub",
"//chrome/browser/ui/search_engines",
"//chrome/browser/ui/side_search",
"//chrome/browser/ui/startup",
"//chrome/browser/ui/startup:startup_tab",
"//chrome/browser/ui/toolbar",
"//chrome/browser/ui/toolbar/chrome_labs",
"//chrome/browser/ui/webui/accessibility",
"//chrome/browser/updates/announcement_notification",
"//components/blocked_content",
"//components/bookmarks/common",
"//components/breadcrumbs/core:status",
"//components/browser_sync:switches",
"//components/browsing_data/core",
"//components/certificate_transparency",
"//components/collaboration/public:prefs",
"//components/commerce/core:pref_names",
"//components/content_settings/core/browser",
"//components/custom_handlers",
"//components/domain_reliability:prefs",
"//components/enterprise/browser/identifiers",
"//components/enterprise/browser/promotion:prefs",
"//components/enterprise/connectors/core",
"//components/feature_engagement/public:prefs",
"//components/fingerprinting_protection_filter/common",
"//components/fingerprinting_protection_filter/common:prefs",
"//components/history_clusters/core",
"//components/image_fetcher/core/cache",
"//components/invalidation:legacy_topics_cleanup",
"//components/language/content/browser",
"//components/language/content/browser/ulp_language_code_locator",
"//components/language/core/browser",
"//components/lens:buildflags",
"//components/lens:enterprise_policy",
"//components/lookalikes/core",
"//components/media_device_salt",
"//components/metrics/demographics",
"//components/network_time",
"//components/ntp_tiles:pref_names",
"//components/omnibox/browser",
"//components/optimization_guide/core:features",
"//components/password_manager/core/browser",
"//components/performance_manager",
"//components/permissions",
"//components/plus_addresses/core/common:prefs",
"//components/pref_registry",
"//components/privacy_sandbox:privacy_sandbox_prefs",
"//components/privacy_sandbox:tpcd",
"//components/proxy_config",
"//components/reading_list/core",
"//components/regional_capabilities",
"//components/safe_browsing/core/common",
"//components/safe_browsing/core/common:safe_browsing_prefs",
"//components/safety_check:prefs",
"//components/saved_tab_groups/public:prefs",
"//components/security_interstitials/content:security_interstitial_page",
"//components/segmentation_platform/embedder/default_model",
"//components/signin/core/browser",
"//components/site_engagement/content",
"//components/subresource_filter/content/shared/browser",
"//components/subresource_filter/core/common",
"//components/supervised_user/core/browser",
"//components/sync_preferences",
"//components/sync_preferences/cross_device_pref_tracker/prefs",
"//components/sync_sessions",
"//components/tpcd/metadata/browser:prefs",
"//components/ukm",
"//components/update_client",
"//components/variations/service",
"//components/visited_url_ranking/internal:internal_url_grouping",
"//components/webui/chrome_urls",
"//components/webui/flags",
"//services/preferences/public/cpp/tracked",
"//services/preferences/public/mojom",
"//services/preferences/tracked",
]
if (enable_extensions_core) {
deps += [ "//extensions/common" ]
}
if (enable_background_mode) {
deps += [ "//chrome/browser/background/extensions" ]
}
if (is_chromeos) {
deps += [
"//ash",
"//chrome/browser/apps/app_discovery_service",
"//chrome/browser/apps/app_preload_service",
"//chrome/browser/apps/app_service",
"//chrome/browser/apps/app_service/webapk:prefs",
"//chrome/browser/ash/account_manager",
"//chrome/browser/ash/app_list",
"//chrome/browser/ash/app_list/arc",
"//chrome/browser/ash/app_mode",
"//chrome/browser/ash/app_restore",
"//chrome/browser/ash/apps",
"//chrome/browser/ash/arc/boot_phase_monitor",
"//chrome/browser/ash/arc/policy",
"//chrome/browser/ash/arc/session",
"//chrome/browser/ash/bluetooth",
"//chrome/browser/ash/borealis",
"//chrome/browser/ash/bruschetta",
"//chrome/browser/ash/cert_provisioning",
"//chrome/browser/ash/child_accounts",
"//chrome/browser/ash/child_accounts/parent_access_code",
"//chrome/browser/ash/child_accounts/time_limits",
"//chrome/browser/ash/crostini",
"//chrome/browser/ash/cryptauth",
"//chrome/browser/ash/customization",
"//chrome/browser/ash/device_name",
"//chrome/browser/ash/extensions",
"//chrome/browser/ash/file_manager",
"//chrome/browser/ash/file_system_provider",
"//chrome/browser/ash/first_run",
"//chrome/browser/ash/floating_workspace:utils",
"//chrome/browser/ash/guest_os",
"//chrome/browser/ash/kerberos",
"//chrome/browser/ash/login",
"//chrome/browser/ash/login/demo_mode",
"//chrome/browser/ash/login/quick_unlock",
"//chrome/browser/ash/login/reporting",
"//chrome/browser/ash/login/saml",
"//chrome/browser/ash/login/screens",
"//chrome/browser/ash/login/session",
"//chrome/browser/ash/login/signin",
"//chrome/browser/ash/login/users/avatar",
"//chrome/browser/ash/net",
"//chrome/browser/ash/performance",
"//chrome/browser/ash/platform_keys/key_permissions",
"//chrome/browser/ash/plugin_vm",
"//chrome/browser/ash/policy/core",
"//chrome/browser/ash/policy/enrollment",
"//chrome/browser/ash/policy/external_data/handlers",
"//chrome/browser/ash/policy/handlers",
"//chrome/browser/ash/policy/networking",
"//chrome/browser/ash/policy/remote_commands/crd",
"//chrome/browser/ash/policy/reporting",
"//chrome/browser/ash/policy/reporting/metrics_reporting",
"//chrome/browser/ash/policy/scheduled_task_handler",
"//chrome/browser/ash/policy/status_collector",
"//chrome/browser/ash/power",
"//chrome/browser/ash/power/auto_screen_brightness",
"//chrome/browser/ash/preferences",
"//chrome/browser/ash/printing",
"//chrome/browser/ash/printing/enterprise",
"//chrome/browser/ash/release_notes",
"//chrome/browser/ash/scanning",
"//chrome/browser/ash/settings",
"//chrome/browser/ash/system",
"//chrome/browser/ash/system_web_apps/apps/help_app",
"//chrome/browser/ash/system_web_apps/apps/media_app",
"//chrome/browser/ash/wallpaper_handlers",
"//chrome/browser/chromeos/enterprise/cloud_storage:cloud_storage_pref_utils",
"//chrome/browser/chromeos/extensions/echo_private:echo_private_api_util",
"//chrome/browser/chromeos/extensions/login_screen/login",
"//chrome/browser/chromeos/policy/dlp",
"//chrome/browser/chromeos/reporting",
"//chrome/browser/chromeos/upload_office_to_cloud",
"//chrome/browser/extensions/api/document_scan:profile_prefs_registry_util",
"//chrome/browser/extensions/api/enterprise_platform_keys:enterprise_platform_keys_registry_util",
"//chrome/browser/nearby_sharing/common",
"//chrome/browser/policy:onc",
"//chrome/browser/policy:system_features_disable_list",
"//chrome/browser/ui/ash/projector",
"//chrome/browser/ui/ash/shelf",
"//chrome/browser/ui/webui/ash/edu_coexistence",
"//chrome/browser/ui/webui/ash/login",
"//chrome/browser/ui/webui/ash/settings",
"//chrome/browser/ui/webui/signin/ash",
"//chromeos/ash/components/audio",
"//chromeos/ash/components/boca/babelorca",
"//chromeos/ash/components/boca/on_task",
"//chromeos/ash/components/carrier_lock",
"//chromeos/ash/components/demo_mode",
"//chromeos/ash/components/local_search_service",
"//chromeos/ash/components/network",
"//chromeos/ash/components/policy",
"//chromeos/ash/components/quickoffice",
"//chromeos/ash/components/report",
"//chromeos/ash/components/scheduler_config",
"//chromeos/ash/components/timezone",
"//chromeos/ash/experiences/arc:prefs",
"//chromeos/ash/services/assistant/public/cpp",
"//chromeos/ash/services/auth_factor_config",
"//chromeos/ash/services/bluetooth_config",
"//chromeos/ash/services/device_sync/public/cpp:prefs",
"//chromeos/ash/services/multidevice_setup",
"//chromeos/components/quick_answers/public/cpp:prefs",
"//chromeos/constants",
"//chromeos/ui/wm",
"//components/onc",
"//components/quirks",
]
}
if (is_win || is_mac || is_linux) {
deps += [
"//chrome/browser/browser_switcher",
"//chrome/browser/ui/webui/whats_new",
]
}
if (is_win) {
deps += [ "//chrome/browser/os_crypt" ]
}
if (is_android) {
deps += [
"//chrome/browser/notifications",
"//chrome/browser/notifications:notifications_java_enum_srcjar",
"//chrome/browser/partnerbookmarks:android",
"//chrome/browser/password_manager/android:utils",
"//chrome/browser/readaloud/android:native",
"//chrome/browser/search_engines",
]
} else {
deps += [
"//chrome/browser/actor/ui",
"//chrome/browser/contextual_cueing",
"//chrome/browser/promos:utils",
"//chrome/browser/screen_ai:prefs",
"//chrome/browser/search/background",
"//chrome/browser/search_engine_choice",
"//chrome/browser/search_engines",
"//chrome/browser/sharing_hub",
"//chrome/browser/ui/commerce",
"//chrome/browser/ui/extensions",
"//chrome/browser/ui/performance_controls",
"//chrome/browser/ui/send_tab_to_self",
"//chrome/browser/ui/tabs",
"//chrome/browser/ui/tabs:tab_strip",
"//chrome/browser/ui/tabs/organization",
"//chrome/browser/ui/tabs/saved_tab_groups",
"//chrome/browser/ui/views/side_panel",
"//chrome/browser/user_education",
"//components/headless/policy",
"//components/live_caption",
"//components/live_caption:live_translate",
]
sources += [
"persistent_renderer_prefs_manager.cc",
"persistent_renderer_prefs_manager_factory.cc",
]
}
if (enable_extensions) {
deps += [
"//chrome/browser/apps/platform_apps",
"//extensions/browser/api/audio",
"//extensions/browser/api/runtime",
]
}
if (enable_extensions_core) {
deps += [
"//chrome/browser/extensions",
"//extensions/browser",
]
}
if (enable_on_device_translation) {
deps += [ "//chrome/browser/on_device_translation" ]
}
if (enterprise_data_controls) {
deps += [ "//components/enterprise/data_controls/core/browser" ]
}
if (enable_pdf) {
deps += [ "//chrome/browser/pdf:pdf_pref_names" ]
}
if (safe_browsing_mode != 0) {
deps += [ "//components/safe_browsing/content/common:file_type_policies" ]
}
if (is_mac) {
deps += [ "//chrome/browser/web_applications" ]
}
if (enable_glic) {
deps += [
"//chrome/browser/background/glic",
"//chrome/browser/glic",
]
}
if (!is_android && !is_chromeos) {
deps += [ "//chrome/browser/ui/startup/default_browser_prompt" ]
}
}
# There are users of this util such as //c/b/ash/app_restore. If it's part of
# the main target, circular dependency happens as :prefs also depends on that.
source_set("util") {
sources = [
"pref_service_incognito_allowlist.h",
"pref_service_syncable_util.h",
"session_startup_pref.h",
]
public_deps = [
"//components/prefs",
"//url",
]
}
source_set("util_impl") {
public_deps = [ "//chrome/browser:browser_public_dependencies" ]
sources = [
"pref_service_incognito_allowlist.cc",
"pref_service_syncable_util.cc",
"session_startup_pref.cc",
]
deps = [
":util",
"//base",
"//chrome/browser/profiles:profile",
"//chrome/browser/ui:ui_features",
"//chrome/browser/ui/startup:startup_tab",
"//chrome/common:constants",
"//components/bookmarks/common",
"//components/content_settings/core/common",
"//components/metrics:metrics_pref_names",
"//components/pref_registry",
"//components/prefs",
"//components/reading_list/core",
"//components/sync_preferences",
"//components/ukm",
"//components/url_formatter",
]
}
source_set("unit_tests") {
testonly = true
sources = [
"browser_prefs_unittest.cc",
"chrome_command_line_pref_store_proxy_unittest.cc",
"chrome_command_line_pref_store_ssl_manager_unittest.cc",
"chrome_command_line_pref_store_unittest.cc",
"chrome_pref_service_factory_unittest.cc",
"chrome_pref_service_unittest.cc",
"incognito_mode_prefs_unittest.cc",
"profile_pref_store_manager_unittest.cc",
"proxy_policy_unittest.cc",
"session_startup_pref_unittest.cc",
]
deps = [
":prefs",
":util",
"//base",
"//base/test:test_support",
"//chrome/browser",
"//chrome/browser:browser_process",
"//chrome/browser/profiles:profile_util",
"//chrome/browser/profiles:profiles_extra_parts",
"//chrome/common:constants",
"//chrome/common:non_code_constants",
"//chrome/test:test_support",
"//components/language/core/browser",
"//components/performance_manager",
"//components/policy:generated",
"//components/policy:policy_code_generate",
"//components/policy/core/common",
"//components/policy/core/common:common_constants",
"//components/policy/core/common:test_support",
"//components/pref_registry",
"//components/prefs",
"//components/prefs:test_support",
"//components/proxy_config",
"//components/sync/base",
"//components/sync_preferences",
"//components/sync_preferences:test_support",
"//content/public/browser",
"//content/public/common",
"//content/test:test_support",
"//mojo/public/cpp/bindings",
"//net:test_support",
"//services/cert_verifier/public/mojom",
"//services/network/public/cpp",
"//services/network/public/mojom",
"//services/preferences/public/cpp/tracked",
"//services/preferences/public/cpp/tracked:test_support",
"//services/preferences/public/mojom",
"//testing/gmock",
"//testing/gtest",
"//third_party/blink/public/common:headers",
"//ui/base",
"//url",
]
if (!is_android) {
sources += [ "persistent_renderer_prefs_unittest.cc" ]
}
# TODO(crbug.com/40031409): Fix code that adds exit-time destructors and
# enable the diagnostic by removing this line.
configs += [ "//build/config/compiler:no_exit_time_destructors" ]
}
if (!is_android) {
source_set("browser_tests") {
testonly = true
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
sources = [
"pref_functional_browsertest.cc",
"pref_service_browsertest.cc",
]
deps = [
"//base",
"//base/test:test_support",
"//chrome/browser",
"//chrome/browser/preloading:prefs",
"//chrome/browser/search_engines",
"//chrome/browser/ui",
"//chrome/browser/ui/browser_window",
"//chrome/browser/ui/tabs:tab_strip",
"//chrome/common:constants",
"//chrome/common:non_code_constants",
"//chrome/test:test_support",
"//chrome/test:test_support_ui",
"//components/bookmarks/common",
"//components/content_settings/core/browser",
"//components/content_settings/core/common",
"//components/embedder_support",
"//components/safe_browsing/core/common:safe_browsing_prefs",
"//components/sync_preferences",
"//content/public/browser",
"//content/test:test_support",
"//net:test_support",
"//testing/gmock",
"//ui/gfx/geometry",
]
}
}