diff options
2 files changed, 30 insertions, 2 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt index 4d027088ca1a..5249bbe2a861 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt @@ -26,7 +26,10 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.airbnb.lottie.LottieAnimationView import com.android.systemui.SysuiTestCase +import com.android.systemui.biometrics.data.repository.biometricStatusRepository import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository +import com.android.systemui.biometrics.shared.model.AuthenticationReason +import com.android.systemui.biometrics.shared.model.AuthenticationReason.SettingsOperations import com.android.systemui.biometrics.shared.model.DisplayRotation import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.android.systemui.biometrics.shared.model.SensorStrength @@ -50,7 +53,6 @@ import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.any import org.mockito.Mockito.inOrder -import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.Mockito.`when` @@ -67,6 +69,7 @@ class SideFpsOverlayViewBinderTest : SysuiTestCase() { @JvmField @Rule var mockitoRule: MockitoRule = MockitoJUnit.rule() @Mock private lateinit var layoutInflater: LayoutInflater @Mock private lateinit var sideFpsView: View + @Mock private lateinit var lottieAnimationView: LottieAnimationView @Captor private lateinit var viewCaptor: ArgumentCaptor<View> @Before @@ -76,7 +79,7 @@ class SideFpsOverlayViewBinderTest : SysuiTestCase() { context.addMockSystemService(WindowManager::class.java, kosmos.windowManager) `when`(layoutInflater.inflate(R.layout.sidefps_view, null, false)).thenReturn(sideFpsView) `when`(sideFpsView.requireViewById<LottieAnimationView>(eq(R.id.sidefps_animation))) - .thenReturn(mock(LottieAnimationView::class.java)) + .thenReturn(lottieAnimationView) } @Test @@ -184,6 +187,20 @@ class SideFpsOverlayViewBinderTest : SysuiTestCase() { } } + @Test + fun verifyToggleAnimation_onSideFpsIndicatorViewClickedWhileEnrolling() { + kosmos.testScope.runTest { + kosmos.biometricStatusRepository.setFingerprintAuthenticationReason( + AuthenticationReason.SettingsAuthentication(SettingsOperations.ENROLL_ENROLLING) + ) + setupTestConfiguration(isInRearDisplayMode = false) + val clickListenerCaptor = ArgumentCaptor.forClass(View.OnClickListener::class.java) + verify(sideFpsView).setOnClickListener(clickListenerCaptor.capture()) + clickListenerCaptor.value.onClick(sideFpsView) + verify(lottieAnimationView).toggleAnimation() + } + } + private suspend fun TestScope.setupTestConfiguration(isInRearDisplayMode: Boolean) { kosmos.fingerprintPropertyRepository.setProperties( sensorId = 1, diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt index bbf9a19012a4..30b98a658821 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt @@ -137,6 +137,9 @@ constructor( ) bind(overlayView!!, overlayViewModel, windowManager.get()) overlayView!!.visibility = View.INVISIBLE + overlayView!!.setOnClickListener { v -> + v.requireViewById<LottieAnimationView>(R.id.sidefps_animation).toggleAnimation() + } Log.d(TAG, "show(): adding overlayView $overlayView") windowManager.get().addView(overlayView, overlayViewModel.defaultOverlayViewParams) } @@ -234,3 +237,11 @@ private fun LottieAnimationView.addOverlayDynamicColor(colorCallbacks: List<Lott resumeAnimation() } } + +fun LottieAnimationView.toggleAnimation() { + if (isAnimating) { + pauseAnimation() + } else { + resumeAnimation() + } +} |