Files
Alex e66c446dd5 [VPN 2.0] Add BraveVpnServiceImpl V2 stubs (#36935)
To add a new BraveVpnService implementation based on Architecture 2.0,
which must co-exist with Architecture 1.0 for quite a while, we need
to split service's interface and implementation. All the external
components will keep accessing VPN service via the BraveVpnService
interface, but the implementation mostly goes into BraveVpnServiceImpl.

This change adds the second service implementation, BraveVpnServiceImpl,
for Architecture 2.0. It will live in a "components/brave_vpn/browser/v2"
subdirectory, but will eventually move into "components/brave_vpn/browser"
once V1 implementation has been removed.

Notable changes:
- fully testable BraveVpnServiceImpl v2 stub implementation, in a
  dedicated "v2" namespace;
- BraveVpnServiceFactory can now create a proper implementation based
  on the compile-time GN flags;
- v1/v2 include isolation using DEPS include rules (so that the
  implementations can't depend on each other);
- stub unit test for BraveVpnServiceImpl v2.

Resolves https://github.com/brave/brave-browser/issues/54597
2026-06-04 23:24:47 +02:00

933 lines
34 KiB
Plaintext

# Copyright (c) 2020 The Brave Authors. All rights reserved.
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
import("//brave/browser/ai_chat/android/sources.gni")
import("//brave/browser/autocomplete/sources.gni")
import("//brave/browser/brave_account/android/sources.gni")
import("//brave/browser/brave_news/sources.gni")
import("//brave/browser/brave_referrals/sources.gni")
import("//brave/browser/brave_vpn/sources.gni")
import("//brave/browser/browsing_data/sources.gni")
import("//brave/browser/cosmetic_filters/sources.gni")
import("//brave/browser/debounce/sources.gni")
import("//brave/browser/ephemeral_storage/sources.gni")
import("//brave/browser/gcm_driver/sources.gni")
import("//brave/browser/infobars/sources.gni")
import("//brave/browser/misc_metrics/sources.gni")
import("//brave/browser/net/sources.gni")
import("//brave/browser/new_tab/sources.gni")
import("//brave/browser/onboarding/sources.gni")
import("//brave/browser/perf/sources.gni")
import("//brave/browser/permissions/sources.gni")
import("//brave/browser/profiles/sources.gni")
import("//brave/browser/renderer_context_menu/sources.gni")
import("//brave/browser/request_otr/sources.gni")
import("//brave/browser/search_engines/sources.gni")
import("//brave/browser/sync/sources.gni")
import("//brave/browser/themes/sources.gni")
import("//brave/browser/ui/config.gni")
import("//brave/browser/updater/buildflags.gni")
import("//brave/browser/url_sanitizer/sources.gni")
import("//brave/browser/web_discovery/sources.gni")
import("//brave/browser/webcompat_reporter/sources.gni")
import("//brave/build/config.gni")
import("//brave/chromium_src/chrome/browser/prefs/sources.gni")
import("//brave/chromium_src/chrome/browser/sources.gni")
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
import("//brave/components/brave_ads/buildflags/buildflags.gni")
import("//brave/components/brave_education/buildflags.gni")
import("//brave/components/brave_news/common/buildflags/buildflags.gni")
import("//brave/components/brave_origin/buildflags/buildflags.gni")
import("//brave/components/brave_rewards/core/buildflags/buildflags.gni")
import("//brave/components/brave_talk/buildflags/buildflags.gni")
import("//brave/components/brave_vpn/common/buildflags/buildflags.gni")
import("//brave/components/brave_wallet/common/buildflags/buildflags.gni")
import("//brave/components/brave_wayback_machine/buildflags/buildflags.gni")
import("//brave/components/commander/common/buildflags/buildflags.gni")
import("//brave/components/containers/buildflags/buildflags.gni")
import("//brave/components/email_aliases/buildflags/buildflags.gni")
import("//brave/components/ipfs/buildflags/buildflags.gni")
import("//brave/components/playlist/core/common/buildflags/buildflags.gni")
import("//brave/components/psst/buildflags/buildflags.gni")
import("//brave/components/tor/buildflags/buildflags.gni")
import("//brave/components/web_discovery/buildflags/buildflags.gni")
import("//chrome/browser/buildflags.gni")
import("//extensions/buildflags/buildflags.gni")
import("//printing/buildflags/buildflags.gni")
if (enable_brave_rewards) {
import("//brave/browser/brave_rewards/android/sources.gni")
}
if (enable_brave_wallet) {
import("//brave/browser/brave_wallet/android/sources.gni")
}
if (enable_playlist) {
import("//brave/browser/playlist/sources.gni")
}
brave_chrome_browser_allow_circular_includes_from = []
brave_chrome_browser_visibility = [
"//brave/browser/*",
"//brave/test:*",
# Chrome does not yet define a visibility list by itself, meaning we can't
# append our list to them and that what we have here will become law not just
# for Brave, but also for the rest of chrome. Thus, we need to provide our own
# permissive list for chrome here too, to be removed in the future if Chrome
# ever provides it's own list (at which point we'll append instead of set).
"//chrome:dependencies",
"//chrome/app/*",
"//chrome/test/*",
"//extensions/*",
]
brave_chrome_browser_sources = [
"//brave/browser/brave_browser_features.cc",
"//brave/browser/brave_browser_features.h",
"//brave/browser/brave_browser_main_extra_parts.cc",
"//brave/browser/brave_browser_main_extra_parts.h",
"//brave/browser/brave_browser_main_parts.cc",
"//brave/browser/brave_browser_main_parts.h",
"//brave/browser/brave_browser_process.cc",
"//brave/browser/brave_browser_process_impl.cc",
"//brave/browser/brave_browser_process_impl.h",
"//brave/browser/brave_content_browser_client.cc",
"//brave/browser/brave_content_browser_client.h",
"//brave/browser/brave_local_state_prefs.cc",
"//brave/browser/brave_local_state_prefs.h",
"//brave/browser/brave_profile_prefs.cc",
"//brave/browser/brave_profile_prefs.h",
"//brave/browser/brave_shell_integration.cc",
"//brave/browser/brave_shell_integration.h",
"//brave/browser/brave_tab_helpers.cc",
"//brave/browser/brave_tab_helpers.h",
"//brave/browser/browser_context_keyed_service_factories.cc",
"//brave/browser/browser_context_keyed_service_factories.h",
"//brave/browser/geolocation/brave_geolocation_permission_context_delegate.cc",
"//brave/browser/geolocation/brave_geolocation_permission_context_delegate.h",
"//brave/browser/metrics/brave_metrics_service_accessor.cc",
"//brave/browser/metrics/brave_metrics_service_accessor.h",
"//brave/browser/metrics/metrics_reporting_util.cc",
"//brave/browser/metrics/metrics_reporting_util.h",
"//brave/browser/policy/brave_simple_policy_map.h",
"//brave/browser/prefs/brave_pref_service_incognito_allowlist.cc",
"//brave/browser/prefs/brave_pref_service_incognito_allowlist.h",
"//brave/browser/translate/brave_translate_prefs_migration.cc",
"//brave/browser/translate/brave_translate_prefs_migration.h",
"//brave/browser/translate/brave_translate_utils.cc",
"//brave/browser/translate/brave_translate_utils.h",
"//brave/browser/update_util.cc",
"//brave/browser/update_util.h",
"//brave/chromium_src/chrome/browser/notifications/notification_handler_impl.h",
]
if (enable_brave_wallet) {
brave_chrome_browser_sources += [
"//brave/browser/brave_wallet/wallet_data_files_installer_delegate_impl.cc",
"//brave/browser/brave_wallet/wallet_data_files_installer_delegate_impl.h",
]
}
brave_chrome_browser_deps = [
"//base",
"//brave/app:brave_generated_resources_grit",
"//brave/browser:brave_global_features_impl",
"//brave/browser:browser_process",
"//brave/browser:sparkle_buildflags",
"//brave/browser/bluetooth",
"//brave/browser/brave_account",
"//brave/browser/brave_adaptive_captcha",
"//brave/browser/brave_adaptive_captcha:impl",
"//brave/browser/brave_origin",
"//brave/browser/brave_search",
"//brave/browser/brave_shields",
"//brave/browser/brave_shields:brave_shields_impl",
"//brave/browser/brave_stats",
"//brave/browser/component_updater",
"//brave/browser/history_embeddings",
"//brave/browser/metrics/buildflags",
"//brave/browser/misc_metrics",
"//brave/browser/misc_metrics:misc_metrics_impl",
"//brave/browser/net:features",
"//brave/browser/ntp_background",
"//brave/browser/policy/handlers",
"//brave/browser/serp_metrics",
"//brave/browser/serp_metrics:impl",
"//brave/browser/skus",
"//brave/browser/sync",
"//brave/browser/themes",
"//brave/browser/ui",
"//brave/browser/ui/webui/brave_account",
"//brave/browser/ui/webui/local_ai",
"//brave/browser/updater:buildflags",
"//brave/common",
"//brave/common:mojo_bindings",
"//brave/components/ai_chat/core/common/buildflags",
# Unconditional for gn check as the NTP WebUI always needs the mojom
# types since typescript cannnot yet conditionally import during typecheck.
# TODO(https://github.com/brave/brave-browser/issues/53190): remove when
# fixed.
"//brave/components/ai_chat/core/common/mojom",
"//brave/components/body_sniffer",
"//brave/components/brave_account",
"//brave/components/brave_account:features",
"//brave/components/brave_account/mojom",
"//brave/components/brave_adaptive_captcha",
"//brave/components/brave_ads/buildflags",
"//brave/components/brave_component_updater/browser",
"//brave/components/brave_education:buildflags",
"//brave/components/brave_new_tab_ui:mojom",
"//brave/components/brave_news/common:mojom",
"//brave/components/brave_news/common/buildflags",
"//brave/components/brave_origin",
"//brave/components/brave_perf_predictor/browser",
"//brave/components/brave_policy",
"//brave/components/brave_policy/ad_block_only_mode",
"//brave/components/brave_private_new_tab_ui/common",
"//brave/components/brave_private_new_tab_ui/common:mojom",
"//brave/components/brave_referrals/browser",
"//brave/components/brave_rewards/core",
"//brave/components/brave_rewards/core:features",
"//brave/components/brave_rewards/core/buildflags",
"//brave/components/brave_rewards/core/mojom",
"//brave/components/brave_rewards/core/mojom:webui",
"//brave/components/brave_search/browser",
"//brave/components/brave_search/common",
"//brave/components/brave_search/common:mojom",
"//brave/components/brave_shields/core/common",
"//brave/components/brave_shields/core/common:mojom",
"//brave/components/brave_sync",
"//brave/components/brave_sync:features",
"//brave/components/brave_sync:network_time_helper",
"//brave/components/brave_sync:prefs",
"//brave/components/brave_talk/buildflags",
"//brave/components/brave_user_agent/browser",
"//brave/components/brave_user_agent/common",
"//brave/components/brave_vpn/common/buildflags",
"//brave/components/brave_vpn/common/mojom",
"//brave/components/brave_wallet/common/buildflags",
"//brave/components/brave_wayback_machine/buildflags",
"//brave/components/commander/common/buildflags",
"//brave/components/constants",
"//brave/components/containers/buildflags",
"//brave/components/cosmetic_filters/browser",
"//brave/components/cosmetic_filters/common:mojom",
"//brave/components/de_amp/browser",
"//brave/components/de_amp/common",
"//brave/components/debounce/content/browser",
"//brave/components/email_aliases/buildflags",
"//brave/components/global_privacy_control",
"//brave/components/google_sign_in_permission",
"//brave/components/https_upgrade_exceptions/browser",
"//brave/components/ipfs",
"//brave/components/ipfs/buildflags",
"//brave/components/l10n/common",
"//brave/components/local_ai/core",
"//brave/components/local_ai/core:features",
"//brave/components/local_ai/core:mojom",
"//brave/components/ntp_background_images/browser",
"//brave/components/ntp_background_images/buildflags",
"//brave/components/ntp_background_images/common",
"//brave/components/ntp_tiles",
"//brave/components/p3a",
"//brave/components/p3a_utils",
"//brave/components/password_strength_meter:mojom",
"//brave/components/playlist/core/common/buildflags",
"//brave/components/privacy_sandbox",
"//brave/components/query_filter/browser",
"//brave/components/query_filter/common",
"//brave/components/request_otr/common/buildflags",
"//brave/components/resources",
"//brave/components/serp_metrics",
"//brave/components/serp_metrics:features",
"//brave/components/serp_metrics:prefs",
"//brave/components/skus/browser",
"//brave/components/skus/common",
"//brave/components/skus/common:mojom",
"//brave/components/speech_to_text",
"//brave/components/speech_to_text:buildflags",
"//brave/components/speedreader/common/buildflags",
"//brave/components/tor/buildflags",
"//brave/components/v8/buildflags",
"//brave/components/version_info",
"//brave/components/web_discovery/buildflags",
"//brave/components/webcompat/content/browser",
"//brave/components/webcompat/core/common",
"//brave/extensions:common",
"//brave/services/network/public/cpp",
"//brave/third_party/blink/renderer",
"//chrome/browser:browser_process",
"//chrome/browser/profiles:profile",
"//chrome/browser/ui",
"//chrome/common",
"//chrome/common:channel_info",
"//chrome/utility",
"//components/account_id",
"//components/autofill/core/common",
"//components/browsing_data/core",
"//components/content_settings/browser",
"//components/content_settings/core/browser",
"//components/content_settings/core/common",
"//components/embedder_support",
"//components/feed/core/shared_prefs:feed_shared_prefs",
"//components/gcm_driver:gcm_buildflags",
"//components/metrics",
"//components/ntp_tiles",
"//components/ntp_tiles:pref_names",
"//components/omnibox/browser",
"//components/password_manager/core/common",
"//components/permissions",
"//components/policy/core/common:common_constants",
"//components/pref_registry",
"//components/prefs",
"//components/privacy_sandbox:privacy_sandbox_prefs",
"//components/safe_browsing/core/common:safe_browsing_prefs",
"//components/search_engines",
"//components/services/heap_profiling/public/mojom",
"//components/signin/public/base",
"//components/sync/base",
"//components/sync/service",
"//components/translate/core/browser:translate_pref_names",
"//components/version_info",
"//components/version_info:channel",
"//content/public/browser",
"//content/public/common",
"//extensions/buildflags",
"//mojo/public/cpp/bindings",
"//net",
"//services/metrics/public/cpp:metrics_cpp",
"//services/network/public/cpp",
"//third_party/abseil-cpp:absl",
"//third_party/blink/public/mojom:mojom_platform_headers",
"//third_party/widevine/cdm:buildflags",
"//ui/base",
"//url",
]
if (enable_brave_rewards) {
brave_chrome_browser_deps += [
"//brave/browser/brave_rewards:brave_rewards_impl",
"//brave/browser/brave_rewards:util",
]
}
if (enable_psst) {
brave_chrome_browser_deps += [
"//brave/browser/psst",
"//brave/browser/ui/webui/psst",
"//brave/components/psst/browser/content",
"//brave/components/psst/browser/core",
"//brave/components/psst/common",
]
}
if (enable_brave_ads) {
brave_chrome_browser_deps += [
"//brave/browser/brave_ads",
"//brave/browser/brave_ads:impl",
"//brave/browser/brave_ads/creatives/search_result_ad",
"//brave/browser/brave_ads/tabs",
"//brave/browser/notifications",
"//brave/browser/ui/webui/ads_internals",
"//brave/components/brave_ads/browser",
"//brave/components/brave_ads/core",
]
}
if (enable_brave_wallet) {
brave_chrome_browser_deps += [
"//brave/browser/brave_wallet",
"//brave/browser/brave_wallet:brave_wallet_delegate",
"//brave/browser/brave_wallet:tab_helper",
"//brave/browser/ui/webui/brave_wallet/wallet_page",
"//brave/components/brave_wallet/browser",
"//brave/components/brave_wallet/browser:pref_names",
"//brave/components/brave_wallet/browser:utils",
"//brave/components/brave_wallet/common",
"//brave/components/brave_wallet/common:mojom",
"//brave/components/decentralized_dns/content",
"//brave/components/decentralized_dns/core",
]
if (!is_android) {
brave_chrome_browser_deps += [
"//brave/browser/brave_wallet/notifications",
"//brave/browser/ui/webui/brave_wallet/wallet_panel",
]
}
}
if (enable_email_aliases) {
brave_chrome_browser_deps += [
"//brave/browser/email_aliases",
"//brave/browser/ui/webui/email_aliases",
"//brave/components/email_aliases:features",
"//brave/components/email_aliases:mojom",
"//brave/components/email_aliases:pref_names",
"//brave/components/email_aliases:service",
]
}
if (!is_android) {
# BraveHidDelegate inherits from ChromeHidDelegate, and referenced by
# BraveContentBrowserClient, so we put into the same source_set.
brave_chrome_browser_sources += [
"//brave/browser/hid/brave_hid_delegate.cc",
"//brave/browser/hid/brave_hid_delegate.h",
]
brave_chrome_browser_deps += [
"//brave/components/brave_wallet/common/buildflags",
"//chrome/browser/hid",
"//chrome/browser/ui/hid",
"//services/device/public/cpp/hid",
]
if (enable_brave_wallet) {
brave_chrome_browser_deps +=
[ "//brave/browser/brave_wallet:brave_wallet_hid_chooser" ]
}
}
if (!is_android) {
# Already included on android by upstream
# Including v2 back into brave build as we make use of `feed::FetchRssLinks` in `brave_news_tab_helper.cc`.
brave_chrome_browser_sources += [
"feed/feed_service_factory.cc",
"feed/feed_service_factory.h",
"feed/rss_links_fetcher.cc",
"feed/rss_links_fetcher.h",
]
brave_chrome_browser_deps += [
"//brave/browser/ui/split_view",
"//brave/browser/ui/tabs:impl",
"//brave/browser/ui/webui/brave_new_tab_page_refresh",
"//brave/browser/ui/webui/brave_new_tab_page_refresh:mojom",
"//brave/browser/ui/webui/brave_welcome_page",
"//brave/browser/workspaces",
"//brave/browser/workspaces:impl",
"//brave/ui/webui/brave_color_change_listener",
"//chrome/browser/regional_capabilities",
"//chrome/browser/ui/thumbnails",
"//components/feed:feature_list",
"//components/feed/core/v2:feed_core_v2",
"//components/feed/mojom:mojo_bindings",
"//components/regional_capabilities",
]
if (enable_brave_news) {
brave_chrome_browser_deps +=
[ "//brave/browser/ui/webui/brave_news_internals" ]
}
}
if (enable_brave_education) {
brave_chrome_browser_deps += [ "//brave/browser/ui/webui/brave_education" ]
}
if (is_brave_origin_branded) {
brave_chrome_browser_deps += [
"//brave/browser/ui/views/brave_origin",
"//brave/browser/ui/webui/brave_origin_startup",
]
}
if (enable_ai_chat) {
brave_chrome_browser_deps += [
"//brave/browser/ai_chat",
"//brave/browser/ai_chat/ollama",
"//brave/browser/ui/webui/ai_chat",
"//brave/components/ai_chat/content/browser",
"//brave/components/ai_chat/core/browser",
"//brave/components/ai_chat/core/common",
]
if (!is_android) {
brave_chrome_browser_deps += [ "//brave/browser/ui/ai_chat" ]
}
}
if (enable_ai_chat && is_android) {
brave_chrome_browser_sources += brave_browser_ai_chat_android_sources
brave_chrome_browser_deps += brave_browser_ai_chat_android_deps
}
if (enable_containers) {
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/containers" ]
brave_chrome_browser_deps += [
"//brave/browser/containers",
"//brave/components/containers/content/browser",
"//brave/components/containers/content/browser:tab_restore",
"//brave/components/containers/core/browser",
"//brave/components/containers/core/common",
]
}
if (enable_brave_talk) {
brave_chrome_browser_deps += [ "//brave/components/brave_talk" ]
}
if (enable_commander) {
brave_chrome_browser_deps += [
"//brave/components/commander/browser",
"//brave/components/commands/browser",
"//brave/components/commands/common",
]
}
if (is_mac) {
brave_chrome_browser_sources += [
"//brave/browser/brave_app_controller_mac.h",
"//brave/browser/brave_app_controller_mac.mm",
"//brave/browser/brave_browser_main_parts_mac.h",
"//brave/browser/brave_browser_main_parts_mac.mm",
"//brave/browser/brave_shell_integration_mac.h",
"//brave/browser/brave_shell_integration_mac.mm",
"//brave/browser/mac/keystone_glue.h",
"//brave/browser/mac/keystone_glue.mm",
"//brave/browser/mac/keystone_registration.h",
"//brave/browser/mac/keystone_registration.mm",
]
brave_chrome_browser_deps += [
"//brave/app:command_ids",
"//brave/browser:sparkle_buildflags",
"//brave/browser/updater:buildflags",
"//chrome:strings",
"//chrome/app:generated_resources",
"//chrome/common:non_code_constants",
]
brave_chrome_framework_contents = []
}
if (enable_sparkle) {
brave_chrome_browser_sources += [
"//brave/browser/mac/sparkle_glue.h",
"//brave/browser/mac/sparkle_glue.mm",
"//brave/browser/mac/su_updater.h",
]
brave_chrome_framework_contents += [ "Frameworks" ]
}
if (enable_omaha4) {
brave_chrome_browser_sources += [
"//brave/browser/brave_browser_main_extra_parts_p3a.cc",
"//brave/browser/brave_browser_main_extra_parts_p3a.h",
]
brave_chrome_browser_deps += [
"//brave/browser/updater:features",
"//brave/browser/updater:p3a",
]
}
if (enable_speedreader) {
brave_chrome_browser_deps += [
"//brave/browser/speedreader",
"//brave/browser/ui/speedreader",
]
}
if (enable_request_otr) {
brave_chrome_browser_deps += [ "//brave/components/request_otr/common" ]
}
if (enable_web_discovery_native) {
brave_chrome_browser_deps += [
"//brave/browser/web_discovery",
"//brave/components/web_discovery/browser",
"//brave/components/web_discovery/common",
]
}
if (enable_brave_vpn) {
brave_chrome_browser_deps += [
"//brave/components/brave_vpn/browser",
"//brave/components/brave_vpn/browser:v1_utils",
"//brave/components/brave_vpn/browser/connection",
"//brave/components/brave_vpn/browser/connection:api",
"//brave/components/brave_vpn/common",
]
}
if (enable_brave_vpn_v2) {
brave_chrome_browser_deps += [
"//brave/components/brave_vpn/browser/v2:browser",
"//brave/third_party/boringtun",
]
}
if (is_android) {
brave_chrome_browser_sources += [
"//brave/browser/android/brave_init_android.cc",
"//brave/browser/password_manager/android/password_ui_view_android.cc",
"//brave/browser/password_manager/android/password_ui_view_android.h",
"//brave/browser/sync/brave_sync_devices_android.cc",
"//brave/browser/sync/brave_sync_devices_android.h",
"//chrome/browser/bookmarks/bookmark_html_writer.cc",
"//chrome/browser/bookmarks/bookmark_html_writer.h",
"//chrome/browser/importer/profile_writer.cc",
"//chrome/browser/importer/profile_writer.h",
]
brave_chrome_browser_sources += brave_browser_brave_account_android_sources
brave_chrome_browser_sources += brave_browser_misc_metrics_android_sources
brave_chrome_browser_deps += brave_browser_brave_account_android_deps
if (enable_brave_rewards) {
brave_chrome_browser_sources += brave_browser_brave_rewards_android_sources
brave_chrome_browser_deps += brave_browser_brave_rewards_android_deps
}
if (enable_brave_wallet) {
brave_chrome_browser_sources += brave_browser_brave_wallet_android_sources
brave_chrome_browser_deps += brave_browser_brave_wallet_android_deps
}
brave_chrome_browser_deps += [
"//brave/browser/android:android_browser_process",
"//brave/browser/android:tabs_impl",
"//brave/browser/android/preferences",
"//brave/browser/android/safe_browsing:buildflags",
"//brave/browser/android/youtube_script_injector",
"//brave/browser/android/youtube_script_injector:features",
"//brave/browser/download/android:jni_headers",
"//brave/browser/ntp_background/android",
"//brave/browser/password_entry_edit/android",
"//brave/browser/ui/webui/new_tab_takeover/android:new_tab_takeover",
"//brave/build/android:jni_headers",
"//brave/components/brave_sync:sync_service_impl_helper",
"//chrome/android:jni_headers",
"//chrome/browser/password_manager/android:jni_headers",
"//components/password_manager/core/browser/import:importer",
"//components/sync_device_info",
]
if (enable_brave_ads) {
brave_chrome_browser_deps += [ "//brave/browser/brave_ads/android" ]
}
} else {
brave_chrome_browser_sources += [
"//brave/browser/p3a/p3a_core_metrics.cc",
"//brave/browser/p3a/p3a_core_metrics.h",
"//brave/browser/profile_resetter/brave_profile_resetter.cc",
"//brave/browser/profile_resetter/brave_profile_resetter.h",
]
brave_chrome_browser_deps += [
"//brave/app:brave_generated_resources_grit",
"//brave/browser/importer",
"//brave/components/brave_search_conversion",
"//brave/components/time_period_storage",
"//components/infobars/content",
]
if (enable_brave_ads) {
brave_chrome_browser_deps += [ "//brave/browser/brave_ads/tooltips" ]
}
}
if (toolkit_views) {
brave_chrome_browser_sources += brave_browser_onboarding_sources
brave_chrome_browser_deps += brave_browser_onboarding_deps
brave_chrome_browser_deps += [
"//brave/browser/ui/darker_theme",
"//brave/components/sidebar/browser",
]
}
if (enable_extensions) {
brave_chrome_browser_deps += [
"//brave/browser/extensions",
"//chrome/browser/extensions",
"//extensions/browser",
"//extensions/common:common_constants",
"//extensions/common:extension_features",
]
}
if (enable_brave_wayback_machine) {
brave_chrome_browser_deps += [ "//brave/components/brave_wayback_machine" ]
}
if (enable_tor) {
brave_chrome_browser_deps += [
"//brave/browser/tor",
"//brave/browser/tor:impl",
"//brave/components/tor",
"//brave/components/tor:common",
"//brave/components/tor:pref_names",
]
}
if (enable_widevine) {
brave_chrome_browser_sources += [
"//brave/browser/brave_drm_tab_helper.cc",
"//brave/browser/brave_drm_tab_helper.h",
]
brave_chrome_browser_deps += [
"//brave/browser/widevine",
"//brave/components/brave_drm",
"//brave/components/widevine:constants",
]
}
if (is_win) {
brave_chrome_browser_sources += [
"//brave/browser/brave_shell_integration_win.cc",
"//brave/browser/brave_shell_integration_win.h",
"//brave/browser/default_protocol_handler_utils_win.cc",
"//brave/browser/default_protocol_handler_utils_win.h",
]
brave_chrome_browser_deps += [
"//brave/components/windows_recall",
"//chrome/install_static:install_static_util",
"//chrome/installer/util:with_no_strings",
]
}
if (is_win || is_android) {
brave_chrome_browser_sources += [
"//brave/browser/day_zero_browser_ui_expt/day_zero_browser_ui_expt_manager.cc",
"//brave/browser/day_zero_browser_ui_expt/day_zero_browser_ui_expt_manager.h",
"//brave/browser/day_zero_browser_ui_expt/pref_names.h",
]
}
if (is_win && is_official_build) {
brave_chrome_browser_sources += [
"//chrome/browser/google/google_update_win.cc",
"//chrome/browser/google/google_update_win.h",
"//chrome/browser/google/switches.cc",
"//chrome/browser/google/switches.h",
]
}
brave_chrome_browser_public_deps = [
"//brave/app/vector_icons",
"//brave/browser:browser_process",
"//brave/browser/resources/bookmark_icon:bookmark_icon_resources",
"//brave/common/importer:interfaces",
"//brave/components/brave_sync:constants",
"//brave/components/containers/buildflags",
"//brave/components/psst/buildflags",
"//brave/components/v8/buildflags",
"//brave/components/variations",
]
if (is_mac) {
brave_chrome_framework_public_deps = [ "//brave:framework_bundle_data" ]
brave_chrome_framework_bundle_deps = [ "//brave:framework_bundle_data" ]
}
brave_chrome_browser_sources += brave_browser_profiles_sources
brave_chrome_browser_sources += brave_browser_autocomplete_sources
brave_chrome_browser_sources += brave_browser_brave_news_sources
brave_chrome_browser_sources += brave_browser_brave_referrals_sources
brave_chrome_browser_sources += brave_browser_brave_vpn_sources
brave_chrome_browser_sources += brave_browser_browsing_data_sources
brave_chrome_browser_sources += brave_browser_cosmetic_filters_sources
brave_chrome_browser_sources += brave_browser_debounce_sources
brave_chrome_browser_sources += brave_browser_ephemeral_storage_sources
brave_chrome_browser_sources += brave_browser_gcm_driver_sources
brave_chrome_browser_sources += brave_browser_infobar_sources
brave_chrome_browser_sources += brave_browser_misc_metrics_sources
brave_chrome_browser_sources += brave_browser_net_sources
brave_chrome_browser_sources += brave_browser_new_tab_sources
brave_chrome_browser_sources += brave_browser_perf_sources
brave_chrome_browser_sources += brave_browser_permissions_sources
brave_chrome_browser_sources += brave_browser_renderer_context_menu_sources
brave_chrome_browser_sources += brave_browser_request_otr_sources
brave_chrome_browser_sources += brave_browser_search_engines_sources
brave_chrome_browser_sources += brave_browser_sync_sources
brave_chrome_browser_sources += brave_browser_themes_sources
brave_chrome_browser_sources += brave_browser_url_sanitizer_sources
brave_chrome_browser_sources += brave_browser_web_discovery_sources
brave_chrome_browser_sources += brave_browser_webcompat_reporter_sources
brave_chrome_browser_deps += brave_browser_autocomplete_deps
brave_chrome_browser_deps += brave_browser_brave_news_deps
brave_chrome_browser_deps += brave_browser_brave_referrals_deps
brave_chrome_browser_deps += brave_browser_brave_vpn_deps
brave_chrome_browser_deps += brave_browser_browsing_data_deps
brave_chrome_browser_deps += brave_browser_cosmetic_filters_deps
brave_chrome_browser_deps += brave_browser_debounce_deps
brave_chrome_browser_deps += brave_browser_ephemeral_storage_deps
brave_chrome_browser_deps += brave_browser_gcm_driver_deps
brave_chrome_browser_deps += brave_browser_infobar_deps
brave_chrome_browser_deps += brave_browser_misc_metrics_deps
brave_chrome_browser_deps += brave_browser_net_deps
brave_chrome_browser_deps += brave_browser_new_tab_deps
brave_chrome_browser_deps += brave_browser_perf_deps
brave_chrome_browser_deps += brave_browser_permissions_deps
brave_chrome_browser_deps += brave_browser_renderer_context_menu_deps
brave_chrome_browser_deps += brave_browser_request_otr_deps
brave_chrome_browser_deps += brave_browser_search_engines_deps
brave_chrome_browser_deps += brave_browser_sync_deps
brave_chrome_browser_deps += brave_browser_themes_deps
brave_chrome_browser_deps += brave_browser_url_sanitizer_deps
brave_chrome_browser_deps += brave_browser_web_discovery_deps
brave_chrome_browser_deps += brave_browser_webcompat_reporter_deps
brave_chrome_browser_deps += brave_chromium_src_chrome_browser_deps
brave_chrome_browser_deps += brave_chromium_src_chrome_browser_prefs_deps
brave_chrome_browser_ui_allow_circular_includes_from = [ "//brave/browser/ui" ]
brave_chrome_browser_ui_allow_circular_includes_from +=
brave_ui_allow_circular_includes_from
brave_chrome_browser_allow_circular_includes_from += [
"//brave/browser/brave_shields:brave_shields_impl",
"//brave/browser/history_embeddings",
"//brave/browser/ui",
"//brave/browser/brave_stats",
"//brave/browser/ntp_background",
"//brave/browser/serp_metrics:impl",
"//brave/browser:brave_global_features_impl",
]
if (enable_ai_chat) {
# TODO(https://github.com/brave/brave-browser/issues/50507):
# Remove this once webui/ai_chat does not depend on chrome/browser.
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/ui/webui/ai_chat" ]
}
if (enable_playlist) {
brave_chrome_browser_sources += brave_browser_playlist_sources
brave_chrome_browser_deps += brave_browser_playlist_deps
}
if (enable_brave_ai_chat_agent_profile) {
brave_chrome_browser_deps +=
[ "//brave/browser/ai_chat:ai_chat_agent_profile_impl" ]
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/ai_chat:ai_chat_agent_profile_impl" ]
}
if (enable_ai_chat_tab_management_tool) {
brave_chrome_browser_deps +=
[ "//brave/browser/ai_chat:ai_chat_tab_management_tool_impl" ]
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/ai_chat:ai_chat_tab_management_tool_impl" ]
}
if (enable_brave_ads) {
brave_chrome_browser_allow_circular_includes_from += [
"//brave/browser/brave_ads:impl",
"//brave/browser/brave_ads/creatives/search_result_ad",
]
}
# `rewards_service_factory.cc` includes `chrome/browser/policy/
# profile_policy_connector.h`, which lives in the `//chrome/browser:browser`
# monolith. Since `:browser` already depends on `:brave_rewards_impl` (added
# above), the include can only resolve via a circular-include allowance.
# Drop this entry once the header is componentized upstream
# (crbug.com/353332589).
if (enable_brave_rewards) {
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/brave_rewards:brave_rewards_impl" ]
}
if (toolkit_views) {
brave_chrome_browser_deps += [
"//brave/browser/ui/sidebar:sidebar_impl",
"//brave/browser/ui/views/location_bar",
"//brave/browser/ui/views/page_info",
]
brave_chrome_browser_allow_circular_includes_from += [
"//brave/browser/ui/sidebar:sidebar_impl",
"//brave/browser/ui/views/location_bar",
]
}
# https://github.com/brave/brave-browser/issues/41418
if (enable_extensions) {
brave_chrome_browser_deps +=
[ "//brave/browser/extensions:brave_prefs_util_impl" ]
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/extensions:brave_prefs_util_impl" ]
}
if (enable_ai_chat && enable_print_preview) {
brave_chrome_browser_deps += [
"//brave/browser/ai_chat:print_preview_extractor",
"//brave/browser/ai_chat:print_preview_extractor_internal",
]
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/ai_chat:print_preview_extractor_internal" ]
}
# https://github.com/brave/brave-browser/issues/41464
if (enable_tor) {
brave_chrome_browser_deps += [ "//brave/browser/tor:util" ]
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/tor:util" ]
}
# https://github.com/brave/brave-browser/issues/10644
if (enable_widevine) {
brave_chrome_browser_deps += [ "//brave/browser/widevine" ]
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/widevine" ]
}
# https://github.com/brave/brave-browser/issues/41486
if (is_android) {
brave_chrome_browser_allow_circular_includes_from += [
"//brave/browser/android:android_browser_process",
"//brave/browser/android:tabs_impl",
"//brave/browser/android/preferences",
"//brave/browser/notifications",
]
}
# TODO(https://github.com/brave/brave-browser/issues/43310):
# brave_new_tab_page_ui.cc includes some headers (e.g. from
# //brave/browser/new_tab) that are currently in the //chrome/browser target.
if (!is_android) {
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/ui/webui/brave_new_tab_page_refresh" ]
}
if (is_mac) {
brave_chrome_browser_deps += [ "//brave/browser/upgrade_when_idle" ]
brave_chrome_browser_allow_circular_includes_from +=
[ "//brave/browser/upgrade_when_idle" ]
}
# Deps for chrome/browser/prefs:impl
brave_chrome_browser_prefs_impl_deps = [
"//brave/components/brave_ads/buildflags",
"//brave/components/brave_news/common/buildflags",
"//brave/components/brave_wallet/common/buildflags",
]
if (enable_brave_ads) {
brave_chrome_browser_prefs_impl_deps +=
[ "//brave/components/brave_ads/core/public:headers" ]
}
if (enable_brave_news) {
brave_chrome_browser_prefs_impl_deps += [
"//brave/components/brave_news/browser",
"//brave/components/brave_news/common",
]
}
if (enable_brave_wallet) {
brave_chrome_browser_prefs_impl_deps += [
"//brave/components/brave_wallet/browser",
"//brave/components/decentralized_dns/core",
]
}
if (deprecate_ipfs) {
brave_chrome_browser_prefs_impl_deps += [ "//brave/components/ipfs" ]
}