diff options
| author | 2024-03-13 19:15:17 +0000 | |
|---|---|---|
| committer | 2024-03-13 19:15:17 +0000 | |
| commit | f5ee63e962dcad5527c96392b88c44abc56595f6 (patch) | |
| tree | cbac8b14f0c5b179ef7191e07cbf0382eae13941 | |
| parent | 9f0a20ced9200493ea6b6ecdb68acaa6873a3c37 (diff) | |
| parent | ec706343cd79ecbd35d5f558014665f7a9f1ea3f (diff) | |
Merge "Fix implict bp broken ui." into 24D1-dev
3 files changed, 27 insertions, 20 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt index 3469cfa210ba..e457601a6d52 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt @@ -86,7 +86,12 @@ object PromptIconViewBinder { launch { var width = 0 var height = 0 - viewModel.activeAuthType.collect { activeAuthType -> + combine(promptViewModel.size, viewModel.activeAuthType, ::Pair).collect { + (_, activeAuthType) -> + // Every time after bp shows, [isIconViewLoaded] is set to false in + // [BiometricViewSizeBinder]. Then when biometric prompt view is redrew + // (when size or activeAuthType changes), we need to update + // [isIconViewLoaded] here to keep it correct. when (activeAuthType) { AuthType.Fingerprint, AuthType.Coex -> { diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt index 61aeffe03b5d..36c7b44d2732 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt @@ -217,18 +217,12 @@ constructor( */ val faceMode: Flow<Boolean> = combine(modalities, isConfirmationRequired, fingerprintStartMode) { - modalities: BiometricModalities, - isConfirmationRequired: Boolean, - fingerprintStartMode: FingerprintStartMode -> - if (modalities.hasFaceAndFingerprint) { - if (isConfirmationRequired) { - false - } else { - !fingerprintStartMode.isStarted - } - } else { - false - } + modalities, + isConfirmationRequired, + fingerprintStartMode -> + modalities.hasFaceAndFingerprint && + !isConfirmationRequired && + fingerprintStartMode == FingerprintStartMode.Pending } .distinctUntilChanged() @@ -248,14 +242,11 @@ constructor( * asset to be loaded before determining the prompt size. */ val isIconViewLoaded: Flow<Boolean> = - combine(credentialKind, _isIconViewLoaded.asStateFlow()) { credentialKind, isIconViewLoaded - -> - if (credentialKind is PromptKind.Biometric) { - isIconViewLoaded - } else { - true + combine(modalities, _isIconViewLoaded.asStateFlow()) { modalities, isIconViewLoaded -> + val noIcon = modalities.isEmpty + noIcon || isIconViewLoaded } - } + .distinctUntilChanged() // Sets whether the prompt's iconView animation has been loaded in the view yet. fun setIsIconViewLoaded(iconViewLoaded: Boolean) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt index 140849b8e257..2f3bab4458e0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt @@ -1328,6 +1328,17 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa assertThat(logoDescription).isEqualTo(logoDescriptionFromApp) } + @Test + fun iconViewLoaded() = runGenericTest { + val isIconViewLoaded by collectLastValue(viewModel.isIconViewLoaded) + // TODO(b/328677869): Add test for noIcon logic. + assertThat(isIconViewLoaded).isFalse() + + viewModel.setIsIconViewLoaded(true) + + assertThat(isIconViewLoaded).isTrue() + } + /** Asserts that the selected buttons are visible now. */ private suspend fun TestScope.assertButtonsVisible( tryAgain: Boolean = false, |