diff options
| author | 2024-05-06 22:23:22 +0000 | |
|---|---|---|
| committer | 2024-05-06 22:23:22 +0000 | |
| commit | 574b75e23f5203a61bfcddfc91a8fc1c9aba0a64 (patch) | |
| tree | 8e0eec352a7f0d02edfe7ea00b1b6155afb6dbeb | |
| parent | 83dae4a2fe68fd533f31c6fcecd271c2e77df815 (diff) | |
| parent | 2070b612252d71b4bed3016d5de0f618b15c96d5 (diff) | |
Merge "Add new device entry icon state "None"" into main
4 files changed, 62 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt index b0d45edaf8c2..db47bfbd4cd4 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt @@ -132,8 +132,12 @@ object DeviceEntryIconViewBinder { view.getIconState(viewModel.type, viewModel.useAodVariant), /* merge */ false ) - fgIconView.contentDescription = - fgIconView.resources.getString(viewModel.type.contentDescriptionResId) + if (viewModel.type.contentDescriptionResId != -1) { + fgIconView.contentDescription = + fgIconView.resources.getString( + viewModel.type.contentDescriptionResId + ) + } fgIconView.imageTintList = ColorStateList.valueOf(viewModel.tint) fgIconView.setPadding( viewModel.padding, diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt index 2735aed3ba4d..5713a158fde4 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt @@ -214,7 +214,7 @@ constructor( R.id.unlocked, R.id.locked_aod, context.getDrawable(R.drawable.unlocked_to_aod_lock) as AnimatedVectorDrawable, - /* reversible */ true, + /* reversible */ false, ) } @@ -252,6 +252,7 @@ constructor( IconType.LOCK -> lockIconState[0] = android.R.attr.state_first IconType.UNLOCK -> lockIconState[0] = android.R.attr.state_last IconType.FINGERPRINT -> lockIconState[0] = android.R.attr.state_middle + IconType.NONE -> return StateSet.NOTHING } if (aod) { lockIconState[1] = android.R.attr.state_single @@ -265,6 +266,7 @@ constructor( LOCK(R.string.accessibility_lock_icon), UNLOCK(R.string.accessibility_unlock_button), FINGERPRINT(R.string.accessibility_fingerprint_label), + NONE(-1), } enum class AccessibilityHintType { 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 e26b75fa9d5f..40be73e5e9dc 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 @@ -195,7 +195,14 @@ constructor( isUnlocked, ) { isListeningForUdfps, isUnlocked -> if (isListeningForUdfps) { - DeviceEntryIconView.IconType.FINGERPRINT + if (isUnlocked) { + // Don't show any UI until isUnlocked=false. This covers the case + // when the "Power button instantly locks > 0s" or the device doesn't lock + // immediately after a screen time. + DeviceEntryIconView.IconType.NONE + } else { + DeviceEntryIconView.IconType.FINGERPRINT + } } else if (isUnlocked) { DeviceEntryIconView.IconType.UNLOCK } else { @@ -211,7 +218,8 @@ constructor( when (deviceEntryStatus) { DeviceEntryIconView.IconType.LOCK -> isUdfps DeviceEntryIconView.IconType.UNLOCK -> true - DeviceEntryIconView.IconType.FINGERPRINT -> false + DeviceEntryIconView.IconType.FINGERPRINT, + DeviceEntryIconView.IconType.NONE -> false } } @@ -239,8 +247,8 @@ constructor( DeviceEntryIconView.IconType.LOCK -> DeviceEntryIconView.AccessibilityHintType.AUTHENTICATE DeviceEntryIconView.IconType.UNLOCK -> DeviceEntryIconView.AccessibilityHintType.ENTER - DeviceEntryIconView.IconType.FINGERPRINT -> - DeviceEntryIconView.AccessibilityHintType.NONE + DeviceEntryIconView.IconType.FINGERPRINT, + DeviceEntryIconView.IconType.NONE -> DeviceEntryIconView.AccessibilityHintType.NONE } } 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 4bb0d4781376..0bca36775e9f 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 @@ -26,7 +26,7 @@ import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintA 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.view.DeviceEntryIconView import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryIconViewModel.Companion.UNLOCKED_DELAY_MS import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos @@ -110,6 +110,46 @@ class DeviceEntryIconViewModelTest : SysuiTestCase() { assertThat(isVisible).isTrue() } + @Test + fun iconType_fingerprint() = + testScope.runTest { + val iconType by collectLastValue(underTest.iconType) + keyguardRepository.setKeyguardDismissible(false) + fingerprintPropertyRepository.supportsUdfps() + fingerprintAuthRepository.setIsRunning(true) + assertThat(iconType).isEqualTo(DeviceEntryIconView.IconType.FINGERPRINT) + } + + @Test + fun iconType_locked() = + testScope.runTest { + val iconType by collectLastValue(underTest.iconType) + keyguardRepository.setKeyguardDismissible(false) + fingerprintAuthRepository.setIsRunning(false) + assertThat(iconType).isEqualTo(DeviceEntryIconView.IconType.LOCK) + } + + @Test + fun iconType_unlocked() = + testScope.runTest { + val iconType by collectLastValue(underTest.iconType) + keyguardRepository.setKeyguardDismissible(true) + advanceTimeBy(UNLOCKED_DELAY_MS * 2) // wait for unlocked delay + fingerprintAuthRepository.setIsRunning(false) + assertThat(iconType).isEqualTo(DeviceEntryIconView.IconType.UNLOCK) + } + + @Test + fun iconType_none() = + testScope.runTest { + val iconType by collectLastValue(underTest.iconType) + keyguardRepository.setKeyguardDismissible(true) + advanceTimeBy(UNLOCKED_DELAY_MS * 2) // wait for unlocked delay + fingerprintPropertyRepository.supportsUdfps() + fingerprintAuthRepository.setIsRunning(true) + assertThat(iconType).isEqualTo(DeviceEntryIconView.IconType.NONE) + } + private fun deviceEntryIconTransitionAlpha(alpha: Float) { deviceEntryIconTransition.setDeviceEntryParentViewAlpha(alpha) } |