summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
author Joshua Trask <joshtrask@google.com> 2023-06-07 18:58:21 +0000
committer Joshua Trask <joshtrask@google.com> 2023-06-09 14:46:47 +0000
commit8ad27b4ab8bc802d5c5b564db29ab72dfb0c5ab3 (patch)
tree80c5224fd281ae397754f20a089beb2e0c82ae55 /java
parent5d76bc638c7d3617af573dcba981e30b8b477123 (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')
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java14
-rw-r--r--java/src/com/android/intentresolver/ChooserListAdapter.java3
-rw-r--r--java/src/com/android/intentresolver/ResolverActivity.java20
-rw-r--r--java/src/com/android/intentresolver/icons/LoadIconTask.java4
-rw-r--r--java/tests/src/com/android/intentresolver/ResolverDataProvider.java28
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;