Merge "Propagate finger down to KeyguardUpdateMonitor" into tm-d1-dev am: 13c3b1d699

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17903856

Change-Id: Ie040976b9a1575523b9c49f96369fab6cb45a4e4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Joshua Mccloskey
2022-04-27 17:35:03 +00:00
committed by Automerger Merge Worker
3 changed files with 36 additions and 0 deletions

View File

@@ -1512,6 +1512,20 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
handleFingerprintAuthenticated(userId, isStrongBiometric); handleFingerprintAuthenticated(userId, isStrongBiometric);
}; };
/**
* Propagates a pointer down event to keyguard.
*/
public void onUdfpsPointerDown(int sensorId) {
mFingerprintAuthenticationCallback.onUdfpsPointerDown(sensorId);
}
/**
* Propagates a pointer up event to keyguard.
*/
public void onUdfpsPointerUp(int sensorId) {
mFingerprintAuthenticationCallback.onUdfpsPointerUp(sensorId);
}
@VisibleForTesting @VisibleForTesting
final FingerprintManager.AuthenticationCallback mFingerprintAuthenticationCallback final FingerprintManager.AuthenticationCallback mFingerprintAuthenticationCallback
= new AuthenticationCallback() { = new AuthenticationCallback() {
@@ -1553,6 +1567,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
Trace.endSection(); Trace.endSection();
} }
/**
* Note, this is currently called from UdfpsController.
*/
@Override @Override
public void onUdfpsPointerDown(int sensorId) { public void onUdfpsPointerDown(int sensorId) {
Log.d(TAG, "onUdfpsPointerDown, sensorId: " + sensorId); Log.d(TAG, "onUdfpsPointerDown, sensorId: " + sensorId);
@@ -1562,6 +1579,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
} }
} }
/**
* Note, this is currently called from UdfpsController.
*/
@Override @Override
public void onUdfpsPointerUp(int sensorId) { public void onUdfpsPointerUp(int sensorId) {
Log.d(TAG, "onUdfpsPointerUp, sensorId: " + sensorId); Log.d(TAG, "onUdfpsPointerUp, sensorId: " + sensorId);

View File

@@ -796,6 +796,11 @@ public class UdfpsController implements DozeReceiver {
mOnFingerDown = true; mOnFingerDown = true;
if (mAlternateTouchProvider != null) { if (mAlternateTouchProvider != null) {
mAlternateTouchProvider.onPointerDown(requestId, x, y, minor, major); mAlternateTouchProvider.onPointerDown(requestId, x, y, minor, major);
mFgExecutor.execute(() -> {
if (mKeyguardUpdateMonitor.isFingerprintDetectionRunning()) {
mKeyguardUpdateMonitor.onUdfpsPointerDown((int) requestId);
}
});
} else { } else {
mFingerprintManager.onPointerDown(requestId, mSensorId, x, y, minor, major); mFingerprintManager.onPointerDown(requestId, mSensorId, x, y, minor, major);
} }
@@ -821,6 +826,11 @@ public class UdfpsController implements DozeReceiver {
if (mOnFingerDown) { if (mOnFingerDown) {
if (mAlternateTouchProvider != null) { if (mAlternateTouchProvider != null) {
mAlternateTouchProvider.onPointerUp(requestId); mAlternateTouchProvider.onPointerUp(requestId);
mFgExecutor.execute(() -> {
if (mKeyguardUpdateMonitor.isFingerprintDetectionRunning()) {
mKeyguardUpdateMonitor.onUdfpsPointerUp((int) requestId);
}
});
} else { } else {
mFingerprintManager.onPointerUp(requestId, mSensorId); mFingerprintManager.onPointerUp(requestId, mSensorId);
} }

View File

@@ -564,6 +564,7 @@ public class UdfpsControllerTest extends SysuiTestCase {
// Configure UdfpsView to accept the ACTION_DOWN event // Configure UdfpsView to accept the ACTION_DOWN event
when(mUdfpsView.isIlluminationRequested()).thenReturn(false); when(mUdfpsView.isIlluminationRequested()).thenReturn(false);
when(mUdfpsView.isWithinSensorArea(anyFloat(), anyFloat())).thenReturn(true); when(mUdfpsView.isWithinSensorArea(anyFloat(), anyFloat())).thenReturn(true);
when(mKeyguardUpdateMonitor.isFingerprintDetectionRunning()).thenReturn(true);
// GIVEN that the overlay is showing // GIVEN that the overlay is showing
mOverlayController.showUdfpsOverlay(TEST_REQUEST_ID, TEST_UDFPS_SENSOR_ID, mOverlayController.showUdfpsOverlay(TEST_REQUEST_ID, TEST_UDFPS_SENSOR_ID,
@@ -579,6 +580,7 @@ public class UdfpsControllerTest extends SysuiTestCase {
// FIX THIS TEST // FIX THIS TEST
mTouchListenerCaptor.getValue().onTouch(mUdfpsView, moveEvent); mTouchListenerCaptor.getValue().onTouch(mUdfpsView, moveEvent);
moveEvent.recycle(); moveEvent.recycle();
mFgExecutor.runAllReady();
// THEN FingerprintManager is notified about onPointerDown // THEN FingerprintManager is notified about onPointerDown
verify(mAlternateTouchProvider).onPointerDown(eq(TEST_REQUEST_ID), eq(0), eq(0), eq(0f), verify(mAlternateTouchProvider).onPointerDown(eq(TEST_REQUEST_ID), eq(0), eq(0), eq(0f),
eq(0f)); eq(0f));
@@ -588,6 +590,7 @@ public class UdfpsControllerTest extends SysuiTestCase {
// AND illumination begins // AND illumination begins
verify(mUdfpsView).startIllumination(mOnIlluminatedRunnableCaptor.capture()); verify(mUdfpsView).startIllumination(mOnIlluminatedRunnableCaptor.capture());
verify(mLatencyTracker, never()).onActionEnd(eq(LatencyTracker.ACTION_UDFPS_ILLUMINATE)); verify(mLatencyTracker, never()).onActionEnd(eq(LatencyTracker.ACTION_UDFPS_ILLUMINATE));
verify(mKeyguardUpdateMonitor).onUdfpsPointerDown(eq((int) TEST_REQUEST_ID));
// AND onIlluminatedRunnable notifies FingerprintManager about onUiReady // AND onIlluminatedRunnable notifies FingerprintManager about onUiReady
mOnIlluminatedRunnableCaptor.getValue().run(); mOnIlluminatedRunnableCaptor.getValue().run();
InOrder inOrder = inOrder(mFingerprintManager, mLatencyTracker); InOrder inOrder = inOrder(mFingerprintManager, mLatencyTracker);
@@ -606,6 +609,7 @@ public class UdfpsControllerTest extends SysuiTestCase {
when(mKeyguardUpdateMonitor.isFingerprintDetectionRunning()).thenReturn(true); when(mKeyguardUpdateMonitor.isFingerprintDetectionRunning()).thenReturn(true);
// WHEN fingerprint is requested because of AOD interrupt // WHEN fingerprint is requested because of AOD interrupt
mUdfpsController.onAodInterrupt(0, 0, 2f, 3f); mUdfpsController.onAodInterrupt(0, 0, 2f, 3f);
mFgExecutor.runAllReady();
// THEN illumination begins // THEN illumination begins
// AND onIlluminatedRunnable that notifies FingerprintManager is set // AND onIlluminatedRunnable that notifies FingerprintManager is set
verify(mUdfpsView).startIllumination(mOnIlluminatedRunnableCaptor.capture()); verify(mUdfpsView).startIllumination(mOnIlluminatedRunnableCaptor.capture());
@@ -614,6 +618,7 @@ public class UdfpsControllerTest extends SysuiTestCase {
eq(0), eq(0), eq(3f) /* minor */, eq(2f) /* major */); eq(0), eq(0), eq(3f) /* minor */, eq(2f) /* major */);
verify(mFingerprintManager, never()).onPointerDown(anyLong(), anyInt(), anyInt(), anyInt(), verify(mFingerprintManager, never()).onPointerDown(anyLong(), anyInt(), anyInt(), anyInt(),
anyFloat(), anyFloat()); anyFloat(), anyFloat());
verify(mKeyguardUpdateMonitor).onUdfpsPointerDown(eq((int) TEST_REQUEST_ID));
} }
@Test @Test
@@ -641,6 +646,7 @@ public class UdfpsControllerTest extends SysuiTestCase {
mFgExecutor.runAllReady(); mFgExecutor.runAllReady();
when(mKeyguardUpdateMonitor.isFingerprintDetectionRunning()).thenReturn(true); when(mKeyguardUpdateMonitor.isFingerprintDetectionRunning()).thenReturn(true);
mUdfpsController.onAodInterrupt(0, 0, 0f, 0f); mUdfpsController.onAodInterrupt(0, 0, 0f, 0f);
mFgExecutor.runAllReady();
when(mUdfpsView.isIlluminationRequested()).thenReturn(true); when(mUdfpsView.isIlluminationRequested()).thenReturn(true);
// WHEN it times out // WHEN it times out
mFgExecutor.advanceClockToNext(); mFgExecutor.advanceClockToNext();