summaryrefslogtreecommitdiff
path: root/java/src/com
diff options
context:
space:
mode:
author Joshua Trask <joshtrask@google.com> 2023-12-11 18:52:23 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-12-11 18:52:23 +0000
commitd259bcfbf0350283c8483cb980078d3ef1b339ee (patch)
tree9ad1618cc340a9b2135d9ac0dd89a9d589ebf607 /java/src/com
parent2722e36e5591398cdf96be94639fe9ccc055a3d6 (diff)
parentdf53ad197e45ccc9ff7a8bf6d63e15c61cb51a5a (diff)
Merge "Move Chooser package-change shortcut reset to list adapter" into main
Diffstat (limited to 'java/src/com')
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java3
-rw-r--r--java/src/com/android/intentresolver/ChooserListAdapter.java24
-rw-r--r--java/src/com/android/intentresolver/v2/ChooserActivity.java23
3 files changed, 34 insertions, 16 deletions
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index 50ca5d0d..9000ab3a 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -1251,7 +1251,8 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
getEventLog(),
maxTargetsPerRow,
initialIntentsUserSpace,
- targetDataLoader);
+ targetDataLoader,
+ null);
}
@Override
diff --git a/java/src/com/android/intentresolver/ChooserListAdapter.java b/java/src/com/android/intentresolver/ChooserListAdapter.java
index 3af8a3a7..876ad5c3 100644
--- a/java/src/com/android/intentresolver/ChooserListAdapter.java
+++ b/java/src/com/android/intentresolver/ChooserListAdapter.java
@@ -30,7 +30,6 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ShortcutInfo;
import android.graphics.drawable.Drawable;
-import android.net.Uri;
import android.os.AsyncTask;
import android.os.Trace;
import android.os.UserHandle;
@@ -68,6 +67,17 @@ import java.util.concurrent.Executor;
import java.util.stream.Collectors;
public class ChooserListAdapter extends ResolverListAdapter {
+
+ /**
+ * Delegate interface for injecting a chooser-specific operation to be performed before handling
+ * a package-change event. This allows the "driver" invoking the package-change to be generic,
+ * with no knowledge specific to the chooser implementation.
+ */
+ public interface PackageChangeCallback {
+ /** Perform any steps necessary before processing the package-change event. */
+ void beforeHandlingPackagesChanged();
+ }
+
private static final String TAG = "ChooserListAdapter";
private static final boolean DEBUG = false;
@@ -93,6 +103,9 @@ public class ChooserListAdapter extends ResolverListAdapter {
private final Set<TargetInfo> mRequestedIcons = new HashSet<>();
+ @Nullable
+ private final PackageChangeCallback mPackageChangeCallback;
+
// Reserve spots for incoming direct share targets by adding placeholders
private final TargetInfo mPlaceHolderTargetInfo;
private final TargetDataLoader mTargetDataLoader;
@@ -152,7 +165,8 @@ public class ChooserListAdapter extends ResolverListAdapter {
EventLog eventLog,
int maxRankedTargets,
UserHandle initialIntentsUserSpace,
- TargetDataLoader targetDataLoader) {
+ TargetDataLoader targetDataLoader,
+ @Nullable PackageChangeCallback packageChangeCallback) {
this(
context,
payloadIntents,
@@ -169,6 +183,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
maxRankedTargets,
initialIntentsUserSpace,
targetDataLoader,
+ packageChangeCallback,
AsyncTask.SERIAL_EXECUTOR,
context.getMainExecutor());
}
@@ -190,6 +205,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
int maxRankedTargets,
UserHandle initialIntentsUserSpace,
TargetDataLoader targetDataLoader,
+ @Nullable PackageChangeCallback packageChangeCallback,
Executor bgExecutor,
Executor mainExecutor) {
// Don't send the initial intents through the shared ResolverActivity path,
@@ -214,6 +230,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
mPlaceHolderTargetInfo = NotSelectableTargetInfo.newPlaceHolderTargetInfo(context);
mTargetDataLoader = targetDataLoader;
+ mPackageChangeCallback = packageChangeCallback;
createPlaceHolders();
mEventLog = eventLog;
mShortcutSelectionLogic = new ShortcutSelectionLogic(
@@ -286,6 +303,9 @@ public class ChooserListAdapter extends ResolverListAdapter {
@Override
public void handlePackagesChanged() {
+ if (mPackageChangeCallback != null) {
+ mPackageChangeCallback.beforeHandlingPackagesChanged();
+ }
if (DEBUG) {
Log.d(TAG, "clearing queryTargets on package change");
}
diff --git a/java/src/com/android/intentresolver/v2/ChooserActivity.java b/java/src/com/android/intentresolver/v2/ChooserActivity.java
index 60ea1b1c..fcd45b0b 100644
--- a/java/src/com/android/intentresolver/v2/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/v2/ChooserActivity.java
@@ -593,25 +593,16 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
// Refresh pinned items
mPinnedSharedPrefs = getPinnedSharedPrefs(this);
if (listAdapter == null) {
- handlePackageChangePerProfile(mChooserMultiProfilePagerAdapter.getActiveListAdapter());
+ mChooserMultiProfilePagerAdapter.getActiveListAdapter().handlePackagesChanged();
if (mChooserMultiProfilePagerAdapter.getCount() > 1) {
- handlePackageChangePerProfile(
- mChooserMultiProfilePagerAdapter.getInactiveListAdapter());
+ mChooserMultiProfilePagerAdapter.getInactiveListAdapter().handlePackagesChanged();
}
} else {
- handlePackageChangePerProfile(listAdapter);
+ listAdapter.handlePackagesChanged();
}
updateProfileViewButton();
}
- private void handlePackageChangePerProfile(ResolverListAdapter adapter) {
- ProfileRecord record = getProfileRecord(adapter.getUserHandle());
- if (record != null && record.shortcutLoader != null) {
- record.shortcutLoader.reset();
- }
- adapter.handlePackagesChanged();
- }
-
@Override
protected void onResume() {
super.onResume();
@@ -1273,7 +1264,13 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
getEventLog(),
maxTargetsPerRow,
initialIntentsUserSpace,
- targetDataLoader);
+ targetDataLoader,
+ () -> {
+ ProfileRecord record = getProfileRecord(userHandle);
+ if (record != null && record.shortcutLoader != null) {
+ record.shortcutLoader.reset();
+ }
+ });
}
@Override