diff --git a/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt b/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt
index e3233ed..761a9c3 100644
--- a/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt
@@ -58,6 +58,7 @@
 import com.android.settings.biometrics.fingerprint2.domain.interactor.TouchEventInteractor
 import com.android.settings.biometrics.fingerprint2.domain.interactor.UdfpsEnrollInteractor
 import com.android.settings.biometrics.fingerprint2.domain.interactor.UdfpsEnrollInteractorImpl
+import com.android.settings.biometrics.fingerprint2.domain.interactor.UserInteractorImpl
 import com.android.settings.biometrics.fingerprint2.domain.interactor.VibrationInteractor
 import com.android.settings.biometrics.fingerprint2.domain.interactor.VibrationInteractorImpl
 import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.AuthenitcateInteractor
@@ -67,6 +68,7 @@
 import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.RemoveFingerprintInteractor
 import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.RenameFingerprintInteractor
 import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.SensorInteractor
+import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.UserInteractor
 import com.android.settings.biometrics.fingerprint2.lib.model.Settings
 import java.util.concurrent.Executors
 import kotlinx.coroutines.MainScope
@@ -97,11 +99,11 @@
         com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser
       )
     )
-  private val fingerprintEnrollmentRepository =
-    FingerprintEnrollmentRepositoryImpl(fingerprintManager, userRepo, fingerprintSettingsRepository,
-      backgroundDispatcher, applicationScope)
   private val fingerprintSensorRepository: FingerprintSensorRepository =
     FingerprintSensorRepositoryImpl(fingerprintManager, backgroundDispatcher, applicationScope)
+  private val fingerprintEnrollmentRepository =
+    FingerprintEnrollmentRepositoryImpl(fingerprintManager, userRepo, fingerprintSettingsRepository,
+      backgroundDispatcher, applicationScope, fingerprintSensorRepository)
   private val debuggingRepository: DebuggingRepository = DebuggingRepositoryImpl()
   private val udfpsDebugRepo = UdfpsEnrollDebugRepositoryImpl()
 
@@ -118,11 +120,13 @@
     EnrollFingerprintInteractorImpl(context.userId, fingerprintManager, Settings)
 
   fun createFingerprintsEnrolledInteractor(): EnrolledFingerprintsInteractorImpl =
-    EnrolledFingerprintsInteractorImpl(fingerprintManager, context.userId)
+    EnrolledFingerprintsInteractorImpl(fingerprintEnrollmentRepository)
 
   fun createAuthenticateInteractor(): AuthenitcateInteractor =
     AuthenticateInteractorImpl(fingerprintManager, context.userId)
 
+  fun createUserInteractor(): UserInteractor = UserInteractorImpl(userRepo)
+
   fun createRemoveFingerprintInteractor(): RemoveFingerprintInteractor =
     RemoveFingerprintsInteractorImpl(fingerprintManager, context.userId)
 
diff --git a/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintEnrollmentRepo.kt b/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintEnrollmentRepo.kt
index 22904e9..0bb4eea 100644
--- a/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintEnrollmentRepo.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintEnrollmentRepo.kt
@@ -23,14 +23,16 @@
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.channels.awaitClose
 import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.filterNotNull
-import kotlinx.coroutines.flow.flatMapLatest
 import kotlinx.coroutines.flow.flowOn
-import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.withContext
 
 /** Repository that contains information about fingerprint enrollments. */
@@ -38,20 +40,31 @@
   /** The current enrollments of the user */
   val currentEnrollments: Flow<List<FingerprintData>?>
 
+  /** Indicates the maximum fingerprints that are enrollable * */
+  val maxFingerprintsEnrollable: Flow<Int>
+
   /** Indicates if a user can enroll another fingerprint */
   val canEnrollUser: Flow<Boolean>
 
-  fun maxFingerprintsEnrollable(): Int
+  /**
+   * Indicates if we should use the default settings for maximum enrollments or the sensor props
+   * from the fingerprint sensor
+   */
+  fun setShouldUseSettingsMaxFingerprints(useSettings: Boolean)
 }
 
 class FingerprintEnrollmentRepositoryImpl(
-  fingerprintManager: FingerprintManager,
+  private val fingerprintManager: FingerprintManager,
   userRepo: UserRepo,
-  private val settingsRepository: FingerprintSettingsRepository,
+  settingsRepository: FingerprintSettingsRepository,
   backgroundDispatcher: CoroutineDispatcher,
   applicationScope: CoroutineScope,
+  sensorRepo: FingerprintSensorRepository,
 ) : FingerprintEnrollmentRepository {
 
+  private val _shouldUseSettingsMaxFingerprints = MutableStateFlow(false)
+  val shouldUseSettingsMaxFingerprints = _shouldUseSettingsMaxFingerprints.asStateFlow()
+
   private val enrollmentChangedFlow: Flow<Int?> =
     callbackFlow {
         val callback =
@@ -72,27 +85,34 @@
   override val currentEnrollments: Flow<List<FingerprintData>> =
     userRepo.currentUser
       .distinctUntilChanged()
-      .flatMapLatest { currentUser ->
-        enrollmentChangedFlow.map { enrollmentChanged ->
-          if (enrollmentChanged == null || enrollmentChanged == currentUser) {
-            fingerprintManager
-              .getEnrolledFingerprints(currentUser)
-              ?.map { (FingerprintData(it.name.toString(), it.biometricId, it.deviceId)) }
-              ?.toList()
-          } else {
-            null
-          }
-        }
-      }
+      .combine(enrollmentChangedFlow) { currentUser, _ -> getFingerprintsForUser(currentUser) }
       .filterNotNull()
       .flowOn(backgroundDispatcher)
 
-  override val canEnrollUser: Flow<Boolean> =
-    currentEnrollments.map {
-      it?.size?.let { it < settingsRepository.maxEnrollableFingerprints() } ?: false
+  override val maxFingerprintsEnrollable: Flow<Int> =
+    shouldUseSettingsMaxFingerprints.combine(sensorRepo.fingerprintSensor) {
+      shouldUseSettings,
+      sensor ->
+      if (shouldUseSettings) {
+        settingsRepository.maxEnrollableFingerprints()
+      } else {
+        sensor.maxEnrollmentsPerUser
+      }
     }
 
-  override fun maxFingerprintsEnrollable(): Int {
-    return settingsRepository.maxEnrollableFingerprints()
+  override val canEnrollUser: Flow<Boolean> =
+    currentEnrollments.combine(maxFingerprintsEnrollable) { enrollments, maxFingerprints ->
+      enrollments.size < maxFingerprints
+    }
+
+  override fun setShouldUseSettingsMaxFingerprints(useSettings: Boolean) {
+    _shouldUseSettingsMaxFingerprints.update { useSettings }
+  }
+
+  private fun getFingerprintsForUser(userId: Int): List<FingerprintData>? {
+    return fingerprintManager
+      .getEnrolledFingerprints(userId)
+      ?.map { (FingerprintData(it.name.toString(), it.biometricId, it.deviceId)) }
+      ?.toList()
   }
 }
diff --git a/src/com/android/settings/biometrics/fingerprint2/data/repository/UserRepo.kt b/src/com/android/settings/biometrics/fingerprint2/data/repository/UserRepo.kt
index 720e778..9126043 100644
--- a/src/com/android/settings/biometrics/fingerprint2/data/repository/UserRepo.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/data/repository/UserRepo.kt
@@ -17,7 +17,10 @@
 package com.android.settings.biometrics.fingerprint2.data.repository
 
 import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.update
 
 /**
  * A repository responsible for indicating the current user.
@@ -27,8 +30,18 @@
      * This flow indicates the current user.
      */
     val currentUser: Flow<Int>
+
+    /**
+     * Updates the current user.
+     */
+    fun updateUser(user: Int)
 }
 
-class UserRepoImpl(val currUser: Int): UserRepo {
-    override val currentUser: Flow<Int> = flowOf(currUser)
+class UserRepoImpl(currUser: Int): UserRepo {
+    private val _currentUser = MutableStateFlow(currUser)
+    override val currentUser = _currentUser.asStateFlow()
+
+    override fun updateUser(user: Int) {
+        _currentUser.update { user }
+    }
 }
diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/CanEnrollFingerprintsInteractorImpl.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/CanEnrollFingerprintsInteractorImpl.kt
index caeea4e..cfdfbe2 100644
--- a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/CanEnrollFingerprintsInteractorImpl.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/CanEnrollFingerprintsInteractorImpl.kt
@@ -21,11 +21,14 @@
 import kotlinx.coroutines.flow.Flow
 
 class CanEnrollFingerprintsInteractorImpl(
-  val fingerprintEnrollmentRepository: FingerprintEnrollmentRepository
+  private val fingerprintEnrollmentRepository: FingerprintEnrollmentRepository
 ) : CanEnrollFingerprintsInteractor {
   override val canEnrollFingerprints: Flow<Boolean> = fingerprintEnrollmentRepository.canEnrollUser
   /** Indicates the maximum fingerprints enrollable for a given user */
-  override fun maxFingerprintsEnrollable(): Int {
-    return fingerprintEnrollmentRepository.maxFingerprintsEnrollable()
+  override val maxFingerprintsEnrollable: Flow<Int> =
+    fingerprintEnrollmentRepository.maxFingerprintsEnrollable
+
+  override fun setShouldUseSettingsMaxFingerprints(useSettings: Boolean) {
+    fingerprintEnrollmentRepository.setShouldUseSettingsMaxFingerprints(useSettings)
   }
 }
diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/EnrolledFingerprintsInteractorImpl.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/EnrolledFingerprintsInteractorImpl.kt
index 83b532e..f8bcaf7 100644
--- a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/EnrolledFingerprintsInteractorImpl.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/EnrolledFingerprintsInteractorImpl.kt
@@ -16,22 +16,14 @@
 
 package com.android.settings.biometrics.fingerprint2.domain.interactor
 
-import android.hardware.fingerprint.FingerprintManager
+import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintEnrollmentRepository
 import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.EnrolledFingerprintsInteractor
 import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintData
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.flow
 
 class EnrolledFingerprintsInteractorImpl(
-  private val fingerprintManager: FingerprintManager,
-  userId: Int,
+  private val fingerprintEnrollmentRepository: FingerprintEnrollmentRepository
 ) : EnrolledFingerprintsInteractor {
-  override val enrolledFingerprints: Flow<List<FingerprintData>?> = flow {
-    emit(
-      fingerprintManager
-        .getEnrolledFingerprints(userId)
-        ?.map { (FingerprintData(it.name.toString(), it.biometricId, it.deviceId)) }
-        ?.toList()
-    )
-  }
+  override val enrolledFingerprints: Flow<List<FingerprintData>?> =
+    fingerprintEnrollmentRepository.currentEnrollments
 }
diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/UserInteractorImpl.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/UserInteractorImpl.kt
new file mode 100644
index 0000000..506006e
--- /dev/null
+++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/UserInteractorImpl.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.biometrics.fingerprint2.domain.interactor
+
+import com.android.settings.biometrics.fingerprint2.data.repository.UserRepo
+import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.UserInteractor
+import kotlinx.coroutines.flow.Flow
+
+class UserInteractorImpl(private val userRepo: UserRepo) : UserInteractor {
+  override val currentUser: Flow<Int> = userRepo.currentUser
+
+  override fun updateUser(user: Int) = userRepo.updateUser(user)
+}
diff --git a/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/CanEnrollFingerprintsInteractor.kt b/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/CanEnrollFingerprintsInteractor.kt
index 11a9258..a5277a5 100644
--- a/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/CanEnrollFingerprintsInteractor.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/CanEnrollFingerprintsInteractor.kt
@@ -23,5 +23,17 @@
   /** Returns true if a user can enroll a fingerprint false otherwise. */
   val canEnrollFingerprints: Flow<Boolean>
   /** Indicates the maximum fingerprints enrollable for a given user */
-  fun maxFingerprintsEnrollable(): Int
+  val maxFingerprintsEnrollable: Flow<Int>
+
+  /**
+   * Indicates if we should use the default settings for maximum enrollments or the sensor props
+   * from the fingerprint sensor. This can be useful if you are supporting HIDL & AIDL enrollment
+   * types from one code base. Prior to AIDL there was no way to determine how many
+   * fingerprints were enrollable, Settings relied on
+   * com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser.
+   *
+   * Typically Fingerprints with AIDL HAL's should not use this
+   * (setShouldUseSettingsMaxFingerprints(false))
+   */
+  fun setShouldUseSettingsMaxFingerprints(useSettings: Boolean)
 }
diff --git a/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/UserInteractor.kt b/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/UserInteractor.kt
new file mode 100644
index 0000000..17b147a
--- /dev/null
+++ b/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/UserInteractor.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.biometrics.fingerprint2.lib.domain.interactor
+
+import kotlinx.coroutines.flow.Flow
+
+interface UserInteractor {
+    /**
+     * This flow indicates the current user.
+     */
+    val currentUser: Flow<Int>
+
+    /**
+     * Updates the current user.
+     */
+    fun updateUser(user: Int)
+}
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt
index c306c78..7aad16d 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt
@@ -43,7 +43,6 @@
 import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.sample
-import kotlinx.coroutines.flow.transform
 import kotlinx.coroutines.flow.transformLatest
 import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
@@ -72,10 +71,12 @@
 
   /** Represents the stream of the information of "Add Fingerprint" preference. */
   val addFingerprintPrefInfo: Flow<Pair<Boolean, Int>> =
-    _enrolledFingerprints.filterOnlyWhenSettingsIsShown().combine(
-      canEnrollFingerprintsInteractor.canEnrollFingerprints
-    ) { _, canEnrollFingerprints ->
-      Pair(canEnrollFingerprints, canEnrollFingerprintsInteractor.maxFingerprintsEnrollable())
+    combine(
+      _enrolledFingerprints.filterOnlyWhenSettingsIsShown(),
+      canEnrollFingerprintsInteractor.canEnrollFingerprints,
+      canEnrollFingerprintsInteractor.maxFingerprintsEnrollable,
+    ) { _, canEnrollFingerprints, maxFingerprints ->
+      Pair(canEnrollFingerprints, maxFingerprints)
     }
 
   /** Represents the stream of visibility of sfps preference. */
diff --git a/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt b/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt
index f61a3d3..32ca2cd 100644
--- a/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt
+++ b/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt
@@ -38,8 +38,12 @@
 import com.android.systemui.biometrics.shared.model.FingerprintSensorType
 import com.android.systemui.biometrics.shared.model.toFingerprintSensor
 import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.flow
 import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.transform
+import kotlinx.coroutines.flow.update
 
 /** Fake to be used by other classes to easily fake the FingerprintManager implementation. */
 class FakeFingerprintManagerInteractor :
@@ -52,7 +56,7 @@
   RenameFingerprintInteractor,
   SensorInteractor {
 
-  var enrollableFingerprints: Int = 5
+  private val enrollableFingerprints = MutableStateFlow(5)
   var enrolledFingerprintsInternal: MutableList<FingerprintData> = mutableListOf()
   var challengeToGenerate: Pair<Long, ByteArray> = Pair(-1L, byteArrayOf())
   var authenticateAttempt = FingerprintAuthAttemptModel.Success(1)
@@ -82,13 +86,13 @@
   override val enrolledFingerprints: Flow<List<FingerprintData>> = flow {
     emit(enrolledFingerprintsInternal)
   }
-  override val canEnrollFingerprints: Flow<Boolean> = flow {
-    emit(enrolledFingerprintsInternal.size < enrollableFingerprints)
+  override val canEnrollFingerprints: Flow<Boolean> = enrollableFingerprints.transform {
+     emit(enrolledFingerprintsInternal.size < it)
   }
 
-  override fun maxFingerprintsEnrollable(): Int {
-    return enrollableFingerprints
-  }
+  override val maxFingerprintsEnrollable: Flow<Int> = enrollableFingerprints.asStateFlow()
+
+  override fun setShouldUseSettingsMaxFingerprints(useSettings: Boolean) {}
 
   override val sensorPropertiesInternal: Flow<FingerprintSensor?> = flow { emit(sensorProp) }
   override val hasSideFps: Flow<Boolean> =
@@ -110,4 +114,7 @@
     }
   }
 
+  fun setMaxEnrollableFingerprints(fingerprints: Int) {
+    enrollableFingerprints.update { fingerprints }
+  }
 }
diff --git a/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt b/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt
index 691b611..2623206 100644
--- a/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt
+++ b/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt
@@ -30,6 +30,7 @@
 import android.os.CancellationSignal
 import android.os.Handler
 import com.android.settings.biometrics.GatekeeperPasswordProvider
+import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintEnrollmentRepository
 import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintEnrollmentRepositoryImpl
 import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintSensorRepository
 import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintSettingsRepositoryImpl
@@ -61,7 +62,7 @@
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.flowOf
-import kotlinx.coroutines.flow.last
+import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.test.StandardTestDispatcher
 import kotlinx.coroutines.test.TestScope
@@ -106,9 +107,14 @@
   private val flow: FingerprintFlow = Default
   private val maxFingerprints = 5
   private val currUser = MutableStateFlow(0)
+  private lateinit var fingerprintEnrollRepo: FingerprintEnrollmentRepository
   private val userRepo =
     object : UserRepo {
       override val currentUser: Flow<Int> = currUser
+
+      override fun updateUser(user: Int) {
+        currUser.update { user }
+      }
     }
 
   @Before
@@ -133,17 +139,18 @@
       }
 
     val settingsRepository = FingerprintSettingsRepositoryImpl(maxFingerprints)
-    val fingerprintEnrollmentRepository =
+    fingerprintEnrollRepo =
       FingerprintEnrollmentRepositoryImpl(
         fingerprintManager,
         userRepo,
         settingsRepository,
         backgroundDispatcher,
         backgroundScope,
+        fingerprintSensorRepository,
       )
 
     enrolledFingerprintsInteractorUnderTest =
-      EnrolledFingerprintsInteractorImpl(fingerprintManager, userId)
+      EnrolledFingerprintsInteractorImpl(fingerprintEnrollRepo)
     generateChallengeInteractorUnderTest =
       GenerateChallengeInteractorImpl(fingerprintManager, userId, gateKeeperPasswordProvider)
     removeFingerprintsInteractorUnderTest =
@@ -153,7 +160,7 @@
     authenticateInteractorImplUnderTest = AuthenticateInteractorImpl(fingerprintManager, userId)
 
     canEnrollFingerprintsInteractorUnderTest =
-      CanEnrollFingerprintsInteractorImpl(fingerprintEnrollmentRepository)
+      CanEnrollFingerprintsInteractorImpl(fingerprintEnrollRepo)
 
     enrollInteractorUnderTest = EnrollFingerprintInteractorImpl(userId, fingerprintManager, flow)
   }
@@ -163,9 +170,16 @@
     testScope.runTest {
       whenever(fingerprintManager.getEnrolledFingerprints(anyInt())).thenReturn(emptyList())
 
-      val emptyFingerprintList: List<Fingerprint> = emptyList()
-      assertThat(enrolledFingerprintsInteractorUnderTest.enrolledFingerprints.last())
-        .isEqualTo(emptyFingerprintList)
+      var list: List<FingerprintData>? = null
+      val job =
+        testScope.launch {
+          enrolledFingerprintsInteractorUnderTest.enrolledFingerprints.collect { list = it }
+        }
+
+      runCurrent()
+      job.cancelAndJoin()
+
+      assertThat(list!!.isEmpty())
     }
 
   @Test
@@ -174,10 +188,19 @@
       val expected = Fingerprint("Finger 1,", 2, 3L)
       val fingerprintList: List<Fingerprint> = listOf(expected)
       whenever(fingerprintManager.getEnrolledFingerprints(anyInt())).thenReturn(fingerprintList)
+      // This causes the enrolled fingerprints to be updated
 
-      val list = enrolledFingerprintsInteractorUnderTest.enrolledFingerprints.last()
+      var list: List<FingerprintData>? = null
+      val job =
+        testScope.launch {
+          enrolledFingerprintsInteractorUnderTest.enrolledFingerprints.collect { list = it }
+        }
+
+      runCurrent()
+      job.cancelAndJoin()
+
       assertThat(list!!.size).isEqualTo(fingerprintList.size)
-      val actual = list[0]
+      val actual = list!![0]
       assertThat(actual.name).isEqualTo(expected.name)
       assertThat(actual.fingerId).isEqualTo(expected.biometricId)
       assertThat(actual.deviceId).isEqualTo(expected.deviceId)
@@ -220,11 +243,7 @@
       whenever(fingerprintManager.getEnrolledFingerprints(anyInt())).thenReturn(fingerprintList)
 
       var result: Boolean? = null
-      val job =
-        testScope.launch {
-          canEnrollFingerprintsInteractorUnderTest.canEnrollFingerprints.collect { result = it }
-        }
-
+      val job = testScope.launch { fingerprintEnrollRepo.canEnrollUser.collect { result = it } }
       runCurrent()
       job.cancelAndJoin()
 
diff --git a/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt b/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt
index f59d1fc..a9ab589 100644
--- a/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt
+++ b/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt
@@ -112,7 +112,7 @@
           .toFingerprintSensor()
 
       fakeFingerprintManagerInteractor.enrolledFingerprintsInternal = mutableListOf()
-      fakeFingerprintManagerInteractor.enrollableFingerprints = 5
+      fakeFingerprintManagerInteractor.setMaxEnrollableFingerprints(5)
 
       var canEnrollFingerprints: Boolean = false
       val job = launch {
