diff options
author | Alex Kershaw <alexkershaw@google.com> | 2020-12-17 17:22:22 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-12-17 17:22:22 +0000 |
commit | 2e6c54c29375d70f56cd3a636b0973775bfd1146 (patch) | |
tree | 6a112ab827df61c27601ba00501a4ca6d2c329db /services/robotests | |
parent | cff7cd0d2182b34c7e3d6667affe208e063b1ae5 (diff) | |
parent | f764d9e98f9fadb1c76b89e768683bb02595363c (diff) |
DO NOT MERGE Correctly reset cross-profile app-op am: f764d9e98f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13236705
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Iea45f7508d51a3a2f2a7be513549b2d8d34e1bb9
Diffstat (limited to 'services/robotests')
-rw-r--r-- | services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java | 77 |
1 files changed, 60 insertions, 17 deletions
diff --git a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java index 4b25890e5fdb..adf892aa12ab 100644 --- a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java +++ b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java @@ -37,7 +37,6 @@ import android.annotation.UserIdInt; import android.app.ActivityManagerInternal; import android.app.AppOpsManager; import android.app.AppOpsManager.Mode; -import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManagerInternal; import android.content.ComponentName; import android.content.ContextWrapper; @@ -94,12 +93,15 @@ public class CrossProfileAppsServiceImplRoboTest { private static final int CALLING_PID = 1000; private static final String CROSS_PROFILE_APP_PACKAGE_NAME = "com.android.server.pm.crossprofileappsserviceimplrobotest.crossprofileapp"; - private static final int PERSONAL_PROFILE_USER_ID = 0; + @UserIdInt private static final int PERSONAL_PROFILE_USER_ID = 0; private static final int PERSONAL_PROFILE_UID = 2222; - private static final int WORK_PROFILE_USER_ID = 10; + @UserIdInt private static final int WORK_PROFILE_USER_ID = 10; private static final int WORK_PROFILE_UID = 3333; private static final int OTHER_PROFILE_WITHOUT_CROSS_PROFILE_APP_USER_ID = 20; - private static final int OUTSIDE_PROFILE_GROUP_USER_ID = 30; + @UserIdInt private static final int OTHER_PROFILE_GROUP_USER_ID = 30; + private static final int OTHER_PROFILE_GROUP_UID = 4444; + @UserIdInt private static final int OTHER_PROFILE_GROUP_2_USER_ID = 31; + private static final int OTHER_PROFILE_GROUP_2_UID = 5555; private final ContextWrapper mContext = ApplicationProvider.getApplicationContext(); private final UserManager mUserManager = mContext.getSystemService(UserManager.class); @@ -138,6 +140,10 @@ public class CrossProfileAppsServiceImplRoboTest { mockCrossProfileAppInstalledOnProfile( packageInfo, PERSONAL_PROFILE_USER_ID, PERSONAL_PROFILE_UID); mockCrossProfileAppInstalledOnProfile(packageInfo, WORK_PROFILE_USER_ID, WORK_PROFILE_UID); + mockCrossProfileAppInstalledOnProfile( + packageInfo, OTHER_PROFILE_GROUP_USER_ID, OTHER_PROFILE_GROUP_UID); + mockCrossProfileAppInstalledOnProfile( + packageInfo, OTHER_PROFILE_GROUP_2_USER_ID, OTHER_PROFILE_GROUP_2_UID); } private void mockCrossProfileAppInstalledOnProfile( @@ -200,16 +206,22 @@ public class CrossProfileAppsServiceImplRoboTest { @Before public void setUpCrossProfileAppUidsAndPackageNames() { + setUpCrossProfileAppUidAndPackageName( + PERSONAL_PROFILE_UID, PERSONAL_PROFILE_USER_ID); + setUpCrossProfileAppUidAndPackageName( + WORK_PROFILE_UID, WORK_PROFILE_USER_ID); + setUpCrossProfileAppUidAndPackageName( + OTHER_PROFILE_GROUP_UID, OTHER_PROFILE_GROUP_USER_ID); + setUpCrossProfileAppUidAndPackageName( + OTHER_PROFILE_GROUP_2_UID, OTHER_PROFILE_GROUP_2_USER_ID); + } + + private void setUpCrossProfileAppUidAndPackageName(int uid, @UserIdInt int userId) { ShadowApplicationPackageManager.setPackageUidAsUser( - CROSS_PROFILE_APP_PACKAGE_NAME, PERSONAL_PROFILE_UID, PERSONAL_PROFILE_USER_ID); - ShadowApplicationPackageManager.setPackageUidAsUser( - CROSS_PROFILE_APP_PACKAGE_NAME, WORK_PROFILE_UID, WORK_PROFILE_USER_ID); - when(mPackageManagerInternal.getPackageUidInternal( - CROSS_PROFILE_APP_PACKAGE_NAME, /* flags= */ 0, PERSONAL_PROFILE_USER_ID)) - .thenReturn(PERSONAL_PROFILE_UID); - when(mPackageManagerInternal.getPackageUidInternal( - CROSS_PROFILE_APP_PACKAGE_NAME, /* flags= */ 0, WORK_PROFILE_USER_ID)) - .thenReturn(WORK_PROFILE_UID); + CROSS_PROFILE_APP_PACKAGE_NAME, uid, userId); + when(mPackageManagerInternal + .getPackageUid(CROSS_PROFILE_APP_PACKAGE_NAME, /* flags= */ 0, userId)) + .thenReturn(uid); } @Before @@ -229,7 +241,9 @@ public class CrossProfileAppsServiceImplRoboTest { PERSONAL_PROFILE_USER_ID, WORK_PROFILE_USER_ID, OTHER_PROFILE_WITHOUT_CROSS_PROFILE_APP_USER_ID); - shadowUserManager.addProfileIds(OUTSIDE_PROFILE_GROUP_USER_ID); + shadowUserManager.addProfileIds( + OTHER_PROFILE_GROUP_USER_ID, + OTHER_PROFILE_GROUP_2_USER_ID); } @Before @@ -239,6 +253,8 @@ public class CrossProfileAppsServiceImplRoboTest { final int defaultMode = AppOpsManager.opToDefaultMode(OP_INTERACT_ACROSS_PROFILES); explicitlySetInteractAcrossProfilesAppOp(PERSONAL_PROFILE_UID, defaultMode); explicitlySetInteractAcrossProfilesAppOp(WORK_PROFILE_UID, defaultMode); + explicitlySetInteractAcrossProfilesAppOp(OTHER_PROFILE_GROUP_UID, defaultMode); + explicitlySetInteractAcrossProfilesAppOp(OTHER_PROFILE_GROUP_2_UID, defaultMode); } @Test @@ -422,6 +438,27 @@ public class CrossProfileAppsServiceImplRoboTest { } @Test + public void setInteractAcrossProfilesAppOp_userToSetInDifferentProfileGroupToCaller_setsAppOp() { + mCrossProfileAppsServiceImpl.getLocalService().setInteractAcrossProfilesAppOp( + CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED, OTHER_PROFILE_GROUP_USER_ID); + assertThat(getCrossProfileAppOp(OTHER_PROFILE_GROUP_UID)).isEqualTo(MODE_ALLOWED); + } + + @Test + public void setInteractAcrossProfilesAppOp_userToSetInDifferentProfileGroupToCaller_setsAppOpOnOtherProfile() { + mCrossProfileAppsServiceImpl.getLocalService().setInteractAcrossProfilesAppOp( + CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED, OTHER_PROFILE_GROUP_USER_ID); + assertThat(getCrossProfileAppOp(OTHER_PROFILE_GROUP_2_UID)).isEqualTo(MODE_ALLOWED); + } + + @Test + public void setInteractAcrossProfilesAppOp_userToSetInDifferentProfileGroupToCaller_doesNotSetCallerAppOp() { + mCrossProfileAppsServiceImpl.getLocalService().setInteractAcrossProfilesAppOp( + CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED, OTHER_PROFILE_GROUP_USER_ID); + assertThat(getCrossProfileAppOp()).isEqualTo(MODE_DEFAULT); + } + + @Test public void canConfigureInteractAcrossProfiles_packageNotInstalledInProfile_returnsFalse() { mockUninstallCrossProfileAppFromWorkProfile(); assertThat(mCrossProfileAppsServiceImpl @@ -530,7 +567,7 @@ public class CrossProfileAppsServiceImplRoboTest { @Test public void canUserAttemptToConfigureInteractAcrossProfiles_profileOwnerOutsideProfileGroup_returnsTrue() { - when(mDevicePolicyManagerInternal.getProfileOwnerAsUser(OUTSIDE_PROFILE_GROUP_USER_ID)) + when(mDevicePolicyManagerInternal.getProfileOwnerAsUser(OTHER_PROFILE_GROUP_USER_ID)) .thenReturn(buildCrossProfileComponentName()); assertThat(mCrossProfileAppsServiceImpl .canUserAttemptToConfigureInteractAcrossProfiles(CROSS_PROFILE_APP_PACKAGE_NAME)) @@ -601,8 +638,14 @@ public class CrossProfileAppsServiceImplRoboTest { private void mockCrossProfileAndroidPackage(AndroidPackage androidPackage) { when(mPackageManagerInternal.getPackage(CROSS_PROFILE_APP_PACKAGE_NAME)) .thenReturn(androidPackage); - when(mPackageManagerInternal.getPackage(PERSONAL_PROFILE_UID)).thenReturn(androidPackage); - when(mPackageManagerInternal.getPackage(WORK_PROFILE_UID)).thenReturn(androidPackage); + when(mPackageManagerInternal.getPackage(PERSONAL_PROFILE_UID)) + .thenReturn(androidPackage); + when(mPackageManagerInternal.getPackage(WORK_PROFILE_UID)) + .thenReturn(androidPackage); + when(mPackageManagerInternal.getPackage(OTHER_PROFILE_GROUP_UID)) + .thenReturn(androidPackage); + when(mPackageManagerInternal.getPackage(OTHER_PROFILE_GROUP_2_UID)) + .thenReturn(androidPackage); } private void mockCrossProfileAppNotWhitelisted() { |