Merge "Update FP sensor location before showing dwellAnim" into tm-qpr-dev am: 668090c09b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19972602
Change-Id: I11fb5b9ef81a4be34c413f24cae0a9f3660571c0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthRippleController.kt b/packages/SystemUI/src/com/android/systemui/biometrics/AuthRippleController.kt
index 39291ed..4fee083 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthRippleController.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthRippleController.kt
@@ -23,7 +23,6 @@
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 @@
public override fun onViewAttached() {
authController.addCallback(authControllerCallback)
updateRippleColor()
- updateSensorLocation()
updateUdfpsDependentParams()
udfpsController?.addCallback(udfpsControllerCallback)
configurationController.addCallback(configurationChangedListener)
@@ -237,7 +235,11 @@
}
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 @@
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 @@
object : AuthController.Callback {
override fun onAllAuthenticatorsRegistered() {
updateUdfpsDependentParams()
- updateSensorLocation()
}
override fun onUdfpsLocationChanged() {
updateUdfpsDependentParams()
- updateSensorLocation()
}
}
@@ -345,13 +338,11 @@
"\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)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthRippleControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthRippleControllerTest.kt
index 44ef922..37bb0c2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthRippleControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthRippleControllerTest.kt
@@ -18,6 +18,7 @@
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 @@
@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 @@
.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 @@
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 @@
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 @@
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)
+ }
}