diff options
author | 2024-05-09 22:28:32 +0000 | |
---|---|---|
committer | 2024-05-14 00:01:40 +0000 | |
commit | d44799fc654f2969fb70d99a58e0bf1fc3f502a2 (patch) | |
tree | 2849dedee9fb21dbeeba14308d5d6585861651b2 /packages/CredentialManager/src | |
parent | 812805e8e193d6ad01c7b1996b0da0025f75a3b3 (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.kt | 18 |
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 +} |