Update PromptSelectorInteractor resetPrompt

Don't reset the current view if the resetPrompt call is for an invalid
requestId.

Bug: 431279910
Test: BiometricSimpleTests
Flag: EXEMPT bugfix
Change-Id: Ia539344274a9a029936a9d071321a78ddcc18d25
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt
index b25e3ab..539f1be 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt
@@ -469,6 +469,28 @@
             verifyUnset()
         }
 
+    @Test
+    fun resetPrompt_onlyResetsViewForCurrentRequestId() =
+        testScope.runTest {
+            setUserCredentialType(isPassword = true)
+            val currentView by collectLastValue(interactor.currentView)
+            val requestId by collectLastValue(promptRepository.requestId)
+
+            setPrompt(onSwitchToCredential = true)
+            assertThat(currentView).isEqualTo(BiometricPromptView.CREDENTIAL)
+            assertThat(requestId).isEqualTo(REQUEST_ID)
+
+            interactor.resetPrompt(0L)
+
+            assertThat(currentView).isEqualTo(BiometricPromptView.CREDENTIAL)
+            assertThat(requestId).isEqualTo(REQUEST_ID)
+
+            interactor.resetPrompt(REQUEST_ID)
+
+            assertThat(currentView).isEqualTo(BiometricPromptView.BIOMETRIC)
+            verifyUnset()
+        }
+
     private fun setPrompt(
         info: PromptInfo = basicPromptInfo(),
         onSwitchToCredential: Boolean = false,
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractor.kt b/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractor.kt
index ea55e413..f3ab434 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractor.kt
@@ -405,7 +405,10 @@
     }
 
     override fun resetPrompt(requestId: Long) {
-        _currentView.value = BiometricPromptView.BIOMETRIC
+        val currentRequestId = promptRepository.requestId.value
+        if (currentRequestId != null && currentRequestId == requestId) {
+            _currentView.value = BiometricPromptView.BIOMETRIC
+        }
         promptRepository.unsetPrompt(requestId)
     }
 
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/data/repository/FakePromptRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/data/repository/FakePromptRepository.kt
index fbc6124..5ef2329 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/data/repository/FakePromptRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/data/repository/FakePromptRepository.kt
@@ -82,14 +82,16 @@
     }
 
     override fun unsetPrompt(requestId: Long) {
-        _promptInfo.value = null
-        _userId.value = null
-        _modalities.value = BiometricModalities()
-        _requestId.value = null
-        _challenge.value = null
-        _promptKind.value = PromptKind.None
-        _opPackageName.value = null
-        _isConfirmationRequired.value = false
+        if (requestId == _requestId.value) {
+            _promptInfo.value = null
+            _userId.value = null
+            _modalities.value = BiometricModalities()
+            _requestId.value = null
+            _challenge.value = null
+            _promptKind.value = PromptKind.None
+            _opPackageName.value = null
+            _isConfirmationRequired.value = false
+        }
     }
 
     fun setIsShowing(showing: Boolean) {