summaryrefslogtreecommitdiff
path: root/packages/CredentialManager/src
diff options
context:
space:
mode:
author Arpan <akaphle@google.com> 2024-05-09 22:28:32 +0000
committer Arpan <akaphle@google.com> 2024-05-14 00:01:40 +0000
commitd44799fc654f2969fb70d99a58e0bf1fc3f502a2 (patch)
tree2849dedee9fb21dbeeba14308d5d6585861651b2 /packages/CredentialManager/src
parent812805e8e193d6ad01c7b1996b0da0025f75a3b3 (diff)
Provider Activity Interruption Fix
This fixes an issue where the provider activity, for whatever reason, may interrupt the BiometricFlow. Usually, as this exploraiton identified, this leads to a default cancellation in the finish() term of activities. This requires properly capturing the state change in the framework, which is what is done here. Bug: 335094602 Test: Build Test Change-Id: I23c7049702445c0ef7340339dd4b693d157de250
Diffstat (limited to 'packages/CredentialManager/src')
-rw-r--r--packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorViewModel.kt18
1 files changed, 12 insertions, 6 deletions
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorViewModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorViewModel.kt
index d4a81109e53c..7bc25ed81089 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorViewModel.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorViewModel.kt
@@ -174,11 +174,8 @@ class CredentialSelectorViewModel(
onUserCancel()
} else {
Log.d(Constants.LOG_TAG, "The provider activity was cancelled," +
- " re-displaying our UI.")
- uiState = uiState.copy(
- selectedEntry = null,
- providerActivityState = ProviderActivityState.NOT_APPLICABLE,
- )
+ " re-displaying our UI.")
+ resetUiStateForReLaunch()
}
} else {
if (entry != null) {
@@ -202,6 +199,15 @@ class CredentialSelectorViewModel(
}
}
+ // Resets UI states for any situation that re-launches the UI
+ private fun resetUiStateForReLaunch() {
+ onBiometricPromptStateChange(BiometricPromptState.INACTIVE)
+ uiState = uiState.copy(
+ selectedEntry = null,
+ providerActivityState = ProviderActivityState.NOT_APPLICABLE,
+ )
+ }
+
fun onLastLockedAuthEntryNotFoundError() {
Log.d(Constants.LOG_TAG, "Unable to find the last unlocked entry")
onInternalError()
@@ -502,4 +508,4 @@ class CredentialSelectorViewModel(
fun logUiEvent(uiEventEnum: UiEventEnum) {
this.uiMetrics.log(uiEventEnum, credManRepo.requestInfo?.packageName)
}
-} \ No newline at end of file
+}