Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f20bc1b9 authored by Yvonne Jiang's avatar Yvonne Jiang Committed by Android (Google) Code Review
Browse files

Merge "Update SupervisionService.createConfirmSupervisionCredentialsIntent to...

Merge "Update SupervisionService.createConfirmSupervisionCredentialsIntent to be multi-user aware." into main
parents 1606ecb5 f508a234
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ import android.content.Intent;
 * {@hide}
 */
interface ISupervisionManager {
    Intent createConfirmSupervisionCredentialsIntent();
    Intent createConfirmSupervisionCredentialsIntent(int userId);
    boolean isSupervisionEnabledForUser(int userId);
    void setSupervisionEnabledForUser(int userId, boolean enabled);
    String getActiveSupervisionAppPackage(int userId);
+2 −1
Original line number Diff line number Diff line
@@ -105,7 +105,8 @@ public class SupervisionManager {
    public Intent createConfirmSupervisionCredentialsIntent() {
        if (mService != null) {
            try {
                Intent result = mService.createConfirmSupervisionCredentialsIntent();
                Intent result =
                        mService.createConfirmSupervisionCredentialsIntent(mContext.getUserId());
                if (result != null) {
                    result.prepareToEnterProcess(
                            Intent.LOCAL_FLAG_FROM_SYSTEM, mContext.getAttributionSource());
+5 −2
Original line number Diff line number Diff line
@@ -148,9 +148,12 @@ public class SupervisionService extends ISupervisionManager.Stub {
     */
    @Override
    @Nullable
    public Intent createConfirmSupervisionCredentialsIntent() {
    public Intent createConfirmSupervisionCredentialsIntent(@UserIdInt int userId) {
        enforceAnyPermission(QUERY_USERS, MANAGE_USERS);
        if (!isSupervisionEnabledForUser(UserHandle.getCallingUserId())) {
        if (UserHandle.getUserId(Binder.getCallingUid()) != userId) {
            enforcePermission(INTERACT_ACROSS_USERS);
        }
        if (!isSupervisionEnabledForUser(userId)) {
            return null;
        }
        // Verify the supervising user profile exists and has a secure credential set.
+20 −17
Original line number Diff line number Diff line
@@ -70,8 +70,7 @@ class SupervisionServiceTest {

    @Mock private lateinit var mockDpmInternal: DevicePolicyManagerInternal

    @Mock
    private lateinit var mockKeyguardManager: KeyguardManager
    @Mock private lateinit var mockKeyguardManager: KeyguardManager
    @Mock private lateinit var mockPackageManager: PackageManager
    @Mock private lateinit var mockUserManagerInternal: UserManagerInternal

@@ -265,7 +264,8 @@ class SupervisionServiceTest {
        whenever(mockUserManagerInternal.getSupervisingProfileId()).thenReturn(SUPERVISING_USER_ID)
        whenever(mockKeyguardManager.isDeviceSecure(SUPERVISING_USER_ID)).thenReturn(true)

        val intent = checkNotNull(service.createConfirmSupervisionCredentialsIntent())
        val intent =
            checkNotNull(service.createConfirmSupervisionCredentialsIntent(context.getUserId()))
        assertThat(intent.action).isEqualTo(ACTION_CONFIRM_SUPERVISION_CREDENTIALS)
        assertThat(intent.getPackage()).isEqualTo("com.android.settings")
    }
@@ -276,7 +276,7 @@ class SupervisionServiceTest {
        whenever(mockUserManagerInternal.getSupervisingProfileId()).thenReturn(SUPERVISING_USER_ID)
        whenever(mockKeyguardManager.isDeviceSecure(SUPERVISING_USER_ID)).thenReturn(true)

        assertThat(service.createConfirmSupervisionCredentialsIntent()).isNull()
        assertThat(service.createConfirmSupervisionCredentialsIntent(context.getUserId())).isNull()
    }

    @Test
@@ -284,7 +284,7 @@ class SupervisionServiceTest {
        service.mInternal.setSupervisionEnabledForUser(context.getUserId(), true)
        whenever(mockUserManagerInternal.getSupervisingProfileId()).thenReturn(UserHandle.USER_NULL)

        assertThat(service.createConfirmSupervisionCredentialsIntent()).isNull()
        assertThat(service.createConfirmSupervisionCredentialsIntent(context.getUserId())).isNull()
    }

    @Test
@@ -293,7 +293,7 @@ class SupervisionServiceTest {
        whenever(mockUserManagerInternal.getSupervisingProfileId()).thenReturn(SUPERVISING_USER_ID)
        whenever(mockKeyguardManager.isDeviceSecure(SUPERVISING_USER_ID)).thenReturn(false)

        assertThat(service.createConfirmSupervisionCredentialsIntent()).isNull()
        assertThat(service.createConfirmSupervisionCredentialsIntent(context.getUserId())).isNull()
    }

    fun shouldAllowBypassingSupervisionRoleQualification_returnsTrue() {
@@ -348,14 +348,16 @@ class SupervisionServiceTest {
    }

    private fun addDefaultAndTestUsers() {
        val userInfos = userData.map { (userId, flags) ->
        val userInfos =
            userData.map { (userId, flags) ->
                UserInfo(userId, "user" + userId, USER_ICON, flags, USER_TYPE)
            }
        whenever(mockUserManagerInternal.getUsers(any())).thenReturn(userInfos)
    }

    private fun addDefaultAndFullUsers() {
        val userInfos = userData.map { (userId, flags) ->
        val userInfos =
            userData.map { (userId, flags) ->
                UserInfo(userId, "user" + userId, USER_ICON, flags, USER_TYPE)
            } + UserInfo(USER_ID, "user" + USER_ID, USER_ICON, FLAG_FULL, USER_TYPE)
        whenever(mockUserManagerInternal.getUsers(any())).thenReturn(userInfos)
@@ -367,10 +369,11 @@ class SupervisionServiceTest {
        const val SUPERVISING_USER_ID = 10
        const val USER_ICON = "user_icon"
        const val USER_TYPE = "fake_user_type"
        val userData: Map<Int, Int> = mapOf(
        val userData: Map<Int, Int> =
            mapOf(
                USER_SYSTEM to FLAG_SYSTEM,
                MIN_SECONDARY_USER_ID to FLAG_MAIN,
            (MIN_SECONDARY_USER_ID + 1) to (FLAG_FULL or FLAG_FOR_TESTING)
                (MIN_SECONDARY_USER_ID + 1) to (FLAG_FULL or FLAG_FOR_TESTING),
            )
    }
}