[Android] Migrate HelpAndFeedbackLauncherDelegate to ServiceLoader
Depends on https://chrome-internal-review.googlesource.com/c/clank/internal/apps/+/7709326
Cq-Include-Trybots: luci.chrome.try:android-internal-rel,android-internal-binary-size
Bug: 40901855
Change-Id: I2bbb952acdcf71954c5a3c654c5e9751ee9fd558
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5889881
Owners-Override: Andrew Grieve <agrieve@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Reviewed-by: Andrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1361311}
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index efc401e..94aedf5 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -293,7 +293,6 @@
java_group("delegate_public_impl_java") {
deps = [
"//chrome/android/modules/readaloud/public:provider_public_java",
- "//chrome/browser/feedback/android:delegate_public_impl_java",
"//chrome/browser/lens:delegate_public_impl_java",
"//chrome/browser/locale:delegate_public_impl_java",
"//chrome/browser/supervised_user:parent_auth_delegate_impl_java",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java
index 372e0f52..ba21d89 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java
@@ -14,6 +14,7 @@
import androidx.annotation.Nullable;
+import org.chromium.base.ServiceLoaderUtil;
import org.chromium.base.ThreadUtils;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
@@ -51,16 +52,22 @@
private HelpAndFeedbackLauncherImpl(Profile profile) {
mProfile = profile;
- mDelegate = new HelpAndFeedbackLauncherDelegateImpl();
+
+ HelpAndFeedbackLauncherDelegate delegate =
+ ServiceLoaderUtil.maybeCreate(HelpAndFeedbackLauncherDelegate.class);
+ if (delegate == null) {
+ delegate = new FallbackHelpAndFeedbackLauncherDelegate();
+ }
+ mDelegate = delegate;
}
/**
* Starts an activity showing a help page for the specified context ID.
*
- * @param activity The activity to use for starting the help activity and to take a
- * screenshot of.
+ * @param activity The activity to use for starting the help activity and to take a screenshot
+ * of.
* @param helpContext One of the CONTEXT_* constants. This should describe the user's current
- * context and will be used to show a more relevant help page.
+ * context and will be used to show a more relevant help page.
* @param url the current URL. May be null.
*/
@Override
diff --git a/chrome/browser/feedback/android/BUILD.gn b/chrome/browser/feedback/android/BUILD.gn
index b7abc32..324c3169 100644
--- a/chrome/browser/feedback/android/BUILD.gn
+++ b/chrome/browser/feedback/android/BUILD.gn
@@ -55,9 +55,11 @@
sources = [
"java/src/org/chromium/chrome/browser/feedback/AsyncFeedbackSourceAdapter.java",
"java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java",
+ "java/src/org/chromium/chrome/browser/feedback/FallbackHelpAndFeedbackLauncherDelegate.java",
"java/src/org/chromium/chrome/browser/feedback/FamilyInfoFeedbackSource.java",
"java/src/org/chromium/chrome/browser/feedback/FeedbackContextFeedbackSource.java",
"java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncher.java",
+ "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherDelegate.java",
"java/src/org/chromium/chrome/browser/feedback/IMEFeedbackSource.java",
"java/src/org/chromium/chrome/browser/feedback/InterestFeedFeedbackSource.java",
"java/src/org/chromium/chrome/browser/feedback/LowEndDeviceFeedbackSource.java",
@@ -68,7 +70,6 @@
"java/src/org/chromium/chrome/browser/feedback/VariationsFeedbackSource.java",
]
deps = [
- ":delegate_java",
":feedback_collector_java",
":java_resources",
"//base:base_java",
@@ -84,10 +85,7 @@
"//third_party/jni_zero:jni_zero_java",
"//ui/android:ui_no_recycler_view_java",
]
- public_deps = [
- ":delegate_java",
- ":feedback_collector_java",
- ]
+ public_deps = [ ":feedback_collector_java" ]
resources_package = "org.chromium.chrome.browser.feedback"
}
@@ -113,34 +111,6 @@
]
}
-android_library("delegate_java") {
- sources = [
- "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherDelegate.java",
- "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherDelegateImpl.java",
- ]
-
- deps = [
- ":feedback_collector_java",
- "//base:base_java",
- "//third_party/androidx:androidx_annotation_annotation_java",
- ]
-
- # Add the actual implementation where necessary so that downstream targets
- # can provide their own implementations.
- jar_excluded_patterns = [ "*/HelpAndFeedbackLauncherDelegateImpl.class" ]
-}
-
-android_library("delegate_public_impl_java") {
- sources = [ "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherDelegateImpl.java" ]
-
- deps = [
- ":delegate_java",
- ":feedback_collector_java",
- "//base:base_java",
- "//third_party/androidx:androidx_annotation_annotation_java",
- ]
-}
-
android_resources("java_resources") {
sources = [ "java/res/values/strings.xml" ]
}
diff --git a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherDelegateImpl.java b/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/FallbackHelpAndFeedbackLauncherDelegate.java
similarity index 84%
rename from chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherDelegateImpl.java
rename to chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/FallbackHelpAndFeedbackLauncherDelegate.java
index a403deeb..7e4859e6 100644
--- a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherDelegateImpl.java
+++ b/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/FallbackHelpAndFeedbackLauncherDelegate.java
@@ -13,9 +13,9 @@
/**
* Basic implementation for displaying help support for Chrome.
*
- * NOTE: This class is designed to be replaced by downstream targets.
+ * <p>NOTE: This class is designed to be replaced by downstream targets.
*/
-public class HelpAndFeedbackLauncherDelegateImpl implements HelpAndFeedbackLauncherDelegate {
+public class FallbackHelpAndFeedbackLauncherDelegate implements HelpAndFeedbackLauncherDelegate {
private static final String TAG = "HelpAndFeedback";
@Override
diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn
index a7241c9..6e581b4 100644
--- a/chrome/browser/password_manager/android/BUILD.gn
+++ b/chrome/browser/password_manager/android/BUILD.gn
@@ -313,7 +313,6 @@
"//base:base_java_test_support",
"//base:base_java_test_support_uncommon",
"//base:base_junit_test_support",
- "//chrome/browser/feedback/android:delegate_public_impl_java",
"//chrome/browser/feedback/android:internal_java",
"//chrome/browser/flags:java",
"//chrome/browser/loading_modal/android:java",