Updated interactors to use repos
Test: Verified flows still work as expected Flag: EXEMPT bugfix Bug: 379113250 Change-Id: I548b98f9e9121e7c0b4e613559817895c33af989
This commit is contained in:
@@ -122,24 +122,24 @@ class BiometricsEnvironment(
|
|||||||
FingerprintEnrollStageThresholdInteractor(fingerprintEnrollmentRepository)
|
FingerprintEnrollStageThresholdInteractor(fingerprintEnrollmentRepository)
|
||||||
|
|
||||||
fun createGenerateChallengeInteractor(): GenerateChallengeInteractor =
|
fun createGenerateChallengeInteractor(): GenerateChallengeInteractor =
|
||||||
GenerateChallengeInteractorImpl(fingerprintManager, context.userId, gateKeeperPasswordProvider)
|
GenerateChallengeInteractorImpl(fingerprintManager, userRepo, gateKeeperPasswordProvider)
|
||||||
|
|
||||||
fun createFingerprintEnrollInteractor(): EnrollFingerprintInteractor =
|
fun createFingerprintEnrollInteractor(): EnrollFingerprintInteractor =
|
||||||
EnrollFingerprintInteractorImpl(context.userId, fingerprintManager, Settings)
|
EnrollFingerprintInteractorImpl(userRepo, fingerprintManager, Settings)
|
||||||
|
|
||||||
fun createFingerprintsEnrolledInteractor(): EnrolledFingerprintsInteractorImpl =
|
fun createFingerprintsEnrolledInteractor(): EnrolledFingerprintsInteractorImpl =
|
||||||
EnrolledFingerprintsInteractorImpl(fingerprintEnrollmentRepository)
|
EnrolledFingerprintsInteractorImpl(fingerprintEnrollmentRepository)
|
||||||
|
|
||||||
fun createAuthenticateInteractor(): AuthenitcateInteractor =
|
fun createAuthenticateInteractor(): AuthenitcateInteractor =
|
||||||
AuthenticateInteractorImpl(fingerprintManager, context.userId)
|
AuthenticateInteractorImpl(fingerprintManager, userRepo)
|
||||||
|
|
||||||
fun createUserInteractor(): UserInteractor = UserInteractorImpl(userRepo)
|
fun createUserInteractor(): UserInteractor = UserInteractorImpl(userRepo)
|
||||||
|
|
||||||
fun createRemoveFingerprintInteractor(): RemoveFingerprintInteractor =
|
fun createRemoveFingerprintInteractor(): RemoveFingerprintInteractor =
|
||||||
RemoveFingerprintsInteractorImpl(fingerprintManager, context.userId)
|
RemoveFingerprintsInteractorImpl(fingerprintManager, userRepo)
|
||||||
|
|
||||||
fun createRenameFingerprintInteractor(): RenameFingerprintInteractor =
|
fun createRenameFingerprintInteractor(): RenameFingerprintInteractor =
|
||||||
RenameFingerprintsInteractorImpl(fingerprintManager, context.userId, backgroundDispatcher)
|
RenameFingerprintsInteractorImpl(fingerprintManager, userRepo, backgroundDispatcher)
|
||||||
|
|
||||||
fun createAccessibilityInteractor(): AccessibilityInteractor {
|
fun createAccessibilityInteractor(): AccessibilityInteractor {
|
||||||
return AccessibilityInteractorImpl(context.getSystemService(AccessibilityManager::class.java)!!)
|
return AccessibilityInteractorImpl(context.getSystemService(AccessibilityManager::class.java)!!)
|
||||||
|
@@ -19,19 +19,22 @@ package com.android.settings.biometrics.fingerprint2.domain.interactor
|
|||||||
import android.hardware.fingerprint.FingerprintManager
|
import android.hardware.fingerprint.FingerprintManager
|
||||||
import android.os.CancellationSignal
|
import android.os.CancellationSignal
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import com.android.settings.biometrics.fingerprint2.data.repository.UserRepo
|
||||||
import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.AuthenitcateInteractor
|
import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.AuthenitcateInteractor
|
||||||
import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintAuthAttemptModel
|
import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintAuthAttemptModel
|
||||||
import kotlin.coroutines.resume
|
import kotlin.coroutines.resume
|
||||||
import kotlinx.coroutines.CancellableContinuation
|
import kotlinx.coroutines.CancellableContinuation
|
||||||
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlinx.coroutines.suspendCancellableCoroutine
|
import kotlinx.coroutines.suspendCancellableCoroutine
|
||||||
|
|
||||||
class AuthenticateInteractorImpl(
|
class AuthenticateInteractorImpl(
|
||||||
private val fingerprintManager: FingerprintManager,
|
private val fingerprintManager: FingerprintManager,
|
||||||
private val userId: Int,
|
private val userRepo: UserRepo,
|
||||||
) : AuthenitcateInteractor {
|
) : AuthenitcateInteractor {
|
||||||
|
|
||||||
override suspend fun authenticate(): FingerprintAuthAttemptModel =
|
override suspend fun authenticate(): FingerprintAuthAttemptModel {
|
||||||
suspendCancellableCoroutine { c: CancellableContinuation<FingerprintAuthAttemptModel> ->
|
val userId = userRepo.currentUser.first()
|
||||||
|
return suspendCancellableCoroutine { c: CancellableContinuation<FingerprintAuthAttemptModel> ->
|
||||||
val authenticationCallback =
|
val authenticationCallback =
|
||||||
object : FingerprintManager.AuthenticationCallback() {
|
object : FingerprintManager.AuthenticationCallback() {
|
||||||
|
|
||||||
@@ -64,6 +67,7 @@ class AuthenticateInteractorImpl(
|
|||||||
userId,
|
userId,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "AuthenticateInteractor"
|
private const val TAG = "AuthenticateInteractor"
|
||||||
|
@@ -22,6 +22,7 @@ import android.os.CancellationSignal
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.android.settings.biometrics.fingerprint2.conversion.Util.toEnrollError
|
import com.android.settings.biometrics.fingerprint2.conversion.Util.toEnrollError
|
||||||
import com.android.settings.biometrics.fingerprint2.conversion.Util.toOriginalReason
|
import com.android.settings.biometrics.fingerprint2.conversion.Util.toOriginalReason
|
||||||
|
import com.android.settings.biometrics.fingerprint2.data.repository.UserRepo
|
||||||
import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.EnrollFingerprintInteractor
|
import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.EnrollFingerprintInteractor
|
||||||
import com.android.settings.biometrics.fingerprint2.lib.model.EnrollReason
|
import com.android.settings.biometrics.fingerprint2.lib.model.EnrollReason
|
||||||
import com.android.settings.biometrics.fingerprint2.lib.model.FingerEnrollState
|
import com.android.settings.biometrics.fingerprint2.lib.model.FingerEnrollState
|
||||||
@@ -33,10 +34,11 @@ import kotlinx.coroutines.delay
|
|||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.callbackFlow
|
import kotlinx.coroutines.flow.callbackFlow
|
||||||
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
|
|
||||||
class EnrollFingerprintInteractorImpl(
|
class EnrollFingerprintInteractorImpl(
|
||||||
private val userId: Int,
|
private val userRepo: UserRepo,
|
||||||
private val fingerprintManager: FingerprintManager,
|
private val fingerprintManager: FingerprintManager,
|
||||||
private val fingerprintFlow: FingerprintFlow,
|
private val fingerprintFlow: FingerprintFlow,
|
||||||
) : EnrollFingerprintInteractor {
|
) : EnrollFingerprintInteractor {
|
||||||
@@ -47,6 +49,7 @@ class EnrollFingerprintInteractorImpl(
|
|||||||
enrollReason: EnrollReason,
|
enrollReason: EnrollReason,
|
||||||
fingerprintEnrollOptions: FingerprintEnrollOptions,
|
fingerprintEnrollOptions: FingerprintEnrollOptions,
|
||||||
): Flow<FingerEnrollState> = callbackFlow {
|
): Flow<FingerEnrollState> = callbackFlow {
|
||||||
|
val userId = userRepo.currentUser.first()
|
||||||
// TODO (b/308456120) Improve this logic
|
// TODO (b/308456120) Improve this logic
|
||||||
if (enrollRequestOutstanding.value) {
|
if (enrollRequestOutstanding.value) {
|
||||||
Log.d(TAG, "Outstanding enroll request, waiting 150ms")
|
Log.d(TAG, "Outstanding enroll request, waiting 150ms")
|
||||||
|
@@ -19,19 +19,22 @@ package com.android.settings.biometrics.fingerprint2.domain.interactor
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.hardware.fingerprint.FingerprintManager
|
import android.hardware.fingerprint.FingerprintManager
|
||||||
import com.android.settings.biometrics.GatekeeperPasswordProvider
|
import com.android.settings.biometrics.GatekeeperPasswordProvider
|
||||||
|
import com.android.settings.biometrics.fingerprint2.data.repository.UserRepo
|
||||||
import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.GenerateChallengeInteractor
|
import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.GenerateChallengeInteractor
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper
|
import com.android.settings.password.ChooseLockSettingsHelper
|
||||||
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlin.coroutines.resume
|
import kotlin.coroutines.resume
|
||||||
import kotlin.coroutines.suspendCoroutine
|
import kotlin.coroutines.suspendCoroutine
|
||||||
|
|
||||||
class GenerateChallengeInteractorImpl(
|
class GenerateChallengeInteractorImpl(
|
||||||
private val fingerprintManager: FingerprintManager,
|
private val fingerprintManager: FingerprintManager,
|
||||||
private val userId: Int,
|
private val userRepo: UserRepo,
|
||||||
private val gatekeeperPasswordProvider: GatekeeperPasswordProvider,
|
private val gatekeeperPasswordProvider: GatekeeperPasswordProvider,
|
||||||
) : GenerateChallengeInteractor {
|
) : GenerateChallengeInteractor {
|
||||||
|
|
||||||
override suspend fun generateChallenge(gateKeeperPasswordHandle: Long): Pair<Long, ByteArray> =
|
override suspend fun generateChallenge(gateKeeperPasswordHandle: Long): Pair<Long, ByteArray> {
|
||||||
suspendCoroutine {
|
val userId = userRepo.currentUser.first()
|
||||||
|
return suspendCoroutine {
|
||||||
val callback =
|
val callback =
|
||||||
FingerprintManager.GenerateChallengeCallback { _, userId, challenge ->
|
FingerprintManager.GenerateChallengeCallback { _, userId, challenge ->
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
@@ -45,4 +48,5 @@ class GenerateChallengeInteractorImpl(
|
|||||||
}
|
}
|
||||||
fingerprintManager.generateChallenge(userId, callback)
|
fingerprintManager.generateChallenge(userId, callback)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,17 +18,21 @@ package com.android.settings.biometrics.fingerprint2.domain.interactor
|
|||||||
|
|
||||||
import android.hardware.fingerprint.FingerprintManager
|
import android.hardware.fingerprint.FingerprintManager
|
||||||
import android.hardware.fingerprint.FingerprintManager.RemovalCallback
|
import android.hardware.fingerprint.FingerprintManager.RemovalCallback
|
||||||
|
import com.android.settings.biometrics.fingerprint2.data.repository.UserRepo
|
||||||
import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.RemoveFingerprintInteractor
|
import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.RemoveFingerprintInteractor
|
||||||
import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintData
|
import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintData
|
||||||
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlin.coroutines.resume
|
import kotlin.coroutines.resume
|
||||||
import kotlin.coroutines.suspendCoroutine
|
import kotlin.coroutines.suspendCoroutine
|
||||||
|
|
||||||
class RemoveFingerprintsInteractorImpl(
|
class RemoveFingerprintsInteractorImpl(
|
||||||
private val fingerprintManager: FingerprintManager,
|
private val fingerprintManager: FingerprintManager,
|
||||||
private val userId: Int,
|
private val userRepo: UserRepo,
|
||||||
) : RemoveFingerprintInteractor {
|
) : RemoveFingerprintInteractor {
|
||||||
|
|
||||||
override suspend fun removeFingerprint(fp: FingerprintData): Boolean = suspendCoroutine {
|
override suspend fun removeFingerprint(fp: FingerprintData): Boolean {
|
||||||
|
val userId = userRepo.currentUser.first()
|
||||||
|
return suspendCoroutine {
|
||||||
val callback =
|
val callback =
|
||||||
object : RemovalCallback() {
|
object : RemovalCallback() {
|
||||||
override fun onRemovalError(
|
override fun onRemovalError(
|
||||||
@@ -52,4 +56,5 @@ class RemoveFingerprintsInteractorImpl(
|
|||||||
callback,
|
callback,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,18 +17,21 @@
|
|||||||
package com.android.settings.biometrics.fingerprint2.domain.interactor
|
package com.android.settings.biometrics.fingerprint2.domain.interactor
|
||||||
|
|
||||||
import android.hardware.fingerprint.FingerprintManager
|
import android.hardware.fingerprint.FingerprintManager
|
||||||
|
import com.android.settings.biometrics.fingerprint2.data.repository.UserRepo
|
||||||
import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.RenameFingerprintInteractor
|
import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.RenameFingerprintInteractor
|
||||||
import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintData
|
import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintData
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
class RenameFingerprintsInteractorImpl(
|
class RenameFingerprintsInteractorImpl(
|
||||||
private val fingerprintManager: FingerprintManager,
|
private val fingerprintManager: FingerprintManager,
|
||||||
private val userId: Int,
|
private val userRepo: UserRepo,
|
||||||
private val backgroundDispatcher: CoroutineDispatcher,
|
private val backgroundDispatcher: CoroutineDispatcher,
|
||||||
) : RenameFingerprintInteractor {
|
) : RenameFingerprintInteractor {
|
||||||
|
|
||||||
override suspend fun renameFingerprint(fp: FingerprintData, newName: String) {
|
override suspend fun renameFingerprint(fp: FingerprintData, newName: String) {
|
||||||
|
val userId = userRepo.currentUser.first()
|
||||||
withContext(backgroundDispatcher) { fingerprintManager.rename(fp.fingerId, userId, newName) }
|
withContext(backgroundDispatcher) { fingerprintManager.rename(fp.fingerId, userId, newName) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -152,17 +152,17 @@ class FingerprintManagerInteractorTest {
|
|||||||
enrolledFingerprintsInteractorUnderTest =
|
enrolledFingerprintsInteractorUnderTest =
|
||||||
EnrolledFingerprintsInteractorImpl(fingerprintEnrollRepo)
|
EnrolledFingerprintsInteractorImpl(fingerprintEnrollRepo)
|
||||||
generateChallengeInteractorUnderTest =
|
generateChallengeInteractorUnderTest =
|
||||||
GenerateChallengeInteractorImpl(fingerprintManager, userId, gateKeeperPasswordProvider)
|
GenerateChallengeInteractorImpl(fingerprintManager, userRepo, gateKeeperPasswordProvider)
|
||||||
removeFingerprintsInteractorUnderTest =
|
removeFingerprintsInteractorUnderTest =
|
||||||
RemoveFingerprintsInteractorImpl(fingerprintManager, userId)
|
RemoveFingerprintsInteractorImpl(fingerprintManager, userRepo)
|
||||||
renameFingerprintsInteractorUnderTest =
|
renameFingerprintsInteractorUnderTest =
|
||||||
RenameFingerprintsInteractorImpl(fingerprintManager, userId, backgroundDispatcher)
|
RenameFingerprintsInteractorImpl(fingerprintManager, userRepo, backgroundDispatcher)
|
||||||
authenticateInteractorImplUnderTest = AuthenticateInteractorImpl(fingerprintManager, userId)
|
authenticateInteractorImplUnderTest = AuthenticateInteractorImpl(fingerprintManager, userRepo)
|
||||||
|
|
||||||
canEnrollFingerprintsInteractorUnderTest =
|
canEnrollFingerprintsInteractorUnderTest =
|
||||||
CanEnrollFingerprintsInteractorImpl(fingerprintEnrollRepo)
|
CanEnrollFingerprintsInteractorImpl(fingerprintEnrollRepo)
|
||||||
|
|
||||||
enrollInteractorUnderTest = EnrollFingerprintInteractorImpl(userId, fingerprintManager, flow)
|
enrollInteractorUnderTest = EnrollFingerprintInteractorImpl(userRepo, fingerprintManager, flow)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user