summaryrefslogtreecommitdiff
path: root/services/robotests
diff options
context:
space:
mode:
authorAlex Kershaw <alexkershaw@google.com>2020-05-19 20:30:16 +0100
committerAlex Kershaw <alexkershaw@google.com>2020-05-19 20:34:17 +0100
commite6a81b38d61972bbc1c37f191874e8a50a4fb9e8 (patch)
treee66dd4d5ae3ff418eae1eece921392c7a48fd600 /services/robotests
parent2133dc6e7361289f355fae60c403d4f3f49a53d9 (diff)
Prevent DPCs from requesting INTERACT_ACROSS_PROFILES
Fixes: 156745686 Test: atest com.android.cts.devicepolicy.CrossProfileAppsPermissionHostSideTest#testCanRequestInteractAcrossProfiles_profileOwner_returnsFalse Test: atest services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java --verbose Change-Id: Ia72573991ecccd9a9d01285ba55059e7f9ea14b0
Diffstat (limited to 'services/robotests')
-rw-r--r--services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java38
1 files changed, 38 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..65183f15b0fd 100644
--- a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java
+++ b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java
@@ -37,7 +37,9 @@ 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;
import android.content.Intent;
import android.content.pm.ActivityInfo;
@@ -96,6 +98,7 @@ public class CrossProfileAppsServiceImplRoboTest {
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;
private final ContextWrapper mContext = ApplicationProvider.getApplicationContext();
private final UserManager mUserManager = mContext.getSystemService(UserManager.class);
@@ -224,6 +227,7 @@ 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);
}
@Before
@@ -475,6 +479,36 @@ public class CrossProfileAppsServiceImplRoboTest {
}
@Test
+ public void canUserAttemptToConfigureInteractAcrossProfiles_profileOwnerWorkProfile_returnsFalse() {
+ when(mDevicePolicyManagerInternal.getProfileOwnerAsUser(WORK_PROFILE_USER_ID))
+ .thenReturn(buildCrossProfileComponentName());
+ assertThat(mCrossProfileAppsServiceImpl
+ .canUserAttemptToConfigureInteractAcrossProfiles(CROSS_PROFILE_APP_PACKAGE_NAME))
+ .isFalse();
+ }
+
+ @Test
+ public void canUserAttemptToConfigureInteractAcrossProfiles_profileOwnerOtherProfile_returnsFalse() {
+ // Normally, the DPC would not be a profile owner of the personal profile, but for the
+ // purposes of this test, it is just a profile owner of any profile within the profile
+ // group.
+ when(mDevicePolicyManagerInternal.getProfileOwnerAsUser(PERSONAL_PROFILE_USER_ID))
+ .thenReturn(buildCrossProfileComponentName());
+ assertThat(mCrossProfileAppsServiceImpl
+ .canUserAttemptToConfigureInteractAcrossProfiles(CROSS_PROFILE_APP_PACKAGE_NAME))
+ .isFalse();
+ }
+
+ @Test
+ public void canUserAttemptToConfigureInteractAcrossProfiles_profileOwnerOutsideProfileGroup_returnsTrue() {
+ when(mDevicePolicyManagerInternal.getProfileOwnerAsUser(OUTSIDE_PROFILE_GROUP_USER_ID))
+ .thenReturn(buildCrossProfileComponentName());
+ assertThat(mCrossProfileAppsServiceImpl
+ .canUserAttemptToConfigureInteractAcrossProfiles(CROSS_PROFILE_APP_PACKAGE_NAME))
+ .isTrue();
+ }
+
+ @Test
public void canUserAttemptToConfigureInteractAcrossProfiles_returnsTrue() {
assertThat(mCrossProfileAppsServiceImpl
.canUserAttemptToConfigureInteractAcrossProfiles(CROSS_PROFILE_APP_PACKAGE_NAME))
@@ -578,6 +612,10 @@ public class CrossProfileAppsServiceImplRoboTest {
.hideAsParsed()).hideAsFinal());
}
+ private ComponentName buildCrossProfileComponentName() {
+ return new ComponentName(CROSS_PROFILE_APP_PACKAGE_NAME, "testClassName");
+ }
+
private class TestInjector implements CrossProfileAppsServiceImpl.Injector {
@Override