diff options
| author | 2023-12-11 18:52:23 +0000 | |
|---|---|---|
| committer | 2023-12-11 18:52:23 +0000 | |
| commit | d259bcfbf0350283c8483cb980078d3ef1b339ee (patch) | |
| tree | 9ad1618cc340a9b2135d9ac0dd89a9d589ebf607 /java/src/com | |
| parent | 2722e36e5591398cdf96be94639fe9ccc055a3d6 (diff) | |
| parent | df53ad197e45ccc9ff7a8bf6d63e15c61cb51a5a (diff) | |
Merge "Move Chooser package-change shortcut reset to list adapter" into main
Diffstat (limited to 'java/src/com')
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 |