Componentize chrome/browser/background_sync
This CL adds a BUILD.gn file to drive the compilation of
c/b/background_sync, as per [1].
[1] docs/chrome_browser_design_principles.md
R=dljames@chromium.org
Bug: 353332589
Change-Id: I5fdcfd3713a6a337b0f2b901d61a95fdb323e749
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6947107
Reviewed-by: Darryl James <dljames@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1515615}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 283da969..b405b93 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -201,12 +201,6 @@
"accessibility/prefers_default_scrollbar_styles_prefs.h",
"after_startup_task_utils.cc",
"after_startup_task_utils.h",
- "background_sync/background_sync_controller_factory.cc",
- "background_sync/background_sync_controller_factory.h",
- "background_sync/background_sync_delegate_impl.cc",
- "background_sync/background_sync_delegate_impl.h",
- "background_sync/periodic_background_sync_permission_context.cc",
- "background_sync/periodic_background_sync_permission_context.h",
"bad_message.cc",
"bad_message.h",
"bluetooth/bluetooth_chooser_context_factory.cc",
@@ -1830,12 +1824,20 @@
# - c/b/profiles/profile_manager.h"
"//chrome/browser/usb:impl",
+ # TODO(crbug.com/353332589): Remove this circular dependencies when the following
# headers are componentized:
# - c/b/download/download_request_limiter.h
# - c/b/download/background_download_service_factory.h
# - c/b/offline_items_collection/offline_content_aggregator_factory.h
# - c/b/metrics/ukm_background_recorder_service.h
"//chrome/browser/background_fetch:impl",
+
+ # TODO(crbug.com/353332589): Remove this circular dependencies when the following
+ # headers get componentized:
+ # - c/b/metrics/ukm_background_recorder_service.h
+ # - c/b/engagement/site_engagement_service_factory.h
+ # - c/b/webapps/installable/installable_utils.h
+ "//chrome/browser/background_sync:impl",
]
public_deps = [
@@ -1893,6 +1895,8 @@
"//chrome/browser/background:impl",
"//chrome/browser/background_fetch",
"//chrome/browser/background_fetch:impl",
+ "//chrome/browser/background_sync",
+ "//chrome/browser/background_sync:impl",
"//chrome/browser/battery",
"//chrome/browser/bitmap_fetcher",
"//chrome/browser/breadcrumbs",
@@ -4657,10 +4661,12 @@
"//chrome/browser/ui/passwords/bubble_controllers:impl",
# TODO(crbug.com/438226511): Remove this circular dependency when:
- # - headers in c/b/notifications/ and c/b/sessions/
+ # - c/b/engagement/site_engagement_service_factory.h
+ # - c/b/sessions/app_session_service.h
+ # - c/b/sessions/app_session_service_factory.h
+ # - c/b/sessions/session_service_base.h
+ # - c/b/sessions/session_service_lookup.h
# - c/b/after_startup_task_utils.h
- # - c/b/app_mode/app_mode_utils.h
- # - app_mode/app_mode_utils.h
# ... get componentized.
"//chrome/browser/ui/web_applications:impl",
diff --git a/chrome/browser/background_sync/BUILD.gn b/chrome/browser/background_sync/BUILD.gn
new file mode 100644
index 0000000..26fe57d7
--- /dev/null
+++ b/chrome/browser/background_sync/BUILD.gn
@@ -0,0 +1,106 @@
+# Copyright 2025 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+source_set("background_sync") {
+ sources = [
+ "background_sync_controller_factory.h",
+ "background_sync_delegate_impl.h",
+ "periodic_background_sync_permission_context.h",
+ ]
+ public_deps = [
+ "//base",
+ "//chrome/browser/profiles:profile",
+ "//chrome/browser/profiles/keep_alive",
+ "//components/background_sync",
+ "//components/content_settings/core/common",
+ "//components/permissions",
+ "//components/site_engagement/content",
+ "//components/webapps/common",
+ "//content/public/browser",
+ "//url",
+ ]
+ if (!is_android) {
+ public_deps += [
+ "//chrome/browser/web_applications",
+ "//components/keep_alive_registry",
+ ]
+ }
+}
+
+source_set("impl") {
+ sources = [
+ "background_sync_controller_factory.cc",
+ "background_sync_delegate_impl.cc",
+ "periodic_background_sync_permission_context.cc",
+ ]
+ deps = [
+ ":background_sync",
+ "//chrome/browser/content_settings:content_settings_factory",
+ "//chrome/browser/search_engines",
+ "//chrome/common:chrome_features",
+ "//components/content_settings/core/browser",
+ "//components/search_engines",
+ "//services/network/public/mojom:mojom_permissions_policy",
+ ]
+ if (!is_android) {
+ deps += [ "//chrome/browser/web_applications/proto" ]
+ }
+
+ public_deps = [ "//chrome/browser:browser_public_dependencies" ]
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = [
+ "background_sync_controller_impl_unittest.cc",
+ "periodic_background_sync_permission_context_unittest.cc",
+ ]
+ deps = [
+ ":background_sync",
+ "//base/test:test_support",
+ "//chrome/browser/content_settings:content_settings_factory",
+ "//chrome/browser/history",
+ "//chrome/test:test_support",
+ "//components/content_settings/core/browser",
+ "//components/history/core/browser",
+ "//components/history/core/test",
+ "//components/variations",
+ "//content/test:test_support",
+ "//testing/gmock",
+ "//testing/gtest",
+ "//third_party/blink/public/common",
+ ]
+ if (!is_android) {
+ deps +=
+ [ "//chrome/browser/web_applications:web_applications_test_support" ]
+ }
+}
+
+if (!is_android) {
+ source_set("browser_tests") {
+ testonly = true
+ defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
+ sources = [
+ "background_sync_browsertest.cc",
+ "background_sync_content_setting_browsertest.cc",
+ "background_sync_metrics_browsertest.cc",
+ ]
+ deps = [
+ ":background_sync",
+ "//chrome/browser/content_settings:content_settings_factory",
+ "//chrome/browser/profiles:profile",
+ "//chrome/browser/ui/tabs:tab_strip",
+ "//chrome/test:test_support",
+ "//chrome/test:test_support_ui",
+ "//components/background_sync",
+ "//components/content_settings/core/browser",
+ "//components/ukm:test_support",
+ "//content/test:test_support",
+ "//net:test_support",
+ "//services/metrics/public/cpp:gen_ukm_builders",
+ "//services/metrics/public/cpp:metrics_cpp",
+ "//services/metrics/public/cpp:ukm_builders",
+ ]
+ }
+}
diff --git a/chrome/browser/background_sync/background_sync_delegate_impl.h b/chrome/browser/background_sync/background_sync_delegate_impl.h
index 492986e..3d269b8 100644
--- a/chrome/browser/background_sync/background_sync_delegate_impl.h
+++ b/chrome/browser/background_sync/background_sync_delegate_impl.h
@@ -12,13 +12,16 @@
#include "chrome/browser/profiles/keep_alive/scoped_profile_keep_alive.h"
#include "chrome/browser/profiles/profile.h"
#include "components/background_sync/background_sync_delegate.h"
-#include "components/keep_alive_registry/scoped_keep_alive.h"
#include "components/site_engagement/content/site_engagement_observer.h"
#include "components/webapps/common/web_app_id.h"
#include "content/public/browser/background_sync_controller.h"
#include "content/public/browser/browser_thread.h"
#include "url/origin.h"
+#if !BUILDFLAG(IS_ANDROID)
+#include "components/keep_alive_registry/scoped_keep_alive.h"
+#endif
+
class Profile;
class HostContentSettingsMap;
class ScopedKeepAlive;
diff --git a/chrome/browser/permissions/BUILD.gn b/chrome/browser/permissions/BUILD.gn
index 9304f6c4..9c49223 100644
--- a/chrome/browser/permissions/BUILD.gn
+++ b/chrome/browser/permissions/BUILD.gn
@@ -72,6 +72,7 @@
"//chrome/browser:browser_process",
"//chrome/browser/app_mode",
"//chrome/browser/background_fetch",
+ "//chrome/browser/background_sync",
"//chrome/browser/content_extraction",
"//chrome/browser/content_settings:content_settings_factory",
"//chrome/browser/favicon",
diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn
index 03f61bc..8772a74 100644
--- a/chrome/browser/profiles/BUILD.gn
+++ b/chrome/browser/profiles/BUILD.gn
@@ -237,6 +237,7 @@
"//chrome/browser/autofill",
"//chrome/browser/background",
"//chrome/browser/background_fetch",
+ "//chrome/browser/background_sync",
"//chrome/browser/bitmap_fetcher",
"//chrome/browser/breadcrumbs",
"//chrome/browser/commerce",
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 68bd51f5..1fec26c 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -2346,6 +2346,7 @@
"//chrome/browser/background",
"//chrome/browser/background:test_support",
"//chrome/browser/background_fetch:browser_tests",
+ "//chrome/browser/background_sync:browser_tests",
"//chrome/browser/battery",
"//chrome/browser/bitmap_fetcher:browser_tests",
"//chrome/browser/breadcrumbs:browser_tests",
@@ -3177,9 +3178,6 @@
"../browser/ai/ai_data_keyed_service_browsertest.cc",
"../browser/attribution_reporting/chrome_attribution_browsertest.cc",
"../browser/autofill/content_autofill_shared_storage_handler_browsertest.cc",
- "../browser/background_sync/background_sync_browsertest.cc",
- "../browser/background_sync/background_sync_content_setting_browsertest.cc",
- "../browser/background_sync/background_sync_metrics_browsertest.cc",
"../browser/banners/app_banner_manager_browsertest.cc",
"../browser/banners/app_banner_manager_desktop_browsertest.cc",
"../browser/battery/battery_metrics_browsertest.cc",
@@ -6325,8 +6323,6 @@
"../browser/apps/icon_standardizer_unittest.cc",
"../browser/apps/user_type_filter_unittest.cc",
"../browser/autofill/automated_tests/cache_replayer_unittest.cc",
- "../browser/background_sync/background_sync_controller_impl_unittest.cc",
- "../browser/background_sync/periodic_background_sync_permission_context_unittest.cc",
"../browser/battery/battery_saver_unittest.cc",
"../browser/bluetooth/bluetooth_chooser_context_unittest.cc",
"../browser/bookmarks/managed_bookmark_service_unittest.cc",
@@ -6849,6 +6845,7 @@
"//chrome/browser/autofill",
"//chrome/browser/background:unit_tests",
"//chrome/browser/background_fetch:unit_tests",
+ "//chrome/browser/background_sync:unit_tests",
"//chrome/browser/battery",
"//chrome/browser/bitmap_fetcher",
"//chrome/browser/bitmap_fetcher:unit_tests",