summaryrefslogtreecommitdiff
path: root/java/tests
diff options
context:
space:
mode:
author Joshua Trask <joshtrask@google.com> 2023-09-14 21:03:22 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-09-14 21:03:22 +0000
commit71d131441ed5e2a5f4285d9d39b995df091bde2a (patch)
tree18d4c1b26e5ad28fc34e9769a009330be56f082c /java/tests
parent63cd47c3db33a2901aed2e14f6de8be9997014d9 (diff)
parent500df2ce5d4c36934a347aeaed5435e4d136453e (diff)
Merge "Switch activities to AnnotatedUserHandles fully" into main
Diffstat (limited to 'java/tests')
-rw-r--r--java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java12
-rw-r--r--java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java12
-rw-r--r--java/tests/src/com/android/intentresolver/ResolverActivityTest.java148
-rw-r--r--java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java28
-rw-r--r--java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java63
-rw-r--r--java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java12
6 files changed, 134 insertions, 141 deletions
diff --git a/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java b/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java
index d77aa099..b1424849 100644
--- a/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java
+++ b/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java
@@ -65,9 +65,7 @@ public class ChooserActivityOverrideData {
public ImageLoader imageLoader;
public int alternateProfileSetting;
public Resources resources;
- public UserHandle workProfileUserHandle;
- public UserHandle cloneProfileUserHandle;
- public UserHandle tabOwnerUserHandleForLaunch;
+ public AnnotatedUserHandles annotatedUserHandles;
public boolean hasCrossProfileIntents;
public boolean isQuietModeEnabled;
public Integer myUserId;
@@ -86,9 +84,11 @@ public class ChooserActivityOverrideData {
workResolverListController = mock(ChooserActivity.ChooserListController.class);
alternateProfileSetting = 0;
resources = null;
- workProfileUserHandle = null;
- cloneProfileUserHandle = null;
- tabOwnerUserHandleForLaunch = null;
+ annotatedUserHandles = AnnotatedUserHandles.newBuilder()
+ .setUserIdOfCallingApp(1234) // Must be non-negative.
+ .setUserHandleSharesheetLaunchedAs(UserHandle.SYSTEM)
+ .setPersonalProfileUserHandle(UserHandle.SYSTEM)
+ .build();
hasCrossProfileIntents = true;
isQuietModeEnabled = false;
myUserId = null;
diff --git a/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java b/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
index 27b7037f..fbc99a3a 100644
--- a/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
+++ b/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
@@ -237,8 +237,8 @@ public class ChooserWrapperActivity extends ChooserActivity implements IChooserW
}
@Override
- protected UserHandle getWorkProfileUserHandle() {
- return sOverrides.workProfileUserHandle;
+ protected AnnotatedUserHandles computeAnnotatedUserHandles() {
+ return sOverrides.annotatedUserHandles;
}
@Override
@@ -247,14 +247,6 @@ public class ChooserWrapperActivity extends ChooserActivity implements IChooserW
}
@Override
- protected UserHandle getTabOwnerUserHandleForLaunch() {
- if (sOverrides.tabOwnerUserHandleForLaunch == null) {
- return super.getTabOwnerUserHandleForLaunch();
- }
- return sOverrides.tabOwnerUserHandleForLaunch;
- }
-
- @Override
public Context createContextAsUser(UserHandle user, int flags) {
// return the current context as a work profile doesn't really exist in these tests
return this;
diff --git a/java/tests/src/com/android/intentresolver/ResolverActivityTest.java b/java/tests/src/com/android/intentresolver/ResolverActivityTest.java
index 7233fd3d..1ce1b3b0 100644
--- a/java/tests/src/com/android/intentresolver/ResolverActivityTest.java
+++ b/java/tests/src/com/android/intentresolver/ResolverActivityTest.java
@@ -77,6 +77,9 @@ public class ResolverActivityTest {
private static final UserHandle PERSONAL_USER_HANDLE = androidx.test.platform.app
.InstrumentationRegistry.getInstrumentation().getTargetContext().getUser();
+ private static final UserHandle WORK_PROFILE_USER_HANDLE = UserHandle.of(10);
+ private static final UserHandle CLONE_PROFILE_USER_HANDLE = UserHandle.of(11);
+
protected Intent getConcreteIntentForLaunch(Intent clientIntent) {
clientIntent.setClass(
androidx.test.platform.app.InstrumentationRegistry.getInstrumentation().getTargetContext(),
@@ -238,9 +241,9 @@ public class ResolverActivityTest {
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(2, /* userId */ 10,
PERSONAL_USER_HANDLE);
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
ResolveInfo toChoose = personalResolvedComponentInfos.get(1).getResolveInfoAt(0);
@@ -350,7 +353,7 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_displayedWhenWorkProfileUserAvailable() {
Intent sendIntent = createSendImageIntent();
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
mActivityRule.launchActivity(sendIntent);
waitForIdle();
@@ -373,9 +376,9 @@ public class ResolverActivityTest {
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId = */ 10,
PERSONAL_USER_HANDLE);
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos,
new ArrayList<>(workResolvedComponentInfos));
Intent sendIntent = createSendImageIntent();
@@ -393,12 +396,12 @@ public class ResolverActivityTest {
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10,
PERSONAL_USER_HANDLE);
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
final ResolverWrapperActivity activity = mActivityRule.launchActivity(sendIntent);
waitForIdle();
@@ -412,9 +415,9 @@ public class ResolverActivityTest {
public void testWorkTab_personalTabUsesExpectedAdapter() {
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, PERSONAL_USER_HANDLE);
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
@@ -428,12 +431,12 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_workProfileHasExpectedNumberOfTargets() throws InterruptedException {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10,
PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
@@ -448,12 +451,12 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_selectingWorkTabAppOpensAppInWorkProfile() throws InterruptedException {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10,
PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
ResolveInfo[] chosen = new ResolveInfo[1];
@@ -480,11 +483,11 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_noPersonalApps_workTabHasExpectedNumberOfTargets()
throws InterruptedException {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(1, PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
@@ -499,11 +502,11 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_headerIsVisibleInPersonalTab() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(1, PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createOpenWebsiteIntent();
@@ -517,11 +520,11 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_switchTabs_headerStaysSame() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(1, PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createOpenWebsiteIntent();
@@ -543,12 +546,12 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_noPersonalApps_canStartWorkApps()
throws InterruptedException {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId= */ 10,
PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
ResolveInfo[] chosen = new ResolveInfo[1];
@@ -576,14 +579,13 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_crossProfileIntentsDisabled_personalToWork_emptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
int workProfileTargets = 4;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10,
PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos =
- createResolvedComponentsForTest(workProfileTargets,
- sOverrides.workProfileUserHandle);
+ createResolvedComponentsForTest(workProfileTargets, WORK_PROFILE_USER_HANDLE);
sOverrides.hasCrossProfileIntents = false;
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
@@ -602,14 +604,13 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_workProfileDisabled_emptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
int workProfileTargets = 4;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10,
PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos =
- createResolvedComponentsForTest(workProfileTargets,
- sOverrides.workProfileUserHandle);
+ createResolvedComponentsForTest(workProfileTargets, WORK_PROFILE_USER_HANDLE);
sOverrides.isQuietModeEnabled = true;
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
@@ -628,11 +629,11 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_noWorkAppsAvailable_emptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTest(3, PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos =
- createResolvedComponentsForTest(0, sOverrides.workProfileUserHandle);
+ createResolvedComponentsForTest(0, WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
sendIntent.setType("TestType");
@@ -650,11 +651,11 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_xProfileOff_noAppsAvailable_workOff_xProfileOffEmptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTest(3, PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos =
- createResolvedComponentsForTest(0, sOverrides.workProfileUserHandle);
+ createResolvedComponentsForTest(0, WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
sendIntent.setType("TestType");
@@ -674,11 +675,11 @@ public class ResolverActivityTest {
@Test
public void testMiniResolver() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTest(1, PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos =
- createResolvedComponentsForTest(1, sOverrides.workProfileUserHandle);
+ createResolvedComponentsForTest(1, WORK_PROFILE_USER_HANDLE);
// Personal profile only has a browser
personalResolvedComponentInfos.get(0).getResolveInfoAt(0).handleAllWebDataURI = true;
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
@@ -692,11 +693,11 @@ public class ResolverActivityTest {
@Test
public void testMiniResolver_noCurrentProfileTarget() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTest(0, PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos =
- createResolvedComponentsForTest(1, sOverrides.workProfileUserHandle);
+ createResolvedComponentsForTest(1, WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
sendIntent.setType("TestType");
@@ -720,11 +721,11 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_noAppsAvailable_workOff_noAppsAvailableEmptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTest(3, PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos =
- createResolvedComponentsForTest(0, sOverrides.workProfileUserHandle);
+ createResolvedComponentsForTest(0, WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
sendIntent.setType("TestType");
@@ -743,14 +744,13 @@ public class ResolverActivityTest {
@Test
public void testWorkTab_onePersonalTarget_emptyStateOnWorkTarget_doesNotAutoLaunch() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
int workProfileTargets = 4;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(2, /* userId */ 10,
PERSONAL_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos =
- createResolvedComponentsForTest(workProfileTargets,
- sOverrides.workProfileUserHandle);
+ createResolvedComponentsForTest(workProfileTargets, WORK_PROFILE_USER_HANDLE);
sOverrides.hasCrossProfileIntents = false;
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
@@ -769,7 +769,7 @@ public class ResolverActivityTest {
@Test
public void testLayoutWithDefault_withWorkTab_neverShown() throws RemoteException {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
// In this case we prefer the other profile and don't display anything about the last
// chosen activity.
@@ -794,54 +794,53 @@ public class ResolverActivityTest {
@Test
public void testClonedProfilePresent_personalAdapterIsSetWithPersonalProfile() {
// enable cloneProfile
- markCloneProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ false, /* cloneAvailable= */ true);
List<ResolvedComponentInfo> resolvedComponentInfos =
createResolvedComponentsWithCloneProfileForTest(
3,
PERSONAL_USER_HANDLE,
- sOverrides.cloneProfileUserHandle);
+ CLONE_PROFILE_USER_HANDLE);
setupResolverControllers(resolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
final ResolverWrapperActivity activity = mActivityRule.launchActivity(sendIntent);
waitForIdle();
- assertThat(activity.getCurrentUserHandle(), is(activity.getPersonalProfileUserHandle()));
+ assertThat(activity.getCurrentUserHandle(), is(PERSONAL_USER_HANDLE));
assertThat(activity.getAdapter().getCount(), is(3));
}
@Test
public void testClonedProfilePresent_personalTabUsesExpectedAdapter() {
- markWorkProfileUserAvailable();
// enable cloneProfile
- markCloneProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ true);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsWithCloneProfileForTest(
3,
PERSONAL_USER_HANDLE,
- sOverrides.cloneProfileUserHandle);
+ CLONE_PROFILE_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4,
- sOverrides.workProfileUserHandle);
+ WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
final ResolverWrapperActivity activity = mActivityRule.launchActivity(sendIntent);
waitForIdle();
- assertThat(activity.getCurrentUserHandle(), is(activity.getPersonalProfileUserHandle()));
+ assertThat(activity.getCurrentUserHandle(), is(PERSONAL_USER_HANDLE));
assertThat(activity.getAdapter().getCount(), is(3));
}
@Test
public void testClonedProfilePresent_layoutWithDefault_neverShown() throws Exception {
// enable cloneProfile
- markCloneProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ false, /* cloneAvailable= */ true);
Intent sendIntent = createSendImageIntent();
List<ResolvedComponentInfo> resolvedComponentInfos =
createResolvedComponentsWithCloneProfileForTest(
2,
PERSONAL_USER_HANDLE,
- sOverrides.cloneProfileUserHandle);
+ CLONE_PROFILE_USER_HANDLE);
setupResolverControllers(resolvedComponentInfos);
when(sOverrides.resolverListController.getLastChosen())
@@ -859,13 +858,13 @@ public class ResolverActivityTest {
@Test
public void testClonedProfilePresent_alwaysButtonDisabled() throws Exception {
// enable cloneProfile
- markCloneProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ false, /* cloneAvailable= */ true);
Intent sendIntent = createSendImageIntent();
List<ResolvedComponentInfo> resolvedComponentInfos =
createResolvedComponentsWithCloneProfileForTest(
3,
PERSONAL_USER_HANDLE,
- sOverrides.cloneProfileUserHandle);
+ CLONE_PROFILE_USER_HANDLE);
setupResolverControllers(resolvedComponentInfos);
when(sOverrides.resolverListController.getLastChosen())
@@ -892,17 +891,16 @@ public class ResolverActivityTest {
@Test
public void testClonedProfilePresent_personalProfileActivityIsStartedInCorrectUser()
throws Exception {
- markWorkProfileUserAvailable();
// enable cloneProfile
- markCloneProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ true);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsWithCloneProfileForTest(
3,
PERSONAL_USER_HANDLE,
- sOverrides.cloneProfileUserHandle);
+ CLONE_PROFILE_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos =
- createResolvedComponentsForTest(3, sOverrides.workProfileUserHandle);
+ createResolvedComponentsForTest(3, WORK_PROFILE_USER_HANDLE);
sOverrides.hasCrossProfileIntents = false;
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
@@ -928,17 +926,16 @@ public class ResolverActivityTest {
@Test
public void testClonedProfilePresent_workProfileActivityIsStartedInCorrectUser()
throws Exception {
- markWorkProfileUserAvailable();
// enable cloneProfile
- markCloneProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ true);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsWithCloneProfileForTest(
3,
PERSONAL_USER_HANDLE,
- sOverrides.cloneProfileUserHandle);
+ CLONE_PROFILE_USER_HANDLE);
List<ResolvedComponentInfo> workResolvedComponentInfos =
- createResolvedComponentsForTest(3, sOverrides.workProfileUserHandle);
+ createResolvedComponentsForTest(3, WORK_PROFILE_USER_HANDLE);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
sendIntent.setType("TestType");
@@ -967,12 +964,12 @@ public class ResolverActivityTest {
public void testClonedProfilePresent_personalProfileResolverComparatorHasCorrectUsers()
throws Exception {
// enable cloneProfile
- markCloneProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ false, /* cloneAvailable= */ true);
List<ResolvedComponentInfo> resolvedComponentInfos =
createResolvedComponentsWithCloneProfileForTest(
3,
PERSONAL_USER_HANDLE,
- sOverrides.cloneProfileUserHandle);
+ CLONE_PROFILE_USER_HANDLE);
setupResolverControllers(resolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
@@ -981,8 +978,8 @@ public class ResolverActivityTest {
List<UserHandle> result = activity
.getResolverRankerServiceUserHandleList(PERSONAL_USER_HANDLE);
- assertThat(result.containsAll(Lists.newArrayList(PERSONAL_USER_HANDLE,
- sOverrides.cloneProfileUserHandle)), is(true));
+ assertThat(result.containsAll(
+ Lists.newArrayList(PERSONAL_USER_HANDLE, CLONE_PROFILE_USER_HANDLE)), is(true));
}
private Intent createSendImageIntent() {
@@ -1059,8 +1056,19 @@ public class ResolverActivityTest {
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
}
- private void markWorkProfileUserAvailable() {
- ResolverWrapperActivity.sOverrides.workProfileUserHandle = UserHandle.of(10);
+ private void markOtherProfileAvailability(boolean workAvailable, boolean cloneAvailable) {
+ AnnotatedUserHandles.Builder handles = AnnotatedUserHandles.newBuilder();
+ handles
+ .setUserIdOfCallingApp(1234) // Must be non-negative.
+ .setUserHandleSharesheetLaunchedAs(PERSONAL_USER_HANDLE)
+ .setPersonalProfileUserHandle(PERSONAL_USER_HANDLE);
+ if (workAvailable) {
+ handles.setWorkProfileUserHandle(WORK_PROFILE_USER_HANDLE);
+ }
+ if (cloneAvailable) {
+ handles.setCloneProfileUserHandle(CLONE_PROFILE_USER_HANDLE);
+ }
+ sOverrides.annotatedUserHandles = handles.build();
}
private void setupResolverControllers(
@@ -1068,10 +1076,6 @@ public class ResolverActivityTest {
setupResolverControllers(personalResolvedComponentInfos, new ArrayList<>());
}
- private void markCloneProfileUserAvailable() {
- ResolverWrapperActivity.sOverrides.cloneProfileUserHandle = UserHandle.of(11);
- }
-
private void setupResolverControllers(
List<ResolvedComponentInfo> personalResolvedComponentInfos,
List<ResolvedComponentInfo> workResolvedComponentInfos) {
diff --git a/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java b/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java
index 401ede26..60180c0b 100644
--- a/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java
+++ b/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java
@@ -57,13 +57,6 @@ public class ResolverWrapperActivity extends ResolverActivity {
super(/* isIntentPicker= */ true);
}
- // ResolverActivity inspects the launched-from UID at onCreate and needs to see some
- // non-negative value in the test.
- @Override
- public int getLaunchedFromUid() {
- return 1234;
- }
-
public CountingIdlingResource getLabelIdlingResource() {
return mLabelIdlingResource;
}
@@ -161,13 +154,8 @@ public class ResolverWrapperActivity extends ResolverActivity {
}
@Override
- protected UserHandle getWorkProfileUserHandle() {
- return sOverrides.workProfileUserHandle;
- }
-
- @Override
- protected UserHandle getCloneProfileUserHandle() {
- return sOverrides.cloneProfileUserHandle;
+ protected AnnotatedUserHandles computeAnnotatedUserHandles() {
+ return sOverrides.annotatedUserHandles;
}
@Override
@@ -193,9 +181,7 @@ public class ResolverWrapperActivity extends ResolverActivity {
public ResolverListController resolverListController;
public ResolverListController workResolverListController;
public Boolean isVoiceInteraction;
- public UserHandle workProfileUserHandle;
- public UserHandle cloneProfileUserHandle;
- public UserHandle tabOwnerUserHandleForLaunch;
+ public AnnotatedUserHandles annotatedUserHandles;
public Integer myUserId;
public boolean hasCrossProfileIntents;
public boolean isQuietModeEnabled;
@@ -208,9 +194,11 @@ public class ResolverWrapperActivity extends ResolverActivity {
createPackageManager = null;
resolverListController = mock(ResolverListController.class);
workResolverListController = mock(ResolverListController.class);
- workProfileUserHandle = null;
- cloneProfileUserHandle = null;
- tabOwnerUserHandleForLaunch = null;
+ annotatedUserHandles = AnnotatedUserHandles.newBuilder()
+ .setUserIdOfCallingApp(1234) // Must be non-negative.
+ .setUserHandleSharesheetLaunchedAs(UserHandle.SYSTEM)
+ .setPersonalProfileUserHandle(UserHandle.SYSTEM)
+ .build();
myUserId = null;
hasCrossProfileIntents = true;
isQuietModeEnabled = false;
diff --git a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
index 9f16ced5..c0b15b6d 100644
--- a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
+++ b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
@@ -163,6 +163,9 @@ public class UnbundledChooserActivityTest {
private static final UserHandle PERSONAL_USER_HANDLE = InstrumentationRegistry
.getInstrumentation().getTargetContext().getUser();
+ private static final UserHandle WORK_PROFILE_USER_HANDLE = UserHandle.of(10);
+ private static final UserHandle CLONE_PROFILE_USER_HANDLE = UserHandle.of(11);
+
private static final Function<PackageManager, PackageManager> DEFAULT_PM = pm -> pm;
private static final Function<PackageManager, PackageManager> NO_APP_PREDICTION_SERVICE_PM =
pm -> {
@@ -557,7 +560,7 @@ public class UnbundledChooserActivityTest {
createResolvedComponentsForTestWithOtherProfile(2, /* userId */ 10);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4);
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
ResolveInfo toChoose = personalResolvedComponentInfos.get(1).getResolveInfoAt(0);
Intent sendIntent = createSendTextIntent();
@@ -1728,7 +1731,7 @@ public class UnbundledChooserActivityTest {
// We need app targets for direct targets to get displayed
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
setupResolverControllers(resolvedComponentInfos, resolvedComponentInfos);
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
// set caller-provided target
Intent chooserIntent = Intent.createChooser(createSendTextIntent(), null);
@@ -1990,7 +1993,7 @@ public class UnbundledChooserActivityTest {
public void testWorkTab_displayedWhenWorkProfileUserAvailable() {
Intent sendIntent = createSendTextIntent();
sendIntent.setType(TEST_MIME_TYPE);
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
mActivityRule.launchActivity(Intent.createChooser(sendIntent, "work tab test"));
waitForIdle();
@@ -2022,7 +2025,7 @@ public class UnbundledChooserActivityTest {
setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendTextIntent();
sendIntent.setType(TEST_MIME_TYPE);
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
final IChooserWrapper activity = (IChooserWrapper)
mActivityRule.launchActivity(Intent.createChooser(sendIntent, "work tab test"));
@@ -2037,7 +2040,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testWorkTab_workProfileHasExpectedNumberOfTargets() throws InterruptedException {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
int workProfileTargets = 4;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
@@ -2058,7 +2061,7 @@ public class UnbundledChooserActivityTest {
@Test @Ignore
public void testWorkTab_selectingWorkTabAppOpensAppInWorkProfile() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
int workProfileTargets = 4;
@@ -2089,7 +2092,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testWorkTab_crossProfileIntentsDisabled_personalToWork_emptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
int workProfileTargets = 4;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
@@ -2113,7 +2116,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testWorkTab_workProfileDisabled_emptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
int workProfileTargets = 4;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
@@ -2137,7 +2140,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testWorkTab_noWorkAppsAvailable_emptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTest(3);
List<ResolvedComponentInfo> workResolvedComponentInfos =
@@ -2160,7 +2163,7 @@ public class UnbundledChooserActivityTest {
@Ignore // b/220067877
@Test
public void testWorkTab_xProfileOff_noAppsAvailable_workOff_xProfileOffEmptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTest(3);
List<ResolvedComponentInfo> workResolvedComponentInfos =
@@ -2184,7 +2187,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testWorkTab_noAppsAvailable_workOff_noAppsAvailableEmptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTest(3);
List<ResolvedComponentInfo> workResolvedComponentInfos =
@@ -2410,7 +2413,7 @@ public class UnbundledChooserActivityTest {
@Test @Ignore("b/222124533")
public void testSwitchProfileLogging() throws InterruptedException {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
int workProfileTargets = 4;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
@@ -2433,7 +2436,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testWorkTab_onePersonalTarget_emptyStateOnWorkTarget_doesNotAutoLaunch() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
int workProfileTargets = 4;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(2, /* userId */ 10);
@@ -2485,7 +2488,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testWorkTab_withInitialIntents_workTabDoesNotIncludePersonalInitialIntents() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
int workProfileTargets = 1;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(2, /* userId */ 10);
@@ -2515,7 +2518,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testWorkTab_xProfileIntentsDisabled_personalToWork_nonSendIntent_emptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
int workProfileTargets = 4;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
@@ -2549,7 +2552,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testWorkTab_noWorkAppsAvailable_nonSendIntent_emptyStateShown() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTest(3);
List<ResolvedComponentInfo> workResolvedComponentInfos =
@@ -2610,7 +2613,7 @@ public class UnbundledChooserActivityTest {
@Test
public void test_query_shortcut_loader_for_the_selected_tab() {
- markWorkProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ false);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
List<ResolvedComponentInfo> workResolvedComponentInfos =
@@ -2643,12 +2646,12 @@ public class UnbundledChooserActivityTest {
@Test
public void testClonedProfilePresent_personalAdapterIsSetWithPersonalProfile() {
// enable cloneProfile
- markCloneProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ false, /* cloneAvailable= */ true);
List<ResolvedComponentInfo> resolvedComponentInfos =
createResolvedComponentsWithCloneProfileForTest(
3,
PERSONAL_USER_HANDLE,
- ChooserActivityOverrideData.getInstance().cloneProfileUserHandle);
+ CLONE_PROFILE_USER_HANDLE);
setupResolverControllers(resolvedComponentInfos);
Intent sendIntent = createSendTextIntent();
@@ -2662,8 +2665,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testClonedProfilePresent_personalTabUsesExpectedAdapter() {
- markWorkProfileUserAvailable();
- markCloneProfileUserAvailable();
+ markOtherProfileAvailability(/* workAvailable= */ true, /* cloneAvailable= */ true);
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTest(3);
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(
@@ -2984,12 +2986,19 @@ public class UnbundledChooserActivityTest {
return shortcuts;
}
- private void markWorkProfileUserAvailable() {
- ChooserActivityOverrideData.getInstance().workProfileUserHandle = UserHandle.of(10);
- }
-
- private void markCloneProfileUserAvailable() {
- ChooserActivityOverrideData.getInstance().cloneProfileUserHandle = UserHandle.of(11);
+ private void markOtherProfileAvailability(boolean workAvailable, boolean cloneAvailable) {
+ AnnotatedUserHandles.Builder handles = AnnotatedUserHandles.newBuilder();
+ handles
+ .setUserIdOfCallingApp(1234) // Must be non-negative.
+ .setUserHandleSharesheetLaunchedAs(PERSONAL_USER_HANDLE)
+ .setPersonalProfileUserHandle(PERSONAL_USER_HANDLE);
+ if (workAvailable) {
+ handles.setWorkProfileUserHandle(WORK_PROFILE_USER_HANDLE);
+ }
+ if (cloneAvailable) {
+ handles.setCloneProfileUserHandle(CLONE_PROFILE_USER_HANDLE);
+ }
+ ChooserWrapperActivity.sOverrides.annotatedUserHandles = handles.build();
}
private void setupResolverControllers(
diff --git a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java
index f0e88564..da879f74 100644
--- a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java
+++ b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java
@@ -105,7 +105,6 @@ public class UnbundledChooserActivityWorkProfileTest {
public void testBlocker() {
setUpPersonalAndWorkComponentInfos();
sOverrides.hasCrossProfileIntents = mTestCase.hasCrossProfileIntents();
- sOverrides.tabOwnerUserHandleForLaunch = mTestCase.getMyUserHandle();
launchActivity(mTestCase.getIsSendAction());
switchToTab(mTestCase.getTab());
@@ -268,7 +267,12 @@ public class UnbundledChooserActivityWorkProfileTest {
}
private void setUpPersonalAndWorkComponentInfos() {
- markWorkProfileUserAvailable();
+ ChooserWrapperActivity.sOverrides.annotatedUserHandles = AnnotatedUserHandles.newBuilder()
+ .setUserIdOfCallingApp(1234) // Must be non-negative.
+ .setUserHandleSharesheetLaunchedAs(mTestCase.getMyUserHandle())
+ .setPersonalProfileUserHandle(PERSONAL_USER_HANDLE)
+ .setWorkProfileUserHandle(WORK_USER_HANDLE)
+ .build();
int workProfileTargets = 4;
List<ResolvedComponentInfo> personalResolvedComponentInfos =
createResolvedComponentsForTestWithOtherProfile(3,
@@ -308,10 +312,6 @@ public class UnbundledChooserActivityWorkProfileTest {
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
}
- private void markWorkProfileUserAvailable() {
- ChooserWrapperActivity.sOverrides.workProfileUserHandle = WORK_USER_HANDLE;
- }
-
private void assertCantAccessWorkAppsBlockerDisplayed() {
onView(withText(R.string.resolver_cross_profile_blocked))
.check(matches(isDisplayed()));