Componentize chrome/browser/badging/
This CL adds a BUILD.gn file to drive the compilation of
c/b/badging/, as per [1].
[1] docs/chrome_browser_design_principles.md
R=dljames@chromium.org
Bug: 353332589
Change-Id: I49a86470f29d73399757dec1d5f5facd0a82bf31
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6950617
Reviewed-by: Darryl James <dljames@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1515706}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 178ea85..7907640 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3716,11 +3716,6 @@
"accessibility/phrase_segmentation/dependency_parser_model_loader_factory.h",
"apps/intent_helper/intent_chip_display_prefs.cc",
"apps/intent_helper/intent_chip_display_prefs.h",
- "badging/badge_manager.cc",
- "badging/badge_manager.h",
- "badging/badge_manager_delegate.h",
- "badging/badge_manager_factory.cc",
- "badging/badge_manager_factory.h",
"banners/app_banner_manager_desktop.cc",
"banners/app_banner_manager_desktop.h",
"bookmarks/bookmark_expanded_state_tracker.cc",
@@ -4340,6 +4335,8 @@
"//chrome/browser/actor/ui",
"//chrome/browser/apps/app_service",
"//chrome/browser/apps/link_capturing",
+ "//chrome/browser/badging",
+ "//chrome/browser/badging:impl",
"//chrome/browser/contextual_cueing",
"//chrome/browser/contextual_cueing:impl",
"//chrome/browser/device_notifications",
@@ -4701,6 +4698,11 @@
# TODO(crbug.com/353332589): Remove this circular dependency when c/b/profiles/profile_manager.h
# gets componentized.
"//chrome/browser/device_notifications:impl",
+
+ # TODO(crbug.com/353332589): Remove this circular dependency when:
+ # - c/b/taskbar/taskbar_decorator_win.h
+ # gets componentized.
+ "//chrome/browser/badging:impl",
]
#!is_android
@@ -6335,8 +6337,6 @@
sources += [
"accessibility/caption_settings_dialog.h",
"accessibility/caption_settings_dialog_win.cc",
- "badging/badge_manager_delegate_win.cc",
- "badging/badge_manager_delegate_win.h",
"browser_switcher/browser_switcher_policy_migrator.cc",
"browser_switcher/browser_switcher_policy_migrator.h",
"browser_switcher/browser_switcher_service_win.cc",
@@ -6558,8 +6558,6 @@
"accessibility/caption_settings_dialog_mac.cc",
"app_controller_mac.h",
"app_controller_mac.mm",
- "badging/badge_manager_delegate_mac.cc",
- "badging/badge_manager_delegate_mac.h",
"browser_process_platform_part_mac.h",
"browser_process_platform_part_mac.mm",
"chrome_browser_application_mac.h",
diff --git a/chrome/browser/apps/app_shim/BUILD.gn b/chrome/browser/apps/app_shim/BUILD.gn
index e12846f..29ba78e7 100644
--- a/chrome/browser/apps/app_shim/BUILD.gn
+++ b/chrome/browser/apps/app_shim/BUILD.gn
@@ -33,6 +33,7 @@
"//chrome/browser:browser_process",
"//chrome/browser/apps/app_service",
"//chrome/browser/apps/app_service:constants",
+ "//chrome/browser/badging",
"//chrome/browser/profiles",
"//chrome/browser/profiles:profile",
"//chrome/browser/profiles:profile_util",
diff --git a/chrome/browser/badging/BUILD.gn b/chrome/browser/badging/BUILD.gn
new file mode 100644
index 0000000..dc83862
--- /dev/null
+++ b/chrome/browser/badging/BUILD.gn
@@ -0,0 +1,108 @@
+# 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.
+
+assert(!is_android)
+
+source_set("badging") {
+ sources = [
+ "badge_manager.h",
+ "badge_manager_delegate.h",
+ "badge_manager_factory.h",
+ ]
+ public_deps = [
+ "//base",
+ "//chrome/browser/profiles:profile",
+ "//components/keyed_service/core",
+ "//components/webapps/common",
+ "//content/public/browser",
+ "//mojo/public/cpp/bindings",
+ "//third_party/blink/public/common",
+ "//url",
+ ]
+
+ if (is_win) {
+ sources += [ "badge_manager_delegate_win.h" ]
+ }
+
+ if (is_mac) {
+ sources += [ "badge_manager_delegate_mac.h" ]
+ }
+}
+
+source_set("impl") {
+ sources = [
+ "badge_manager.cc",
+ "badge_manager_factory.cc",
+ ]
+ deps = [
+ ":badging",
+ "//base:i18n",
+ "//chrome/browser/ui/web_applications",
+ "//chrome/browser/web_applications",
+ "//chrome/browser/web_applications/proto",
+ "//components/prefs",
+ "//components/ukm",
+ "//services/metrics/public/cpp:gen_ukm_builders",
+ "//services/metrics/public/cpp:metrics_cpp",
+ "//services/metrics/public/cpp:ukm_builders",
+ "//ui/base",
+ "//ui/strings:ui_strings",
+ "//ui/strings:ui_strings_grit",
+ ]
+
+ if (is_win) {
+ sources += [ "badge_manager_delegate_win.cc" ]
+ deps += [ "//chrome/browser/ui/browser_window" ]
+ }
+
+ if (is_mac) {
+ sources += [ "badge_manager_delegate_mac.cc" ]
+ deps += [ "//chrome/browser/apps/app_shim" ]
+ }
+
+ public_deps = [ "//chrome/browser:browser_public_dependencies" ]
+}
+
+source_set("test_support") {
+ sources = []
+ deps = []
+
+ if (!is_android) {
+ sources += [
+ "test_badge_manager_delegate.cc",
+ "test_badge_manager_delegate.h",
+ ]
+ public_deps = [
+ ":badging",
+ "//base",
+ "//components/webapps/common",
+ ]
+ deps += [ "//chrome/browser/profiles:profile" ]
+ }
+}
+
+source_set("unit_tests") {
+ testonly = true
+ sources = []
+ deps = []
+
+ if (!is_android) {
+ sources += [ "badge_manager_unittest.cc" ]
+ deps += [
+ ":badging",
+ ":test_support",
+ "//base/test:test_support",
+ "//chrome/browser/web_applications",
+ "//chrome/browser/web_applications:web_applications_test_support",
+ "//chrome/test:test_support",
+ "//components/ukm:test_support",
+ "//content/test:test_support",
+ "//extensions:test_support",
+ "//extensions/common",
+ "//services/metrics/public/cpp:gen_ukm_builders",
+ "//services/metrics/public/cpp:ukm_builders",
+ "//testing/gtest",
+ ]
+ }
+}
diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn
index 0fc7b994..a7dd595 100644
--- a/chrome/browser/devtools/BUILD.gn
+++ b/chrome/browser/devtools/BUILD.gn
@@ -347,6 +347,7 @@
if (!is_android) {
deps += [
"//chrome/app:command_ids",
+ "//chrome/browser/badging",
"//chrome/browser/first_party_sets",
"//chrome/browser/ui/browser_window",
"//chrome/browser/ui/media_router",
diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn
index 8772a74..a5fd2ae 100644
--- a/chrome/browser/profiles/BUILD.gn
+++ b/chrome/browser/profiles/BUILD.gn
@@ -338,6 +338,7 @@
"//chrome/browser/accessibility/tree_fixing:service",
"//chrome/browser/apps/app_service",
"//chrome/browser/autofill",
+ "//chrome/browser/badging",
"//chrome/browser/contextual_cueing",
"//chrome/browser/devtools",
"//chrome/browser/feedback",
diff --git a/chrome/browser/ui/web_applications/BUILD.gn b/chrome/browser/ui/web_applications/BUILD.gn
index efbfadd..985466e 100644
--- a/chrome/browser/ui/web_applications/BUILD.gn
+++ b/chrome/browser/ui/web_applications/BUILD.gn
@@ -358,6 +358,7 @@
"//chrome/browser/apps/app_service:app_registry_cache_waiter",
"//chrome/browser/apps/link_capturing",
"//chrome/browser/apps/link_capturing:test_support",
+ "//chrome/browser/badging:test_support",
"//chrome/browser/browsing_data:constants",
"//chrome/browser/ui/web_applications/diagnostics:app_service_browser_tests",
"//chrome/browser/web_applications",
diff --git a/chrome/browser/web_applications/app_service/BUILD.gn b/chrome/browser/web_applications/app_service/BUILD.gn
index d03698d..b101a171 100644
--- a/chrome/browser/web_applications/app_service/BUILD.gn
+++ b/chrome/browser/web_applications/app_service/BUILD.gn
@@ -19,6 +19,7 @@
public_deps = [
"//chrome/browser:browser_public_dependencies",
+ "//chrome/browser/badging",
"//chrome/browser/media/webrtc",
"//chrome/browser/notifications",
]
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 7a290c7..8bcc85cf 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -811,6 +811,7 @@
# Non-android deps for "test_support" target.
deps += [
"//chrome/browser/apps/link_capturing",
+ "//chrome/browser/badging:test_support",
"//chrome/browser/task_manager",
"//chrome/browser/themes",
"//chrome/browser/ui/apps",
@@ -838,8 +839,6 @@
}
sources += [
- "../browser/badging/test_badge_manager_delegate.cc",
- "../browser/badging/test_badge_manager_delegate.h",
"../browser/banners/test_app_banner_manager_desktop.cc",
"../browser/banners/test_app_banner_manager_desktop.h",
"../browser/download/download_browsertest_utils.cc",
@@ -2347,6 +2346,7 @@
"//chrome/browser/background:test_support",
"//chrome/browser/background_fetch:browser_tests",
"//chrome/browser/background_sync:browser_tests",
+ "//chrome/browser/badging",
"//chrome/browser/battery",
"//chrome/browser/bitmap_fetcher:browser_tests",
"//chrome/browser/breadcrumbs:browser_tests",
@@ -8383,11 +8383,6 @@
}
sources += [
- # Badging isn't supported on Android.
- "../browser/badging/badge_manager_unittest.cc",
- ]
-
- sources += [
# Device API isn't supported on Android.
"../browser/device_api/device_service_unittest.cc",
"../browser/device_api/managed_configuration_service_unittest.cc",
@@ -8503,6 +8498,7 @@
"//chrome/browser/apps/link_capturing:test_support",
"//chrome/browser/apps/link_capturing:unit_tests",
"//chrome/browser/background",
+ "//chrome/browser/badging:unit_tests",
"//chrome/browser/companion/text_finder:unit_tests",
"//chrome/browser/content_settings:unit_tests",
"//chrome/browser/enterprise/connectors/analysis:features",