Merge "Handling power press messages sent from the HAL"

This commit is contained in:
Diya Bera
2023-02-06 03:50:40 +00:00
committed by Android (Google) Code Review
5 changed files with 40 additions and 12 deletions

View File

@@ -149,6 +149,13 @@ public final class SensorOverlays {
}
}
/**
* Returns if the sensor is side fps.
*/
public boolean isSfps() {
return mSidefpsController.isPresent();
}
/**
* Consumer for a biometric overlay controller.
*

View File

@@ -236,8 +236,14 @@ class FingerprintAuthenticationClient extends AuthenticationClient<AidlSession>
@Override
public void onError(int errorCode, int vendorCode) {
super.onError(errorCode, vendorCode);
if (errorCode == BiometricFingerprintConstants.FINGERPRINT_ERROR_VENDOR
&& vendorCode == BiometricFingerprintConstants.BIOMETRIC_ERROR_POWER_PRESSED
&& mSensorOverlays.isSfps()) {
super.onError(BiometricFingerprintConstants.BIOMETRIC_ERROR_POWER_PRESSED,
0 /* vendorCode */);
} else {
super.onError(errorCode, vendorCode);
}
if (errorCode == BiometricFingerprintConstants.FINGERPRINT_ERROR_BAD_CALIBRATION) {
BiometricNotificationUtils.showBadCalibrationNotification(getContext());
}

View File

@@ -146,7 +146,14 @@ class FingerprintEnrollClient extends EnrollClient<AidlSession> implements Udfps
}
});
mCallback.onBiometricAction(BiometricStateListener.ACTION_SENSOR_TOUCH);
super.onAcquired(acquiredInfo, vendorCode);
if (acquiredInfo == BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_VENDOR
&& vendorCode == BiometricFingerprintConstants.BIOMETRIC_ERROR_POWER_PRESSED
&& mSensorOverlays.isSfps()) {
super.onAcquired(BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED,
0 /* vendorCode */);
} else {
super.onAcquired(acquiredInfo, vendorCode);
}
}
@Override
@@ -274,8 +281,5 @@ class FingerprintEnrollClient extends EnrollClient<AidlSession> implements Udfps
}
@Override
public void onPowerPressed() {
onAcquired(BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED,
0 /* vendorCode */);
}
public void onPowerPressed() { }
}

View File

@@ -35,6 +35,7 @@ import static org.mockito.Mockito.when;
import android.app.ActivityManager;
import android.app.ActivityTaskManager;
import android.content.ComponentName;
import android.hardware.biometrics.BiometricFingerprintConstants;
import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.common.ICancellationSignal;
import android.hardware.biometrics.common.OperationContext;
@@ -364,6 +365,16 @@ public class FingerprintAuthenticationClientTest {
showHideOverlay(c -> c.onLockoutPermanent());
}
@Test
public void testPowerPressForwardsErrorMessage() throws RemoteException {
final FingerprintAuthenticationClient client = createClient();
client.onError(BiometricFingerprintConstants.FINGERPRINT_ERROR_VENDOR,
BiometricFingerprintConstants.BIOMETRIC_ERROR_POWER_PRESSED);
verify(mClientMonitorCallbackConverter).onError(anyInt(), anyInt(),
eq(BiometricFingerprintConstants.BIOMETRIC_ERROR_POWER_PRESSED), eq(0));
}
private void showHideOverlay(Consumer<FingerprintAuthenticationClient> block)
throws RemoteException {
final FingerprintAuthenticationClient client = createClient();

View File

@@ -16,8 +16,6 @@
package com.android.server.biometrics.sensors.fingerprint.aidl;
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -29,6 +27,7 @@ import static org.mockito.Mockito.same;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.hardware.biometrics.BiometricFingerprintConstants;
import android.hardware.biometrics.common.OperationContext;
import android.hardware.biometrics.fingerprint.ISession;
import android.hardware.biometrics.fingerprint.PointerContext;
@@ -276,11 +275,12 @@ public class FingerprintEnrollClientTest {
@Test
public void testPowerPressForwardsAcquireMessage() throws RemoteException {
final FingerprintEnrollClient client = createClient();
client.start(mCallback);
client.onPowerPressed();
client.onAcquired(BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_VENDOR,
BiometricFingerprintConstants.BIOMETRIC_ERROR_POWER_PRESSED);
verify(mClientMonitorCallbackConverter).onAcquired(anyInt(),
eq(FINGERPRINT_ACQUIRED_POWER_PRESSED), anyInt());
eq(BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED), eq(0));
}
private void showHideOverlay(Consumer<FingerprintEnrollClient> block)