diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-05-15 23:10:41 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-05-15 23:10:41 +0000 |
| commit | e79c1056b20bfc61c73b07e8edaface7ab3cd84b (patch) | |
| tree | 4960dbdda998a44fe9f2f1b30a3b76bd1b80de96 /core/java | |
| parent | 3a9ceed26b23170ba544b4dfc2e9d9d32eddc01e (diff) | |
| parent | 276e384e4c677ff6cb6c5f08edacc3e47a51e9b5 (diff) | |
Merge "De-duplicate with callerTargets(added by using Intent.EXTRA_INITIAL_INTENTS) when adding DisplayResolveInfo." into rvc-dev
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/com/android/internal/app/ChooserListAdapter.java | 27 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/ResolverListAdapter.java | 23 |
2 files changed, 38 insertions, 12 deletions
diff --git a/core/java/com/android/internal/app/ChooserListAdapter.java b/core/java/com/android/internal/app/ChooserListAdapter.java index a3b2defe532a..492f98c1e6da 100644 --- a/core/java/com/android/internal/app/ChooserListAdapter.java +++ b/core/java/com/android/internal/app/ChooserListAdapter.java @@ -104,7 +104,7 @@ public class ChooserListAdapter extends ResolverListAdapter { private Set<ComponentName> mPendingChooserTargetService = new HashSet<>(); private Set<ComponentName> mShortcutComponents = new HashSet<>(); private final List<ChooserTargetInfo> mServiceTargets = new ArrayList<>(); - private final List<TargetInfo> mCallerTargets = new ArrayList<>(); + private final List<DisplayResolveInfo> mCallerTargets = new ArrayList<>(); private final ChooserActivity.BaseChooserTargetComparator mBaseTargetComparator = new ChooserActivity.BaseChooserTargetComparator(); @@ -268,10 +268,13 @@ public class ChooserListAdapter extends ResolverListAdapter { void updateAlphabeticalList() { mSortedList.clear(); + List<DisplayResolveInfo> tempList = new ArrayList<>(); + tempList.addAll(mDisplayList); + tempList.addAll(mCallerTargets); if (mEnableStackedApps) { // Consolidate multiple targets from same app. Map<String, DisplayResolveInfo> consolidated = new HashMap<>(); - for (DisplayResolveInfo info : mDisplayList) { + for (DisplayResolveInfo info : tempList) { String packageName = info.getResolvedComponentName().getPackageName(); DisplayResolveInfo multiDri = consolidated.get(packageName); if (multiDri == null) { @@ -288,7 +291,7 @@ public class ChooserListAdapter extends ResolverListAdapter { } mSortedList.addAll(consolidated.values()); } else { - mSortedList.addAll(mDisplayList); + mSortedList.addAll(tempList); } Collections.sort(mSortedList, new ChooserActivity.AzInfoComparator(mContext)); } @@ -340,7 +343,10 @@ public class ChooserListAdapter extends ResolverListAdapter { return standardCount > mChooserListCommunicator.getMaxRankedTargets() ? standardCount : 0; } - int getRankedTargetCount() { + /** + * Fetch ranked app target count + */ + public int getRankedTargetCount() { int spacesAvailable = mChooserListCommunicator.getMaxRankedTargets() - getCallerTargetCount(); return Math.min(spacesAvailable, super.getCount()); @@ -425,6 +431,19 @@ public class ChooserListAdapter extends ResolverListAdapter { return null; } + // Check whether {@code dri} should be added into mDisplayList. + @Override + protected boolean shouldAddResolveInfo(DisplayResolveInfo dri) { + // Checks if this info is already listed in callerTargets. + for (TargetInfo existingInfo : mCallerTargets) { + if (mResolverListCommunicator + .resolveInfoMatch(dri.getResolveInfo(), existingInfo.getResolveInfo())) { + return false; + } + } + return super.shouldAddResolveInfo(dri); + } + /** * Fetch surfaced direct share target info */ diff --git a/core/java/com/android/internal/app/ResolverListAdapter.java b/core/java/com/android/internal/app/ResolverListAdapter.java index 24bf98b6502c..af9c0408ccaa 100644 --- a/core/java/com/android/internal/app/ResolverListAdapter.java +++ b/core/java/com/android/internal/app/ResolverListAdapter.java @@ -85,7 +85,7 @@ public class ResolverListAdapter extends BaseAdapter { private int mLastChosenPosition = -1; private boolean mFilterLastUsed; - private final ResolverListCommunicator mResolverListCommunicator; + final ResolverListCommunicator mResolverListCommunicator; private Runnable mPostListReadyRunnable; private final boolean mIsAudioCaptureDevice; private boolean mIsTabLoaded; @@ -443,15 +443,22 @@ public class ResolverListAdapter extends BaseAdapter { // TODO(arangelov): Is that UserHandle.USER_CURRENT check okay? if (dri != null && dri.getResolveInfo() != null && dri.getResolveInfo().targetUserId == UserHandle.USER_CURRENT) { - // Checks if this info is already listed in display. - for (DisplayResolveInfo existingInfo : mDisplayList) { - if (mResolverListCommunicator - .resolveInfoMatch(dri.getResolveInfo(), existingInfo.getResolveInfo())) { - return; - } + if (shouldAddResolveInfo(dri)) { + mDisplayList.add(dri); + } + } + } + + // Check whether {@code dri} should be added into mDisplayList. + protected boolean shouldAddResolveInfo(DisplayResolveInfo dri) { + // Checks if this info is already listed in display. + for (DisplayResolveInfo existingInfo : mDisplayList) { + if (mResolverListCommunicator + .resolveInfoMatch(dri.getResolveInfo(), existingInfo.getResolveInfo())) { + return false; } - mDisplayList.add(dri); } + return true; } @Nullable |
