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

Commit 33d480ed authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[BiometricsV2] Refactor AutoCredentialViewModel" into main

parents e22ab2c9 f8cdda45
Loading
Loading
Loading
Loading
+11 −28
Original line number Diff line number Diff line
@@ -64,11 +64,8 @@ class AutoCredentialViewModel(
     */
    interface ChallengeGenerator {

        /** Get callback that will be called later after challenge generated */
        fun getCallback(): GenerateChallengeCallback?

        /** Set callback that will be called later after challenge generated */
        fun setCallback(callback: GenerateChallengeCallback?)
        /** Callback that will be called later after challenge generated */
        var callback: GenerateChallengeCallback?

        /** Method for generating challenge from FingerprintManager or FaceManager */
        fun generateChallenge(userId: Int)
@@ -79,30 +76,16 @@ class AutoCredentialViewModel(
        private val fingerprintRepository: FingerprintRepository
    ) : ChallengeGenerator {

        private var mCallback: GenerateChallengeCallback? = null

        override fun getCallback(): GenerateChallengeCallback? {
            return mCallback
        }

        override fun setCallback(callback: GenerateChallengeCallback?) {
            mCallback = callback
        }
        override var callback: GenerateChallengeCallback? = null

        override fun generateChallenge(userId: Int) {
            val callback = mCallback
            if (callback == null) {
                Log.e(TAG, "generateChallenge, null callback")
                return
            }

            callback?.let {
                fingerprintRepository.generateChallenge(userId) {
                        sensorId: Int, uid: Int, challenge: Long ->
                callback.onChallengeGenerated(
                    sensorId,
                    uid,
                    challenge
                )
                    it.onChallengeGenerated(sensorId, uid, challenge)
                }
            } ?:run {
                Log.e(TAG, "generateChallenge, null callback")
            }
        }

@@ -160,7 +143,7 @@ class AutoCredentialViewModel(
        revokeGkPwHandle: Boolean,
        scope: CoroutineScope
    ) {
        challengeGenerator.setCallback(object : GenerateChallengeCallback {
        challengeGenerator.callback = object : GenerateChallengeCallback {
            override fun onChallengeGenerated(sensorId: Int, userId: Int, challenge: Long) {
                var illegalStateExceptionCaught = false
                try {
@@ -188,7 +171,7 @@ class AutoCredentialViewModel(
                    }
                }
            }
        })
        }
        challengeGenerator.generateChallenge(userId)
    }

+5 −12
Original line number Diff line number Diff line
@@ -507,22 +507,15 @@ class AutoCredentialViewModelTest {
        var challenge = CredentialModel.INVALID_CHALLENGE
        var callbackRunCount = 0

        private var _callback: AutoCredentialViewModel.GenerateChallengeCallback? = null

        override fun getCallback(): AutoCredentialViewModel.GenerateChallengeCallback? {
            return _callback
        }

        override fun setCallback(callback: AutoCredentialViewModel.GenerateChallengeCallback?) {
            _callback = callback
        }
        override var callback: AutoCredentialViewModel.GenerateChallengeCallback? = null

        override fun generateChallenge(userId: Int) {
            val callback = _callback ?: return
            callback.onChallengeGenerated(sensorId, this.userId, challenge)
            callback?.let {
                it.onChallengeGenerated(sensorId, this.userId, challenge)
                ++callbackRunCount
            }
        }
    }

    private fun newGoodCredential(gkPwHandle: Long, hat: ByteArray): VerifyCredentialResponse {
        return VerifyCredentialResponse.Builder()