diff options
author | 2020-05-15 14:29:58 +0000 | |
---|---|---|
committer | 2020-05-15 14:29:58 +0000 | |
commit | 2ae2b39211685ce3f96c2e87f82f779110ac7557 (patch) | |
tree | a0edc524ca400d2a8f9cc2546c5661e0835f8eb4 /services/robotests/src | |
parent | 77f7ceae07ccf282fec66bb8384ac3236982e575 (diff) | |
parent | 0571d3ab0d256526b11a9a2db0a0ae843045421a (diff) |
Merge "Kill app if cross profile app op gets revoked" into rvc-dev am: 45c68542f9 am: 0571d3ab0d
Change-Id: I7a50713715442f14c7e71f8f0ba1e13148dc0141
Diffstat (limited to 'services/robotests/src')
-rw-r--r-- | services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java index f8d197acf883..d78dad55e181 100644 --- a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java +++ b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java @@ -46,6 +46,7 @@ import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; +import android.content.pm.PermissionInfo; import android.content.pm.ResolveInfo; import android.os.Process; import android.os.UserHandle; @@ -106,6 +107,7 @@ public class CrossProfileAppsServiceImplRoboTest { new CrossProfileAppsServiceImpl(mContext, mInjector); private final Map<UserHandle, Set<Intent>> mSentUserBroadcasts = new HashMap<>(); private final Map<Integer, List<ApplicationInfo>> installedApplications = new HashMap<>(); + private final Set<Integer> mKilledUids = new HashSet<>(); @Mock private PackageManagerInternal mPackageManagerInternal; @Mock private IPackageManager mIPackageManager; @@ -389,6 +391,33 @@ public class CrossProfileAppsServiceImplRoboTest { } @Test + public void setInteractAcrossProfilesAppOp_toAllowed_doesNotKillApp() { + mCrossProfileAppsServiceImpl.setInteractAcrossProfilesAppOp( + CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED); + assertThat(mKilledUids).isEmpty(); + } + + @Test + public void setInteractAcrossProfilesAppOp_toDisallowed_killsAppsInBothProfiles() { + shadowOf(mPackageManager).addPermissionInfo(createCrossProfilesPermissionInfo()); + mCrossProfileAppsServiceImpl.setInteractAcrossProfilesAppOp( + CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED); + + mCrossProfileAppsServiceImpl.setInteractAcrossProfilesAppOp( + CROSS_PROFILE_APP_PACKAGE_NAME, MODE_DEFAULT); + + assertThat(mKilledUids).contains(WORK_PROFILE_UID); + assertThat(mKilledUids).contains(PERSONAL_PROFILE_UID); + } + + private PermissionInfo createCrossProfilesPermissionInfo() { + PermissionInfo permissionInfo = new PermissionInfo(); + permissionInfo.name = Manifest.permission.INTERACT_ACROSS_PROFILES; + permissionInfo.protectionLevel = PermissionInfo.PROTECTION_FLAG_APPOP; + return permissionInfo; + } + + @Test public void canConfigureInteractAcrossProfiles_packageNotInstalledInProfile_returnsFalse() { mockUninstallCrossProfileAppFromWorkProfile(); assertThat(mCrossProfileAppsServiceImpl @@ -678,5 +707,10 @@ public class CrossProfileAppsServiceImplRoboTest { // ShadowActivityThread with Robolectric. This method is currently not supported there. return mContext.checkPermission(permission, Process.myPid(), uid); } + + @Override + public void killUid(String packageName, int uid) { + mKilledUids.add(uid); + } } } |