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

Commit fccdacfc authored by juquan's avatar juquan
Browse files

[Device Supervision] Update ChooseLockGeneric to bypass choose lock pattern screen.

In SupervisionCredentialProxyActivity, the intent launching ChooseLockGeneric now includes PASSWORD_TYPE_KEY (numeric). This ensures that for both change PIN and PIN recovery flows, ChooseLockGeneric proceeds directly to PIN setup after any credential confirmation, bypassing the lock type selection screen.

Bug: 414941621
Flag: android.app.supervision.flags.enable_supervision_settings_screen
Test: SupervisionCredentialProxyActivityTest
Change-Id: Id63108f67da2c6a8004710a7ca2bdd8b598e79a0
parent 948cfe03
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -20,11 +20,13 @@ import android.Manifest.permission.MANAGE_USERS
import android.annotation.RequiresPermission
import android.app.ActivityManager
import android.app.ComponentCaller
import android.app.admin.DevicePolicyManager
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.annotation.VisibleForTesting
import androidx.fragment.app.FragmentActivity
import com.android.internal.widget.LockPatternUtils
import com.android.settings.password.ChooseLockGeneric
import com.android.settingslib.supervision.SupervisionLog.TAG

@@ -54,7 +56,14 @@ class SupervisionCredentialProxyActivity : FragmentActivity() {
            return
        }

        val intent = Intent(this, ChooseLockGeneric::class.java)
        val intent =
            Intent(this, ChooseLockGeneric::class.java).apply {
                // To go directly to setting up a PIN
                putExtra(
                    LockPatternUtils.PASSWORD_TYPE_KEY,
                    DevicePolicyManager.PASSWORD_QUALITY_NUMERIC,
                )
            }
        startActivityForResultAsUser(
            intent,
            REQUEST_CODE_SUPERVISION_CREDENTIALS_PROXY,
@@ -94,7 +103,6 @@ class SupervisionCredentialProxyActivity : FragmentActivity() {
    }

    companion object {
        @VisibleForTesting
        const val REQUEST_CODE_SUPERVISION_CREDENTIALS_PROXY = 10
        @VisibleForTesting const val REQUEST_CODE_SUPERVISION_CREDENTIALS_PROXY = 10
    }
}
+13 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.supervision
import android.app.Activity
import android.app.ActivityManager
import android.app.ComponentCaller
import android.app.admin.DevicePolicyManager
import android.content.Context
import android.content.pm.UserInfo
import android.os.UserHandle
@@ -25,6 +26,7 @@ import android.os.UserManager
import android.os.UserManager.USER_TYPE_PROFILE_SUPERVISING
import android.os.UserManager.USER_TYPE_PROFILE_TEST
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.internal.widget.LockPatternUtils
import com.android.settings.password.ChooseLockGeneric
import com.android.settings.supervision.SupervisionCredentialProxyActivity.Companion.REQUEST_CODE_SUPERVISION_CREDENTIALS_PROXY
import com.google.common.truth.Truth.assertThat
@@ -78,8 +80,17 @@ class SupervisionCredentialProxyActivityTest {
        mActivityController.setup()

        assertThat(mActivity.isFinishing).isFalse()
        assertThat(shadowActivity.nextStartedActivity.component?.className)
            .isEqualTo(ChooseLockGeneric::class.java.name)

        val startedIntent = shadowActivity.nextStartedActivity
        assertThat(startedIntent.component?.className).isEqualTo(ChooseLockGeneric::class.java.name)
        assertThat(startedIntent.hasExtra(LockPatternUtils.PASSWORD_TYPE_KEY)).isTrue()
        assertThat(
                startedIntent.getIntExtra(
                    LockPatternUtils.PASSWORD_TYPE_KEY,
                    -1, /* Default value not expected */
                )
            )
            .isEqualTo(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC)

        // Ensure that the supervising profile is started
        val userCaptor = argumentCaptor<UserHandle>()