Loading packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt +19 −2 Original line number Original line Diff line number Diff line Loading @@ -26,7 +26,10 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.airbnb.lottie.LottieAnimationView import com.airbnb.lottie.LottieAnimationView import com.android.systemui.SysuiTestCase 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.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.DisplayRotation import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.android.systemui.biometrics.shared.model.SensorStrength import com.android.systemui.biometrics.shared.model.SensorStrength Loading @@ -50,7 +53,6 @@ import org.mockito.Captor import org.mockito.Mock import org.mockito.Mock import org.mockito.Mockito.any import org.mockito.Mockito.any import org.mockito.Mockito.inOrder import org.mockito.Mockito.inOrder import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.Mockito.`when` Loading @@ -67,6 +69,7 @@ class SideFpsOverlayViewBinderTest : SysuiTestCase() { @JvmField @Rule var mockitoRule: MockitoRule = MockitoJUnit.rule() @JvmField @Rule var mockitoRule: MockitoRule = MockitoJUnit.rule() @Mock private lateinit var layoutInflater: LayoutInflater @Mock private lateinit var layoutInflater: LayoutInflater @Mock private lateinit var sideFpsView: View @Mock private lateinit var sideFpsView: View @Mock private lateinit var lottieAnimationView: LottieAnimationView @Captor private lateinit var viewCaptor: ArgumentCaptor<View> @Captor private lateinit var viewCaptor: ArgumentCaptor<View> @Before @Before Loading @@ -76,7 +79,7 @@ class SideFpsOverlayViewBinderTest : SysuiTestCase() { context.addMockSystemService(WindowManager::class.java, kosmos.windowManager) context.addMockSystemService(WindowManager::class.java, kosmos.windowManager) `when`(layoutInflater.inflate(R.layout.sidefps_view, null, false)).thenReturn(sideFpsView) `when`(layoutInflater.inflate(R.layout.sidefps_view, null, false)).thenReturn(sideFpsView) `when`(sideFpsView.requireViewById<LottieAnimationView>(eq(R.id.sidefps_animation))) `when`(sideFpsView.requireViewById<LottieAnimationView>(eq(R.id.sidefps_animation))) .thenReturn(mock(LottieAnimationView::class.java)) .thenReturn(lottieAnimationView) } } @Test @Test Loading Loading @@ -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) { private suspend fun TestScope.setupTestConfiguration(isInRearDisplayMode: Boolean) { kosmos.fingerprintPropertyRepository.setProperties( kosmos.fingerprintPropertyRepository.setProperties( sensorId = 1, sensorId = 1, Loading packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt +11 −0 Original line number Original line Diff line number Diff line Loading @@ -137,6 +137,9 @@ constructor( ) ) bind(overlayView!!, overlayViewModel, windowManager.get()) bind(overlayView!!, overlayViewModel, windowManager.get()) overlayView!!.visibility = View.INVISIBLE overlayView!!.visibility = View.INVISIBLE overlayView!!.setOnClickListener { v -> v.requireViewById<LottieAnimationView>(R.id.sidefps_animation).toggleAnimation() } Log.d(TAG, "show(): adding overlayView $overlayView") Log.d(TAG, "show(): adding overlayView $overlayView") windowManager.get().addView(overlayView, overlayViewModel.defaultOverlayViewParams) windowManager.get().addView(overlayView, overlayViewModel.defaultOverlayViewParams) } } Loading Loading @@ -234,3 +237,11 @@ private fun LottieAnimationView.addOverlayDynamicColor(colorCallbacks: List<Lott resumeAnimation() resumeAnimation() } } } } fun LottieAnimationView.toggleAnimation() { if (isAnimating) { pauseAnimation() } else { resumeAnimation() } } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt +19 −2 Original line number Original line Diff line number Diff line Loading @@ -26,7 +26,10 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.airbnb.lottie.LottieAnimationView import com.airbnb.lottie.LottieAnimationView import com.android.systemui.SysuiTestCase 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.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.DisplayRotation import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.android.systemui.biometrics.shared.model.SensorStrength import com.android.systemui.biometrics.shared.model.SensorStrength Loading @@ -50,7 +53,6 @@ import org.mockito.Captor import org.mockito.Mock import org.mockito.Mock import org.mockito.Mockito.any import org.mockito.Mockito.any import org.mockito.Mockito.inOrder import org.mockito.Mockito.inOrder import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.Mockito.`when` Loading @@ -67,6 +69,7 @@ class SideFpsOverlayViewBinderTest : SysuiTestCase() { @JvmField @Rule var mockitoRule: MockitoRule = MockitoJUnit.rule() @JvmField @Rule var mockitoRule: MockitoRule = MockitoJUnit.rule() @Mock private lateinit var layoutInflater: LayoutInflater @Mock private lateinit var layoutInflater: LayoutInflater @Mock private lateinit var sideFpsView: View @Mock private lateinit var sideFpsView: View @Mock private lateinit var lottieAnimationView: LottieAnimationView @Captor private lateinit var viewCaptor: ArgumentCaptor<View> @Captor private lateinit var viewCaptor: ArgumentCaptor<View> @Before @Before Loading @@ -76,7 +79,7 @@ class SideFpsOverlayViewBinderTest : SysuiTestCase() { context.addMockSystemService(WindowManager::class.java, kosmos.windowManager) context.addMockSystemService(WindowManager::class.java, kosmos.windowManager) `when`(layoutInflater.inflate(R.layout.sidefps_view, null, false)).thenReturn(sideFpsView) `when`(layoutInflater.inflate(R.layout.sidefps_view, null, false)).thenReturn(sideFpsView) `when`(sideFpsView.requireViewById<LottieAnimationView>(eq(R.id.sidefps_animation))) `when`(sideFpsView.requireViewById<LottieAnimationView>(eq(R.id.sidefps_animation))) .thenReturn(mock(LottieAnimationView::class.java)) .thenReturn(lottieAnimationView) } } @Test @Test Loading Loading @@ -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) { private suspend fun TestScope.setupTestConfiguration(isInRearDisplayMode: Boolean) { kosmos.fingerprintPropertyRepository.setProperties( kosmos.fingerprintPropertyRepository.setProperties( sensorId = 1, sensorId = 1, Loading
packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt +11 −0 Original line number Original line Diff line number Diff line Loading @@ -137,6 +137,9 @@ constructor( ) ) bind(overlayView!!, overlayViewModel, windowManager.get()) bind(overlayView!!, overlayViewModel, windowManager.get()) overlayView!!.visibility = View.INVISIBLE overlayView!!.visibility = View.INVISIBLE overlayView!!.setOnClickListener { v -> v.requireViewById<LottieAnimationView>(R.id.sidefps_animation).toggleAnimation() } Log.d(TAG, "show(): adding overlayView $overlayView") Log.d(TAG, "show(): adding overlayView $overlayView") windowManager.get().addView(overlayView, overlayViewModel.defaultOverlayViewParams) windowManager.get().addView(overlayView, overlayViewModel.defaultOverlayViewParams) } } Loading Loading @@ -234,3 +237,11 @@ private fun LottieAnimationView.addOverlayDynamicColor(colorCallbacks: List<Lott resumeAnimation() resumeAnimation() } } } } fun LottieAnimationView.toggleAnimation() { if (isAnimating) { pauseAnimation() } else { resumeAnimation() } }