diff options
| author | 2023-06-07 18:58:21 +0000 | |
|---|---|---|
| committer | 2023-06-09 14:46:47 +0000 | |
| commit | 8ad27b4ab8bc802d5c5b564db29ab72dfb0c5ab3 (patch) | |
| tree | 80c5224fd281ae397754f20a089beb2e0c82ae55 /java | |
| parent | 5d76bc638c7d3617af573dcba981e30b8b477123 (diff) | |
Clean up ResolverActivity.getResolveInfoUserHandle
This function was a shim to read from ResolveInfo.userHandle, which we
added as a stopgap to unblock development on cloned-app support before
the field was actually populated from PackageManager (since we could
make reasonable "predictions" for the right value with logic based on
our own application UI). The PackageManager support has since caught up,
so this has been inlined to use the "real" field and we can now remove
the shim.
This CL also extends ResolverDataProvider to set userHandles in the fake
ResolveInfo instances we build for our tests. That wasn't necessary to
get our current tests to pass, but since we have logic that depends on
these fields, it seemed preferable to provide plausible values that
would better reflect any future issues.
Bug: 273294251
Test: IntentResolverUnitTests, CtsSharesheetDeviceTest
Change-Id: I541220f9e3ab945a1753cda0f8a53f22ab708876
Diffstat (limited to 'java')
5 files changed, 20 insertions, 49 deletions
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java index a2dff970..a9dd8a5f 100644 --- a/java/src/com/android/intentresolver/ChooserActivity.java +++ b/java/src/com/android/intentresolver/ChooserActivity.java @@ -871,9 +871,7 @@ public class ChooserActivity extends ResolverActivity implements targetList, // Adding userHandle from ResolveInfo allows the app icon in Dialog Box to be // resolved correctly within the same tab. - getResolveInfoUserHandle( - targetInfo.getResolveInfo(), - mChooserMultiProfilePagerAdapter.getCurrentUserHandle()), + targetInfo.getResolveInfo().userHandle, shortcutIdKey, shortcutTitle, isShortcutPinned, @@ -914,9 +912,7 @@ public class ChooserActivity extends ResolverActivity implements getSupportFragmentManager(), mti, which, - getResolveInfoUserHandle( - targetInfo.getResolveInfo(), - mChooserMultiProfilePagerAdapter.getCurrentUserHandle())); + targetInfo.getResolveInfo().userHandle); return; } } @@ -1134,11 +1130,7 @@ public class ChooserActivity extends ResolverActivity implements // Adding two stage comparator, first stage compares using displayLabel, next stage // compares using resolveInfo.userHandle mComparator = Comparator.comparing(DisplayResolveInfo::getDisplayLabel, collator) - .thenComparingInt(displayResolveInfo -> - getResolveInfoUserHandle( - displayResolveInfo.getResolveInfo(), - // TODO: User resolveInfo.userHandle, once its available. - UserHandle.SYSTEM).getIdentifier()); + .thenComparingInt(target -> target.getResolveInfo().userHandle.getIdentifier()); } @Override diff --git a/java/src/com/android/intentresolver/ChooserListAdapter.java b/java/src/com/android/intentresolver/ChooserListAdapter.java index b1fa16b0..de947bd1 100644 --- a/java/src/com/android/intentresolver/ChooserListAdapter.java +++ b/java/src/com/android/intentresolver/ChooserListAdapter.java @@ -384,8 +384,7 @@ public class ChooserListAdapter extends ResolverListAdapter { .collect(Collectors.groupingBy(target -> target.getResolvedComponentName().getPackageName() + "#" + target.getDisplayLabel() - + '#' + ResolverActivity.getResolveInfoUserHandle( - target.getResolveInfo(), getUserHandle()).getIdentifier() + + '#' + target.getResolveInfo().userHandle.getIdentifier() )) .values() .stream() diff --git a/java/src/com/android/intentresolver/ResolverActivity.java b/java/src/com/android/intentresolver/ResolverActivity.java index 57871532..3efe942c 100644 --- a/java/src/com/android/intentresolver/ResolverActivity.java +++ b/java/src/com/android/intentresolver/ResolverActivity.java @@ -1649,10 +1649,9 @@ public class ResolverActivity extends FragmentActivity implements /** Start the activity specified by the {@link TargetInfo}.*/ public final void safelyStartActivity(TargetInfo cti) { // In case cloned apps are present, we would want to start those apps in cloned user - // space, which will not be same as adaptor's userHandle. resolveInfo.userHandle + // space, which will not be same as the adapter's userHandle. resolveInfo.userHandle // identifies the correct user space in such cases. - UserHandle activityUserHandle = getResolveInfoUserHandle( - cti.getResolveInfo(), mMultiProfilePagerAdapter.getCurrentUserHandle()); + UserHandle activityUserHandle = cti.getResolveInfo().userHandle; safelyStartActivityAsUser(cti, activityUserHandle, null); } @@ -2267,11 +2266,7 @@ public class ResolverActivity extends FragmentActivity implements && Objects.equals(lhs.activityInfo.packageName, rhs.activityInfo.packageName) // Comparing against resolveInfo.userHandle in case cloned apps are present, // as they will have the same activityInfo. - && Objects.equals( - getResolveInfoUserHandle(lhs, - mMultiProfilePagerAdapter.getActiveListAdapter().getUserHandle()), - getResolveInfoUserHandle(rhs, - mMultiProfilePagerAdapter.getActiveListAdapter().getUserHandle())); + && Objects.equals(lhs.userHandle, rhs.userHandle); } private boolean inactiveListAdapterHasItems() { @@ -2409,13 +2404,4 @@ public class ResolverActivity extends FragmentActivity implements } return userList; } - - /** - * This function is temporary in nature, and its usages will be replaced with just - * resolveInfo.userHandle, once it is available, once sharesheet is stable. - */ - public static UserHandle getResolveInfoUserHandle(ResolveInfo resolveInfo, - UserHandle predictedHandle) { - return resolveInfo.userHandle; - } } diff --git a/java/src/com/android/intentresolver/icons/LoadIconTask.java b/java/src/com/android/intentresolver/icons/LoadIconTask.java index 37ce4093..75132208 100644 --- a/java/src/com/android/intentresolver/icons/LoadIconTask.java +++ b/java/src/com/android/intentresolver/icons/LoadIconTask.java @@ -24,7 +24,6 @@ import android.os.Trace; import android.os.UserHandle; import android.util.Log; -import com.android.intentresolver.ResolverActivity; import com.android.intentresolver.TargetPresentationGetter; import com.android.intentresolver.chooser.DisplayResolveInfo; @@ -64,8 +63,7 @@ class LoadIconTask extends BaseLoadIconTask { protected final Drawable loadIconForResolveInfo(ResolveInfo ri) { // Load icons based on userHandle from ResolveInfo. If in work profile/clone profile, icons // should be badged. - return mPresentationFactory.makePresentationGetter(ri) - .getIcon(ResolverActivity.getResolveInfoUserHandle(ri, mUserHandle)); + return mPresentationFactory.makePresentationGetter(ri).getIcon(ri.userHandle); } } diff --git a/java/tests/src/com/android/intentresolver/ResolverDataProvider.java b/java/tests/src/com/android/intentresolver/ResolverDataProvider.java index 688dd867..1f8d9bee 100644 --- a/java/tests/src/com/android/intentresolver/ResolverDataProvider.java +++ b/java/tests/src/com/android/intentresolver/ResolverDataProvider.java @@ -103,30 +103,26 @@ public class ResolverDataProvider { } public static ResolveInfo createResolveInfo(int i, int userId) { - final ResolveInfo resolveInfo = new ResolveInfo(); - resolveInfo.activityInfo = createActivityInfo(i); - resolveInfo.targetUserId = userId; - return resolveInfo; + return createResolveInfo(i, userId, UserHandle.of(userId)); } + public static ResolveInfo createResolveInfo(int i, int userId, UserHandle resolvedForUser) { - final ResolveInfo resolveInfo = new ResolveInfo(); - resolveInfo.activityInfo = createActivityInfo(i); - resolveInfo.targetUserId = userId; - resolveInfo.userHandle = resolvedForUser; - return resolveInfo; + return createResolveInfo(createActivityInfo(i), userId, resolvedForUser); } public static ResolveInfo createResolveInfo(ComponentName componentName, int userId) { - final ResolveInfo resolveInfo = new ResolveInfo(); - resolveInfo.activityInfo = createActivityInfo(componentName); - resolveInfo.targetUserId = userId; - return resolveInfo; + return createResolveInfo(componentName, userId, UserHandle.of(userId)); } - public static ResolveInfo createResolveInfo(ComponentName componentName, int userId, - UserHandle resolvedForUser) { + public static ResolveInfo createResolveInfo( + ComponentName componentName, int userId, UserHandle resolvedForUser) { + return createResolveInfo(createActivityInfo(componentName), userId, resolvedForUser); + } + + public static ResolveInfo createResolveInfo( + ActivityInfo activityInfo, int userId, UserHandle resolvedForUser) { final ResolveInfo resolveInfo = new ResolveInfo(); - resolveInfo.activityInfo = createActivityInfo(componentName); + resolveInfo.activityInfo = activityInfo; resolveInfo.targetUserId = userId; resolveInfo.userHandle = resolvedForUser; return resolveInfo; |