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

Commit d6148c9a authored by Sandy Pan's avatar Sandy Pan
Browse files

Workaround for the corner case when credential is not set but supervision is

enabled.

Bug: 407064075
Test: atest ConfirmSupervisionCrendentialsActivityTest
Flag: android.app.supervision.flags.supervision_manager_apis
Change-Id: Icd2e8d7a0a7fc3d684e5e426c201dcf6299e0438
parent 924e8c67
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ open class ConfirmSupervisionCredentialsActivity : FragmentActivity() {
            }
        }

    private val supervisionPinRecoveryLauncher =
    private val getResultLauncher =
        registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
            setResult(result.resultCode)
            finish()
@@ -110,7 +110,9 @@ open class ConfirmSupervisionCredentialsActivity : FragmentActivity() {
        }

        if (!isSupervisingCredentialSet) {
            errorHandler("No supervising credential set, cannot verify credentials.")
            // Redirects to the setup supervision flow when credential is not set.
            val setupIntent = Intent(this, SetupSupervisionActivity::class.java)
            getResultLauncher.launch(setupIntent)
            return
        }

@@ -156,7 +158,7 @@ open class ConfirmSupervisionCredentialsActivity : FragmentActivity() {
            }
        val listener =
            DialogInterface.OnClickListener { _: DialogInterface?, _: Int ->
                supervisionPinRecoveryLauncher.launch(intent)
                getResultLauncher.launch(intent)
            }
        val moreOptionsButtonBuilder =
            PromptContentViewWithMoreOptionsButton.Builder()
+7 −6
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows.shadowOf
import org.robolectric.annotation.Config
import org.robolectric.shadows.ShadowBinder

@@ -57,7 +58,6 @@ class ConfirmSupervisionCredentialsActivityTest {
    private val mockActivityManager = mock<ActivityManager>()
    private val mockKeyguardManager = mock<KeyguardManager>()
    private val mockSupervisionManager = mock<SupervisionManager>()

    private lateinit var mActivity: ConfirmSupervisionCredentialsActivity

    private val callingPackage = "com.example.caller"
@@ -150,16 +150,17 @@ class ConfirmSupervisionCredentialsActivityTest {
    }

    @Test
    fun onCreate_noSupervisingCredential_finish() {
    fun onCreate_noSupervisingCredential_startSetupActivity() {
        mockRoleManager.stub { on { getRoleHolders(any()) } doReturn listOf(callingPackage) }
        mockUserManager.stub { on { users } doReturn listOf(TESTING_USER_INFO) }
        mockUserManager.stub { on { users } doReturn listOf(SUPERVISING_USER_INFO) }
        mockActivityManager.stub { on { startProfile(any()) } doReturn true }
        mockKeyguardManager.stub { on { isDeviceSecure(TESTING_USER_ID) } doReturn false }
        mockKeyguardManager.stub { on { isDeviceSecure(SUPERVISING_USER_ID) } doReturn false }

        mActivity.onCreate(null)
        val shadowActivity = shadowOf(mActivity)
        val startedIntent = shadowActivity.nextStartedActivity

        verify(mActivity).setResult(Activity.RESULT_CANCELED)
        verify(mActivity).finish()
        assert(startedIntent.component?.className == SetupSupervisionActivity::class.java.name)
    }

    @Test