Merge "Update FP sensor location before showing dwellAnim" into tm-qpr-dev am: 668090c09b am: 39d8a4c0c0
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19972602 Change-Id: I78f1112aff23fddf4f515ba7fd7aa40fdce1df02 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -23,7 +23,6 @@ import android.content.Context
|
||||
import android.graphics.Point
|
||||
import android.hardware.biometrics.BiometricFingerprintConstants
|
||||
import android.hardware.biometrics.BiometricSourceType
|
||||
import android.util.Log
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import com.android.keyguard.KeyguardUpdateMonitor
|
||||
import com.android.keyguard.KeyguardUpdateMonitorCallback
|
||||
@@ -95,7 +94,6 @@ class AuthRippleController @Inject constructor(
|
||||
public override fun onViewAttached() {
|
||||
authController.addCallback(authControllerCallback)
|
||||
updateRippleColor()
|
||||
updateSensorLocation()
|
||||
updateUdfpsDependentParams()
|
||||
udfpsController?.addCallback(udfpsControllerCallback)
|
||||
configurationController.addCallback(configurationChangedListener)
|
||||
@@ -237,7 +235,11 @@ class AuthRippleController @Inject constructor(
|
||||
}
|
||||
|
||||
private fun showDwellRipple() {
|
||||
mView.startDwellRipple(statusBarStateController.isDozing)
|
||||
updateSensorLocation()
|
||||
fingerprintSensorLocation?.let {
|
||||
mView.setFingerprintSensorLocation(it, udfpsRadius)
|
||||
mView.startDwellRipple(statusBarStateController.isDozing)
|
||||
}
|
||||
}
|
||||
|
||||
private val keyguardUpdateMonitorCallback =
|
||||
@@ -291,13 +293,6 @@ class AuthRippleController @Inject constructor(
|
||||
private val udfpsControllerCallback =
|
||||
object : UdfpsController.Callback {
|
||||
override fun onFingerDown() {
|
||||
if (fingerprintSensorLocation == null) {
|
||||
Log.e("AuthRipple", "fingerprintSensorLocation=null onFingerDown. " +
|
||||
"Skip showing dwell ripple")
|
||||
return
|
||||
}
|
||||
|
||||
mView.setFingerprintSensorLocation(fingerprintSensorLocation!!, udfpsRadius)
|
||||
showDwellRipple()
|
||||
}
|
||||
|
||||
@@ -310,12 +305,10 @@ class AuthRippleController @Inject constructor(
|
||||
object : AuthController.Callback {
|
||||
override fun onAllAuthenticatorsRegistered(modality: Int) {
|
||||
updateUdfpsDependentParams()
|
||||
updateSensorLocation()
|
||||
}
|
||||
|
||||
override fun onUdfpsLocationChanged() {
|
||||
updateUdfpsDependentParams()
|
||||
updateSensorLocation()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -345,13 +338,11 @@ class AuthRippleController @Inject constructor(
|
||||
"\n\tudfpsRadius=$udfpsRadius")
|
||||
}
|
||||
"fingerprint" -> {
|
||||
updateSensorLocation()
|
||||
pw.println("fingerprint ripple sensorLocation=$fingerprintSensorLocation")
|
||||
showUnlockRipple(BiometricSourceType.FINGERPRINT)
|
||||
}
|
||||
"face" -> {
|
||||
// note: only shows when about to proceed to the home screen
|
||||
updateSensorLocation()
|
||||
pw.println("face ripple sensorLocation=$faceSensorLocation")
|
||||
showUnlockRipple(BiometricSourceType.FACE)
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.android.systemui.biometrics
|
||||
|
||||
import android.graphics.Point
|
||||
import android.hardware.biometrics.BiometricSourceType
|
||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
|
||||
import android.testing.AndroidTestingRunner
|
||||
import android.testing.TestableLooper.RunWithLooper
|
||||
import androidx.test.filters.SmallTest
|
||||
@@ -76,6 +77,7 @@ class AuthRippleControllerTest : SysuiTestCase() {
|
||||
@Mock private lateinit var udfpsController: UdfpsController
|
||||
@Mock private lateinit var statusBarStateController: StatusBarStateController
|
||||
@Mock private lateinit var lightRevealScrim: LightRevealScrim
|
||||
@Mock private lateinit var fpSensorProp: FingerprintSensorPropertiesInternal
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
@@ -86,6 +88,7 @@ class AuthRippleControllerTest : SysuiTestCase() {
|
||||
.startMocking()
|
||||
|
||||
`when`(RotationUtils.getRotation(context)).thenReturn(RotationUtils.ROTATION_NONE)
|
||||
`when`(authController.udfpsProps).thenReturn(listOf(fpSensorProp))
|
||||
`when`(udfpsControllerProvider.get()).thenReturn(udfpsController)
|
||||
|
||||
controller = AuthRippleController(
|
||||
@@ -132,7 +135,7 @@ class AuthRippleControllerTest : SysuiTestCase() {
|
||||
false /* isStrongBiometric */)
|
||||
|
||||
// THEN update sensor location and show ripple
|
||||
verify(rippleView).setFingerprintSensorLocation(fpsLocation, -1f)
|
||||
verify(rippleView).setFingerprintSensorLocation(fpsLocation, 0f)
|
||||
verify(rippleView).startUnlockedRipple(any())
|
||||
}
|
||||
|
||||
@@ -155,7 +158,7 @@ class AuthRippleControllerTest : SysuiTestCase() {
|
||||
false /* isStrongBiometric */)
|
||||
|
||||
// THEN update sensor location and show ripple
|
||||
verify(rippleView).setFingerprintSensorLocation(fpsLocation, -1f)
|
||||
verify(rippleView).setFingerprintSensorLocation(fpsLocation, 0f)
|
||||
verify(rippleView).startUnlockedRipple(any())
|
||||
}
|
||||
|
||||
@@ -342,4 +345,23 @@ class AuthRippleControllerTest : SysuiTestCase() {
|
||||
captor.value.onUiModeChanged()
|
||||
verify(rippleView).setLockScreenColor(ArgumentMatchers.anyInt())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testUdfps_onFingerDown_showDwellRipple() {
|
||||
// GIVEN view is already attached
|
||||
controller.onViewAttached()
|
||||
val captor = ArgumentCaptor.forClass(UdfpsController.Callback::class.java)
|
||||
verify(udfpsController).addCallback(captor.capture())
|
||||
|
||||
// GIVEN fp is updated to Point(5, 5)
|
||||
val fpsLocation = Point(5, 5)
|
||||
`when`(authController.fingerprintSensorLocation).thenReturn(fpsLocation)
|
||||
|
||||
// WHEN finger is down
|
||||
captor.value.onFingerDown()
|
||||
|
||||
// THEN update sensor location and show ripple
|
||||
verify(rippleView).setFingerprintSensorLocation(fpsLocation, 0f)
|
||||
verify(rippleView).startDwellRipple(false)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user