Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 310aa0ce authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Toggles indicator animation while tapping on the view" into main

parents d9434dda 4d70c7bc
Loading
Loading
Loading
Loading
+19 −2
Original line number Original line Diff line number Diff line
@@ -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
@@ -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`
@@ -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
@@ -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
@@ -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,
+11 −0
Original line number Original line Diff line number Diff line
@@ -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)
    }
    }
@@ -234,3 +237,11 @@ private fun LottieAnimationView.addOverlayDynamicColor(colorCallbacks: List<Lott
        resumeAnimation()
        resumeAnimation()
    }
    }
}
}

fun LottieAnimationView.toggleAnimation() {
    if (isAnimating) {
        pauseAnimation()
    } else {
        resumeAnimation()
    }
}