diff options
| author | 2024-02-29 21:50:45 +0000 | |
|---|---|---|
| committer | 2024-03-04 21:05:01 +0000 | |
| commit | bbdb9bc936ea302642d799b57210ff7a57269542 (patch) | |
| tree | a9c6ef98073e6d0f608db8b9903be71654225be2 | |
| parent | a168b9f35b940f91bf389579c4c9729ee9fc471f (diff) | |
DeviceEntryIconViewModel uses isUnlocked flow with a slight delay
To avoid transitioning to the unlocked lock icon during the
LOCKSCREEN/AOD => GONE transition.
We also update deviceEntryInteractor.isUnlocked to use
keyguardInteractor.isKeyguardDismissible since the device
entry interactor should only be used when flexiglass
is enabled.
Test: atest DeviceEntryIconViewModelTest
Test: manually authenticate with UDFPS from LS,
and see there's no flash of the unlocked icon
Fixes: 323212430
Fixes: 322512267
Flag: ACONFIG com.android.systemui.device_entry_udfps_refactor STAGING
Change-Id: Id76c422816d439ab8c24c0a13f694f1db2b91efe
2 files changed, 8 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt index 31e809356e02..bd19c8006e23 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt @@ -180,7 +180,7 @@ constructor( } private val isUnlocked: Flow<Boolean> = - deviceEntryInteractor.isUnlocked.flatMapLatest { isUnlocked -> + keyguardInteractor.isKeyguardDismissible.flatMapLatest { isUnlocked -> if (!isUnlocked) { flowOf(false) } else { @@ -197,7 +197,7 @@ constructor( val iconType: Flow<DeviceEntryIconView.IconType> = combine( deviceEntryUdfpsInteractor.isListeningForUdfps, - keyguardInteractor.isKeyguardDismissible, + isUnlocked, ) { isListeningForUdfps, isUnlocked -> if (isListeningForUdfps) { DeviceEntryIconView.IconType.FINGERPRINT diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModelTest.kt index 02bd810a43d5..4bb0d4781376 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModelTest.kt @@ -27,11 +27,14 @@ import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.keyguardRepository +import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryIconViewModel.Companion.UNLOCKED_DELAY_MS import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlin.test.Test import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.advanceTimeBy +import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.runner.RunWith @@ -71,7 +74,10 @@ class DeviceEntryIconViewModelTest : SysuiTestCase() { fun isLongPressEnabled_unlocked() = testScope.runTest { val isLongPressEnabled by collectLastValue(underTest.isLongPressEnabled) + fingerprintPropertyRepository.supportsUdfps() keyguardRepository.setKeyguardDismissible(true) + advanceTimeBy(UNLOCKED_DELAY_MS * 2) // wait for unlocked delay + runCurrent() assertThat(isLongPressEnabled).isTrue() } |