summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
author Tyler Saunders <tylersaunders@google.com> 2025-03-13 12:51:25 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-13 12:51:25 -0700
commita76927b02bf259ea557d4cdf1cd3967f29f72851 (patch)
tree7b97f68f88f0d608b80b2ee6e86a0082aab1d2d5 /tests
parent69c71c18f7143fffc0559bd46491876d34245bd7 (diff)
parent001b7bd2fae2078b6a6cd490958d495508a6d881 (diff)
Merge changes Iabc4de0d,I147d67b2 into main
* changes: Handle x-profile delegation for java picker. Properly handle delegation in x-profile checks.
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/providers/media/photopicker/data/UserManagerStateTest.java245
1 files changed, 100 insertions, 145 deletions
diff --git a/tests/src/com/android/providers/media/photopicker/data/UserManagerStateTest.java b/tests/src/com/android/providers/media/photopicker/data/UserManagerStateTest.java
index dda66c673..f2fc38d9d 100644
--- a/tests/src/com/android/providers/media/photopicker/data/UserManagerStateTest.java
+++ b/tests/src/com/android/providers/media/photopicker/data/UserManagerStateTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assume.assumeFalse;
import static org.junit.Assume.assumeTrue;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -111,6 +112,7 @@ public class UserManagerStateTest {
// set Managed Profile identification
when(mMockUserManager.isManagedProfile(mManagedUser.getIdentifier())).thenReturn(true);
+ when(mMockUserManager.isManagedProfile(mManagedUser2.getIdentifier())).thenReturn(true);
when(mMockUserManager.isManagedProfile(mPersonalUser.getIdentifier())).thenReturn(false);
when(mMockUserManager.isManagedProfile(mOtherUser1.getIdentifier())).thenReturn(false);
when(mMockUserManager.isManagedProfile(mOtherUser2.getIdentifier())).thenReturn(false);
@@ -171,6 +173,62 @@ public class UserManagerStateTest {
}
@Test
+ public void testCrossProfileAccessWithDelegationVPlus() {
+ assumeTrue(SdkLevel.isAtLeastV());
+
+ // Return a ResolveInfo for the correct managed profile.
+ when(mMockPackageManager.queryIntentActivitiesAsUser(
+ any(Intent.class), anyInt(), any(UserHandle.class)))
+ .thenReturn(List.of());
+
+ initializeUserManagerState(
+ UserId.of(mPersonalUser),
+ Arrays.asList(mPersonalUser, mManagedUser, mOtherUser1));
+
+ InstrumentationRegistry.getInstrumentation()
+ .runOnMainSync(
+ () -> {
+ mUserManagerState.setIntentAndCheckRestrictions(new Intent());
+ assertThat(
+ mUserManagerState.isCrossProfileAllowedToUser(
+ UserId.of(mManagedUser)))
+ .isFalse();
+ assertThat(
+ mUserManagerState.isCrossProfileAllowedToUser(
+ UserId.of(mOtherUser1)))
+ .isTrue();
+ });
+ }
+
+ @Test
+ public void testCrossProfileAccessWithDelegationManagedToPrivateVPlus() {
+ assumeTrue(SdkLevel.isAtLeastV());
+
+ // Return a ResolveInfo for the personal profile only.
+ when(mMockPackageManager.queryIntentActivitiesAsUser(
+ any(Intent.class), anyInt(), eq(mManagedUser)))
+ .thenReturn(List.of(new ReflectedResolveInfo(mPersonalUser.getIdentifier())));
+
+ initializeUserManagerState(
+ UserId.of(mManagedUser),
+ Arrays.asList(mPersonalUser, mManagedUser, mOtherUser1));
+
+ InstrumentationRegistry.getInstrumentation()
+ .runOnMainSync(
+ () -> {
+ mUserManagerState.setIntentAndCheckRestrictions(new Intent());
+ assertThat(
+ mUserManagerState.isCrossProfileAllowedToUser(
+ UserId.of(mPersonalUser)))
+ .isTrue();
+ assertThat(
+ mUserManagerState.isCrossProfileAllowedToUser(
+ UserId.of(mOtherUser1)))
+ .isTrue();
+ });
+ }
+
+ @Test
public void testCrossProfileAccessWithMultipleManagedProfilesIsAllowedVPlus() {
assumeTrue(SdkLevel.isAtLeastV());
@@ -186,7 +244,8 @@ public class UserManagerStateTest {
when(mMockUserManager.getUserProperties(mManagedUser2)).thenReturn(mManagedUser2Properties);
// Return a ResolveInfo for the correct managed profile.
- when(mMockPackageManager.queryIntentActivities(any(Intent.class), anyInt()))
+ when(mMockPackageManager.queryIntentActivitiesAsUser(
+ any(Intent.class), anyInt(), eq(mPersonalUser)))
.thenReturn(List.of(new ReflectedResolveInfo(mManagedUser2.getIdentifier())));
initializeUserManagerState(
@@ -224,7 +283,8 @@ public class UserManagerStateTest {
when(mMockUserManager.getUserProperties(mManagedUser2)).thenReturn(mManagedUser2Properties);
// Return a ResolveInfo for the OTHER managed profile.
- when(mMockPackageManager.queryIntentActivities(any(Intent.class), anyInt()))
+ when(mMockPackageManager.queryIntentActivitiesAsUser(
+ any(Intent.class), anyInt(), eq(mPersonalUser)))
.thenReturn(List.of(new ReflectedResolveInfo(mManagedUser.getIdentifier())));
initializeUserManagerState(
@@ -254,7 +314,8 @@ public class UserManagerStateTest {
when(mMockUserManager.isManagedProfile(mManagedUser2.getIdentifier())).thenReturn(true);
// Return a ResolveInfo for the correct managed profile.
- when(mMockPackageManager.queryIntentActivities(any(Intent.class), anyInt()))
+ when(mMockPackageManager.queryIntentActivitiesAsUser(
+ any(Intent.class), anyInt(), eq(mPersonalUser)))
.thenReturn(List.of(new ReflectedResolveInfo(mManagedUser2.getIdentifier())));
initializeUserManagerState(
@@ -280,7 +341,8 @@ public class UserManagerStateTest {
when(mMockUserManager.isManagedProfile(mManagedUser2.getIdentifier())).thenReturn(true);
// Return a ResolveInfo for the OTHER managed profile.
- when(mMockPackageManager.queryIntentActivities(any(Intent.class), anyInt()))
+ when(mMockPackageManager.queryIntentActivitiesAsUser(
+ any(Intent.class), anyInt(), eq(mPersonalUser)))
.thenReturn(List.of(new ReflectedResolveInfo(mManagedUser.getIdentifier())));
initializeUserManagerState(
@@ -349,19 +411,14 @@ public class UserManagerStateTest {
public void testGetAllUserProfileIdsThatNeedToShowInPhotoPicker_currentUserIsPersonalUser() {
initializeUserManagerState(
UserId.of(mPersonalUser),
- Arrays.asList(mPersonalUser, mManagedUser, mOtherUser1, mOtherUser2));
+ Arrays.asList(mPersonalUser, mManagedUser));
InstrumentationRegistry.getInstrumentation()
.runOnMainSync(
() -> {
List<UserId> userIdList =
- SdkLevel.isAtLeastV()
- ? Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser),
- UserId.of(mOtherUser1))
- : Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser));
+ Arrays.asList(
+ UserId.of(mPersonalUser),
+ UserId.of(mManagedUser));
assertThat(mUserManagerState.getAllUserProfileIds())
.containsExactlyElementsIn(userIdList);
@@ -372,19 +429,14 @@ public class UserManagerStateTest {
public void testGetAllUserProfileIdsThatNeedToShowInPhotoPicker_currentUserIsManagedUser() {
initializeUserManagerState(
UserId.of(mManagedUser),
- Arrays.asList(mPersonalUser, mManagedUser, mOtherUser1, mOtherUser2));
+ Arrays.asList(mPersonalUser, mManagedUser));
InstrumentationRegistry.getInstrumentation()
.runOnMainSync(
() -> {
List<UserId> userIdList =
- SdkLevel.isAtLeastV()
- ? Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser),
- UserId.of(mOtherUser1))
- : Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser));
+ Arrays.asList(
+ UserId.of(mPersonalUser),
+ UserId.of(mManagedUser));
assertThat(mUserManagerState.getAllUserProfileIds())
.containsExactlyElementsIn(userIdList);
@@ -392,22 +444,21 @@ public class UserManagerStateTest {
}
@Test
- public void testGetAllUserProfileIdsThatNeedToShowInPhotoPicker_currentUserIsOtherUser1() {
+ public void
+ testGetAllUserProfileIdsThatNeedToShowInPhotoPicker_currentUserIsOtherUser1VPlus() {
+ assumeTrue(SdkLevel.isAtLeastV());
initializeUserManagerState(
UserId.of(mOtherUser1),
- Arrays.asList(mPersonalUser, mManagedUser, mOtherUser1, mOtherUser2));
+ Arrays.asList(mPersonalUser, mManagedUser, mOtherUser1));
InstrumentationRegistry.getInstrumentation()
.runOnMainSync(
() -> {
List<UserId> userIdList =
- SdkLevel.isAtLeastV()
- ? Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser),
- UserId.of(mOtherUser1))
- : Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser));
+ Arrays.asList(
+ UserId.of(mPersonalUser),
+ UserId.of(mManagedUser),
+ UserId.of(mOtherUser1));
+
assertThat(mUserManagerState.getAllUserProfileIds())
.containsExactlyElementsIn(userIdList);
});
@@ -433,6 +484,7 @@ public class UserManagerStateTest {
@Test
public void testUserIds_multiUserProfilesAvailable_currentUserIsPersonalUser() {
+ assumeFalse(SdkLevel.isAtLeastV());
UserId currentUser = UserId.of(mPersonalUser);
// if available user profiles are {personal , managed, otherUser1 }
@@ -446,13 +498,7 @@ public class UserManagerStateTest {
assertThat(mUserManagerState.getCurrentUserProfileId())
.isEqualTo(UserId.of(mPersonalUser));
- List<UserId> userIdList =
- SdkLevel.isAtLeastV()
- ? Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser),
- UserId.of(mOtherUser1))
- : Arrays.asList(
+ List<UserId> userIdList = Arrays.asList(
UserId.of(mPersonalUser),
UserId.of(mManagedUser));
assertThat(mUserManagerState.getAllUserProfileIds())
@@ -463,77 +509,36 @@ public class UserManagerStateTest {
mUserManagerState.getCurrentUserProfileId()))
.isFalse();
});
-
- // if available user profiles are {personal , otherUser1 }
- initializeUserManagerState(currentUser, Arrays.asList(mPersonalUser, mOtherUser1));
- InstrumentationRegistry.getInstrumentation()
- .runOnMainSync(
- () -> {
- if (SdkLevel.isAtLeastV()) {
- assertThat(mUserManagerState.isMultiUserProfiles()).isTrue();
- } else {
- assertThat(mUserManagerState.isMultiUserProfiles()).isFalse();
- }
-
- List<UserId> userIdList =
- SdkLevel.isAtLeastV()
- ? Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mOtherUser1))
- : Arrays.asList(UserId.of(mPersonalUser));
- assertThat(mUserManagerState.getAllUserProfileIds())
- .containsExactlyElementsIn(userIdList);
- });
-
- // if available user profiles are {personal , otherUser2 }
- initializeUserManagerState(currentUser, Arrays.asList(mPersonalUser, mOtherUser2));
- InstrumentationRegistry.getInstrumentation()
- .runOnMainSync(
- () -> {
- assertThat(mUserManagerState.isMultiUserProfiles()).isFalse();
-
- assertThat(mUserManagerState.getCurrentUserProfileId())
- .isEqualTo(UserId.of(mPersonalUser));
- assertThat(mUserManagerState.getAllUserProfileIds())
- .containsExactlyElementsIn(
- Arrays.asList(UserId.of(mPersonalUser)));
- });
}
@Test
- public void testUserIds_multiUserProfilesAvailable_currentUserIsOtherUser2() {
- UserId currentUser = UserId.of(mOtherUser2);
+ public void testUserIds_multiUserProfilesAvailable_currentUserIsPersonalUserVPlus() {
+ assumeTrue(SdkLevel.isAtLeastV());
+ UserId currentUser = UserId.of(mPersonalUser);
+ // if available user profiles are {personal , managed, otherUser1 }
initializeUserManagerState(
- currentUser, Arrays.asList(mPersonalUser, mManagedUser, mOtherUser1, mOtherUser2));
+ currentUser, Arrays.asList(mPersonalUser, mManagedUser, mOtherUser1));
InstrumentationRegistry.getInstrumentation()
.runOnMainSync(
() -> {
assertThat(mUserManagerState.isMultiUserProfiles()).isTrue();
+
assertThat(mUserManagerState.getCurrentUserProfileId())
- .isEqualTo(UserId.of(mOtherUser2));
+ .isEqualTo(UserId.of(mPersonalUser));
List<UserId> userIdList =
- SdkLevel.isAtLeastV()
- ? Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser),
- UserId.of(mOtherUser1))
- : Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser));
+ Arrays.asList(
+ UserId.of(mPersonalUser),
+ UserId.of(mManagedUser),
+ UserId.of(mOtherUser1));
assertThat(mUserManagerState.getAllUserProfileIds())
.containsExactlyElementsIn(userIdList);
- });
- initializeUserManagerState(currentUser, Arrays.asList(mPersonalUser, mOtherUser2));
- InstrumentationRegistry.getInstrumentation()
- .runOnMainSync(
- () -> {
- assertThat(mUserManagerState.isMultiUserProfiles()).isFalse();
- assertThat(mUserManagerState.getAllUserProfileIds())
- .containsExactlyElementsIn(
- Arrays.asList(UserId.of(mPersonalUser)));
+ assertThat(
+ mUserManagerState.isManagedUserProfile(
+ mUserManagerState.getCurrentUserProfileId()))
+ .isFalse();
});
}
@@ -556,56 +561,6 @@ public class UserManagerStateTest {
mUserManagerState.getCurrentUserProfileId()))
.isTrue();
});
-
- // set current user as otherUser2
- InstrumentationRegistry.getInstrumentation()
- .runOnMainSync(
- () -> {
- mUserManagerState.setUserAsCurrentUserProfile(UserId.of(mOtherUser2));
- assertThat(mUserManagerState.getCurrentUserProfileId())
- .isEqualTo(UserId.of(mManagedUser));
- });
-
- // set current user as otherUser1
- InstrumentationRegistry.getInstrumentation()
- .runOnMainSync(
- () -> {
- mUserManagerState.setUserAsCurrentUserProfile(UserId.of(mOtherUser1));
- UserHandle currentUserProfile =
- SdkLevel.isAtLeastV() ? mOtherUser1 : mManagedUser;
- assertThat(mUserManagerState.getCurrentUserProfileId())
- .isEqualTo(UserId.of(currentUserProfile));
- });
-
- // set current user as personalUser
- InstrumentationRegistry.getInstrumentation()
- .runOnMainSync(
- () -> {
- mUserManagerState.setUserAsCurrentUserProfile(UserId.of(mPersonalUser));
- assertThat(mUserManagerState.getCurrentUserProfileId())
- .isEqualTo(UserId.of(mPersonalUser));
- });
-
- // set current user otherUser3
- InstrumentationRegistry.getInstrumentation()
- .runOnMainSync(
- () -> {
- mUserManagerState.setUserAsCurrentUserProfile(UserId.of(mOtherUser3));
- assertThat(mUserManagerState.getCurrentUserProfileId())
- .isEqualTo(UserId.of(mPersonalUser));
-
- List<UserId> userIdList =
- SdkLevel.isAtLeastV()
- ? Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser),
- UserId.of(mOtherUser1))
- : Arrays.asList(
- UserId.of(mPersonalUser),
- UserId.of(mManagedUser));
- assertThat(mUserManagerState.getAllUserProfileIds())
- .containsExactlyElementsIn(userIdList);
- });
}
private void initializeUserManagerState(UserId current, List<UserHandle> usersOnDevice) {