summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorAlison Cichowlas <asc@google.com>2020-10-07 12:51:31 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-10-07 12:51:31 +0000
commit0b94a0eb97be645ed67f079b70ce5de11bb14459 (patch)
treefbb2c5c687bf8d0d7d5e52f179e7ca9ff72834c8 /core/java
parent48acf101c3289ebf4b468418c9755d608b076ad4 (diff)
parentcef37d003a3bddddbc0d5bc5eebd30c837807012 (diff)
Merge " Add a flag for calling old ChooserTargetService API & remove flags for Shortcuts."
Diffstat (limited to 'core/java')
-rw-r--r--core/java/com/android/internal/app/ChooserActivity.java9
-rw-r--r--core/java/com/android/internal/app/ChooserFlags.java19
-rw-r--r--core/java/com/android/internal/app/chooser/SelectableTargetInfo.java3
-rw-r--r--core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java8
4 files changed, 26 insertions, 13 deletions
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 61a625e40dcd..e0f8a1ad0a1a 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -1855,6 +1855,7 @@ public class ChooserActivity extends ResolverActivity implements
@VisibleForTesting
protected void queryTargetServices(ChooserListAdapter adapter) {
+
mQueriedTargetServicesTimeMs = System.currentTimeMillis();
Context selectedProfileContext = createContextAsUser(
@@ -1871,15 +1872,14 @@ public class ChooserActivity extends ResolverActivity implements
continue;
}
final ActivityInfo ai = dri.getResolveInfo().activityInfo;
- if (ChooserFlags.USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS
- && sm.hasShareTargets(ai.packageName)) {
+ if (sm.hasShareTargets(ai.packageName)) {
// Share targets will be queried from ShortcutManager
continue;
}
final Bundle md = ai.metaData;
final String serviceName = md != null ? convertServiceName(ai.packageName,
md.getString(ChooserTargetService.META_DATA_NAME)) : null;
- if (serviceName != null) {
+ if (serviceName != null && ChooserFlags.USE_SERVICE_TARGETS_FOR_DIRECT_TARGETS) {
final ComponentName serviceComponent = new ComponentName(
ai.packageName, serviceName);
@@ -2883,8 +2883,7 @@ public class ChooserActivity extends ResolverActivity implements
return;
}
- if (ChooserFlags.USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS
- || ChooserFlags.USE_PREDICTION_MANAGER_FOR_DIRECT_TARGETS) {
+ if (ChooserFlags.USE_PREDICTION_MANAGER_FOR_DIRECT_TARGETS) {
if (DEBUG) {
Log.d(TAG, "querying direct share targets from ShortcutManager");
}
diff --git a/core/java/com/android/internal/app/ChooserFlags.java b/core/java/com/android/internal/app/ChooserFlags.java
index f1f1dbf49b8b..3e26679e28a4 100644
--- a/core/java/com/android/internal/app/ChooserFlags.java
+++ b/core/java/com/android/internal/app/ChooserFlags.java
@@ -17,22 +17,29 @@
package com.android.internal.app;
import android.app.prediction.AppPredictionManager;
+import android.provider.DeviceConfig;
+
+import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
/**
* Common flags for {@link ChooserListAdapter} and {@link ChooserActivity}.
*/
public class ChooserFlags {
+
/**
- * If set to true, use ShortcutManager to retrieve the matching direct share targets, instead of
- * binding to every ChooserTargetService implementation.
+ * Whether to use the deprecated {@link android.service.chooser.ChooserTargetService} API for
+ * direct share targets. If true, both CTS and Shortcuts will be used to find Direct Share
+ * targets. If false, only Shortcuts will be used.
*/
- // TODO(b/121287573): Replace with a system flag (setprop?)
- public static final boolean USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS = true;
+ public static final boolean USE_SERVICE_TARGETS_FOR_DIRECT_TARGETS =
+ DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI,
+ SystemUiDeviceConfigFlags.SHARE_USE_SERVICE_TARGETS, true);
/**
- * If {@link ChooserFlags#USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS} and this is set to true,
- * {@link AppPredictionManager} will be queried for direct share targets.
+ * Whether to use {@link AppPredictionManager} to query for direct share targets (as opposed to
+ * talking directly to {@link android.content.pm.ShortcutManager}.
*/
// TODO(b/123089490): Replace with system flag
static final boolean USE_PREDICTION_MANAGER_FOR_DIRECT_TARGETS = true;
}
+
diff --git a/core/java/com/android/internal/app/chooser/SelectableTargetInfo.java b/core/java/com/android/internal/app/chooser/SelectableTargetInfo.java
index 28a96013e1c0..ce75f45d0897 100644
--- a/core/java/com/android/internal/app/chooser/SelectableTargetInfo.java
+++ b/core/java/com/android/internal/app/chooser/SelectableTargetInfo.java
@@ -38,7 +38,6 @@ import android.text.SpannableStringBuilder;
import android.util.Log;
import com.android.internal.app.ChooserActivity;
-import com.android.internal.app.ChooserFlags;
import com.android.internal.app.ResolverActivity;
import com.android.internal.app.ResolverListAdapter.ActivityInfoPresentationGetter;
import com.android.internal.app.SimpleIconFactory;
@@ -147,7 +146,7 @@ public final class SelectableTargetInfo implements ChooserTargetInfo {
final Icon icon = target.getIcon();
if (icon != null) {
directShareIcon = icon.loadDrawable(mContext);
- } else if (ChooserFlags.USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS && shortcutInfo != null) {
+ } else if (shortcutInfo != null) {
LauncherApps launcherApps = (LauncherApps) mContext.getSystemService(
Context.LAUNCHER_APPS_SERVICE);
directShareIcon = launcherApps.getShortcutIconDrawable(shortcutInfo, 0);
diff --git a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
index 1ce246ad4274..d23ea3c46695 100644
--- a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
+++ b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
@@ -429,6 +429,14 @@ public final class SystemUiDeviceConfigFlags {
*/
public static final String BACK_GESTURE_ML_MODEL_THRESHOLD = "back_gesture_ml_model_threshold";
+ /**
+ * (boolean) Sharesheet - Whether to use the deprecated
+ * {@link android.service.chooser.ChooserTargetService} API for
+ * direct share targets. If true, both CTS and Shortcuts will be used to find Direct
+ * Share targets. If false, only Shortcuts will be used.
+ */
+ public static final String SHARE_USE_SERVICE_TARGETS = "share_use_service_targets";
+
private SystemUiDeviceConfigFlags() {
}