Merge "Updated interactors to use repos" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
d930ec424f
@@ -122,24 +122,24 @@ class BiometricsEnvironment(
|
||||
FingerprintEnrollStageThresholdInteractor(fingerprintEnrollmentRepository)
|
||||
|
||||
fun createGenerateChallengeInteractor(): GenerateChallengeInteractor =
|
||||
GenerateChallengeInteractorImpl(fingerprintManager, context.userId, gateKeeperPasswordProvider)
|
||||
GenerateChallengeInteractorImpl(fingerprintManager, userRepo, gateKeeperPasswordProvider)
|
||||
|
||||
fun createFingerprintEnrollInteractor(): EnrollFingerprintInteractor =
|
||||
EnrollFingerprintInteractorImpl(context.userId, fingerprintManager, Settings)
|
||||
EnrollFingerprintInteractorImpl(userRepo, fingerprintManager, Settings)
|
||||
|
||||
fun createFingerprintsEnrolledInteractor(): EnrolledFingerprintsInteractorImpl =
|
||||
EnrolledFingerprintsInteractorImpl(fingerprintEnrollmentRepository)
|
||||
|
||||
fun createAuthenticateInteractor(): AuthenitcateInteractor =
|
||||
AuthenticateInteractorImpl(fingerprintManager, context.userId)
|
||||
AuthenticateInteractorImpl(fingerprintManager, userRepo)
|
||||
|
||||
fun createUserInteractor(): UserInteractor = UserInteractorImpl(userRepo)
|
||||
|
||||
fun createRemoveFingerprintInteractor(): RemoveFingerprintInteractor =
|
||||
RemoveFingerprintsInteractorImpl(fingerprintManager, context.userId)
|
||||
RemoveFingerprintsInteractorImpl(fingerprintManager, userRepo)
|
||||
|
||||
fun createRenameFingerprintInteractor(): RenameFingerprintInteractor =
|
||||
RenameFingerprintsInteractorImpl(fingerprintManager, context.userId, backgroundDispatcher)
|
||||
RenameFingerprintsInteractorImpl(fingerprintManager, userRepo, backgroundDispatcher)
|
||||
|
||||
fun createAccessibilityInteractor(): AccessibilityInteractor {
|
||||
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.os.CancellationSignal
|
||||
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.model.FingerprintAuthAttemptModel
|
||||
import kotlin.coroutines.resume
|
||||
import kotlinx.coroutines.CancellableContinuation
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.suspendCancellableCoroutine
|
||||
|
||||
class AuthenticateInteractorImpl(
|
||||
private val fingerprintManager: FingerprintManager,
|
||||
private val userId: Int,
|
||||
private val userRepo: UserRepo,
|
||||
) : AuthenitcateInteractor {
|
||||
|
||||
override suspend fun authenticate(): FingerprintAuthAttemptModel =
|
||||
suspendCancellableCoroutine { c: CancellableContinuation<FingerprintAuthAttemptModel> ->
|
||||
override suspend fun authenticate(): FingerprintAuthAttemptModel {
|
||||
val userId = userRepo.currentUser.first()
|
||||
return suspendCancellableCoroutine { c: CancellableContinuation<FingerprintAuthAttemptModel> ->
|
||||
val authenticationCallback =
|
||||
object : FingerprintManager.AuthenticationCallback() {
|
||||
|
||||
@@ -64,6 +67,7 @@ class AuthenticateInteractorImpl(
|
||||
userId,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val TAG = "AuthenticateInteractor"
|
||||
|
@@ -22,6 +22,7 @@ import android.os.CancellationSignal
|
||||
import android.util.Log
|
||||
import com.android.settings.biometrics.fingerprint2.conversion.Util.toEnrollError
|
||||
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.model.EnrollReason
|
||||
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.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.callbackFlow
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.update
|
||||
|
||||
class EnrollFingerprintInteractorImpl(
|
||||
private val userId: Int,
|
||||
private val userRepo: UserRepo,
|
||||
private val fingerprintManager: FingerprintManager,
|
||||
private val fingerprintFlow: FingerprintFlow,
|
||||
) : EnrollFingerprintInteractor {
|
||||
@@ -47,6 +49,7 @@ class EnrollFingerprintInteractorImpl(
|
||||
enrollReason: EnrollReason,
|
||||
fingerprintEnrollOptions: FingerprintEnrollOptions,
|
||||
): Flow<FingerEnrollState> = callbackFlow {
|
||||
val userId = userRepo.currentUser.first()
|
||||
// TODO (b/308456120) Improve this logic
|
||||
if (enrollRequestOutstanding.value) {
|
||||
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.hardware.fingerprint.FingerprintManager
|
||||
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.password.ChooseLockSettingsHelper
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
class GenerateChallengeInteractorImpl(
|
||||
private val fingerprintManager: FingerprintManager,
|
||||
private val userId: Int,
|
||||
private val userRepo: UserRepo,
|
||||
private val gatekeeperPasswordProvider: GatekeeperPasswordProvider,
|
||||
) : GenerateChallengeInteractor {
|
||||
|
||||
override suspend fun generateChallenge(gateKeeperPasswordHandle: Long): Pair<Long, ByteArray> =
|
||||
suspendCoroutine {
|
||||
override suspend fun generateChallenge(gateKeeperPasswordHandle: Long): Pair<Long, ByteArray> {
|
||||
val userId = userRepo.currentUser.first()
|
||||
return suspendCoroutine {
|
||||
val callback =
|
||||
FingerprintManager.GenerateChallengeCallback { _, userId, challenge ->
|
||||
val intent = Intent()
|
||||
@@ -45,4 +48,5 @@ class GenerateChallengeInteractorImpl(
|
||||
}
|
||||
fingerprintManager.generateChallenge(userId, callback)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -18,38 +18,43 @@ package com.android.settings.biometrics.fingerprint2.domain.interactor
|
||||
|
||||
import android.hardware.fingerprint.FingerprintManager
|
||||
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.model.FingerprintData
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
class RemoveFingerprintsInteractorImpl(
|
||||
private val fingerprintManager: FingerprintManager,
|
||||
private val userId: Int,
|
||||
private val userRepo: UserRepo,
|
||||
) : RemoveFingerprintInteractor {
|
||||
|
||||
override suspend fun removeFingerprint(fp: FingerprintData): Boolean = suspendCoroutine {
|
||||
val callback =
|
||||
object : RemovalCallback() {
|
||||
override fun onRemovalError(
|
||||
fp: android.hardware.fingerprint.Fingerprint,
|
||||
errMsgId: Int,
|
||||
errString: CharSequence,
|
||||
) {
|
||||
it.resume(false)
|
||||
}
|
||||
override suspend fun removeFingerprint(fp: FingerprintData): Boolean {
|
||||
val userId = userRepo.currentUser.first()
|
||||
return suspendCoroutine {
|
||||
val callback =
|
||||
object : RemovalCallback() {
|
||||
override fun onRemovalError(
|
||||
fp: android.hardware.fingerprint.Fingerprint,
|
||||
errMsgId: Int,
|
||||
errString: CharSequence,
|
||||
) {
|
||||
it.resume(false)
|
||||
}
|
||||
|
||||
override fun onRemovalSucceeded(
|
||||
fp: android.hardware.fingerprint.Fingerprint?,
|
||||
remaining: Int,
|
||||
) {
|
||||
it.resume(true)
|
||||
override fun onRemovalSucceeded(
|
||||
fp: android.hardware.fingerprint.Fingerprint?,
|
||||
remaining: Int,
|
||||
) {
|
||||
it.resume(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
fingerprintManager.remove(
|
||||
android.hardware.fingerprint.Fingerprint(fp.name, fp.fingerId, fp.deviceId),
|
||||
userId,
|
||||
callback,
|
||||
)
|
||||
fingerprintManager.remove(
|
||||
android.hardware.fingerprint.Fingerprint(fp.name, fp.fingerId, fp.deviceId),
|
||||
userId,
|
||||
callback,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -17,18 +17,21 @@
|
||||
package com.android.settings.biometrics.fingerprint2.domain.interactor
|
||||
|
||||
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.model.FingerprintData
|
||||
import kotlinx.coroutines.CoroutineDispatcher
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
class RenameFingerprintsInteractorImpl(
|
||||
private val fingerprintManager: FingerprintManager,
|
||||
private val userId: Int,
|
||||
private val userRepo: UserRepo,
|
||||
private val backgroundDispatcher: CoroutineDispatcher,
|
||||
) : RenameFingerprintInteractor {
|
||||
|
||||
override suspend fun renameFingerprint(fp: FingerprintData, newName: String) {
|
||||
val userId = userRepo.currentUser.first()
|
||||
withContext(backgroundDispatcher) { fingerprintManager.rename(fp.fingerId, userId, newName) }
|
||||
}
|
||||
}
|
||||
|
@@ -152,17 +152,17 @@ class FingerprintManagerInteractorTest {
|
||||
enrolledFingerprintsInteractorUnderTest =
|
||||
EnrolledFingerprintsInteractorImpl(fingerprintEnrollRepo)
|
||||
generateChallengeInteractorUnderTest =
|
||||
GenerateChallengeInteractorImpl(fingerprintManager, userId, gateKeeperPasswordProvider)
|
||||
GenerateChallengeInteractorImpl(fingerprintManager, userRepo, gateKeeperPasswordProvider)
|
||||
removeFingerprintsInteractorUnderTest =
|
||||
RemoveFingerprintsInteractorImpl(fingerprintManager, userId)
|
||||
RemoveFingerprintsInteractorImpl(fingerprintManager, userRepo)
|
||||
renameFingerprintsInteractorUnderTest =
|
||||
RenameFingerprintsInteractorImpl(fingerprintManager, userId, backgroundDispatcher)
|
||||
authenticateInteractorImplUnderTest = AuthenticateInteractorImpl(fingerprintManager, userId)
|
||||
RenameFingerprintsInteractorImpl(fingerprintManager, userRepo, backgroundDispatcher)
|
||||
authenticateInteractorImplUnderTest = AuthenticateInteractorImpl(fingerprintManager, userRepo)
|
||||
|
||||
canEnrollFingerprintsInteractorUnderTest =
|
||||
CanEnrollFingerprintsInteractorImpl(fingerprintEnrollRepo)
|
||||
|
||||
enrollInteractorUnderTest = EnrollFingerprintInteractorImpl(userId, fingerprintManager, flow)
|
||||
enrollInteractorUnderTest = EnrollFingerprintInteractorImpl(userRepo, fingerprintManager, flow)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user