summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp9
-rw-r--r--core/java/android/hardware/fingerprint/FingerprintManager.java13
-rw-r--r--core/java/android/hardware/fingerprint/IFingerprintService.aidl5
-rw-r--r--services/core/Android.bp3
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java13
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java5
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java6
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java22
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java22
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java10
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java10
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java6
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java7
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java7
-rw-r--r--services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java48
-rw-r--r--services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java52
17 files changed, 138 insertions, 107 deletions
diff --git a/Android.bp b/Android.bp
index 0a1456514010..70c396396109 100644
--- a/Android.bp
+++ b/Android.bp
@@ -95,8 +95,11 @@ filegroup {
":platform-compat-native-aidl",
// AIDL sources from external directories
+ ":android.hardware.biometrics.common-V3-java-source",
+ ":android.hardware.biometrics.fingerprint-V3-java-source",
":android.hardware.gnss-V2-java-source",
":android.hardware.graphics.common-V3-java-source",
+ ":android.hardware.keymaster-V4-java-source",
":android.hardware.security.keymint-V2-java-source",
":android.hardware.security.secureclock-V1-java-source",
":android.hardware.tv.tuner-V1-java-source",
@@ -332,7 +335,10 @@ java_defaults {
"packages/modules/Bluetooth/framework/aidl-export",
"packages/modules/Connectivity/framework/aidl-export",
"packages/modules/Media/apex/aidl/stable",
+ "hardware/interfaces/biometrics/common/aidl",
+ "hardware/interfaces/biometrics/fingerprint/aidl",
"hardware/interfaces/graphics/common/aidl",
+ "hardware/interfaces/keymaster/aidl",
],
},
dxflags: [
@@ -617,7 +623,10 @@ stubs_defaults {
"packages/modules/Bluetooth/framework/aidl-export",
"packages/modules/Connectivity/framework/aidl-export",
"packages/modules/Media/apex/aidl/stable",
+ "hardware/interfaces/biometrics/common/aidl",
+ "hardware/interfaces/biometrics/fingerprint/aidl",
"hardware/interfaces/graphics/common/aidl",
+ "hardware/interfaces/keymaster/aidl",
],
},
// These are libs from framework-internal-utils that are required (i.e. being referenced)
diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java
index 3c73eb697a69..fb5ac5a4efcb 100644
--- a/core/java/android/hardware/fingerprint/FingerprintManager.java
+++ b/core/java/android/hardware/fingerprint/FingerprintManager.java
@@ -49,6 +49,7 @@ import android.hardware.biometrics.BiometricStateListener;
import android.hardware.biometrics.BiometricTestSession;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.hardware.biometrics.SensorProperties;
+import android.hardware.biometrics.fingerprint.PointerContext;
import android.os.Binder;
import android.os.Build;
import android.os.CancellationSignal;
@@ -959,8 +960,14 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
return;
}
+ final PointerContext pc = new PointerContext();
+ pc.x = (int) x;
+ pc.y = (int) y;
+ pc.minor = minor;
+ pc.major = major;
+
try {
- mService.onPointerDown(requestId, sensorId, x, y, minor, major);
+ mService.onPointerDown(requestId, sensorId, pc);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -976,8 +983,10 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
return;
}
+ final PointerContext pc = new PointerContext();
+
try {
- mService.onPointerUp(requestId, sensorId);
+ mService.onPointerUp(requestId, sensorId, pc);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/hardware/fingerprint/IFingerprintService.aidl b/core/java/android/hardware/fingerprint/IFingerprintService.aidl
index 365a6b3e06e5..6f35713d434f 100644
--- a/core/java/android/hardware/fingerprint/IFingerprintService.aidl
+++ b/core/java/android/hardware/fingerprint/IFingerprintService.aidl
@@ -21,6 +21,7 @@ import android.hardware.biometrics.IBiometricStateListener;
import android.hardware.biometrics.IInvalidationCallback;
import android.hardware.biometrics.ITestSession;
import android.hardware.biometrics.ITestSessionCallback;
+import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.fingerprint.IFingerprintClientActiveCallback;
import android.hardware.fingerprint.IFingerprintAuthenticatorsRegisteredCallback;
import android.hardware.fingerprint.IFingerprintServiceReceiver;
@@ -184,11 +185,11 @@ interface IFingerprintService {
// Notifies about a finger touching the sensor area.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
- void onPointerDown(long requestId, int sensorId, int x, int y, float minor, float major);
+ void onPointerDown(long requestId, int sensorId, in PointerContext pc);
// Notifies about a finger leaving the sensor area.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
- void onPointerUp(long requestId, int sensorId);
+ void onPointerUp(long requestId, int sensorId, in PointerContext pc);
// Notifies about the fingerprint UI being ready (e.g. HBM illumination is enabled).
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
diff --git a/services/core/Android.bp b/services/core/Android.bp
index 84f2b63f9775..088eddbb00e3 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -100,7 +100,7 @@ java_library_static {
name: "services.core.unboosted",
defaults: ["platform_service_defaults"],
srcs: [
- ":android.hardware.biometrics.face-V2-java-source",
+ ":android.hardware.biometrics.face-V3-java-source",
":statslog-art-java-gen",
":statslog-contexthub-java-gen",
":services.core-sources",
@@ -161,7 +161,6 @@ java_library_static {
"android.hardware.weaver-V1.0-java",
"android.hardware.biometrics.face-V1.0-java",
"android.hardware.biometrics.fingerprint-V2.3-java",
- "android.hardware.biometrics.fingerprint-V2-java",
"android.hardware.oemlock-V1.0-java",
"android.hardware.configstore-V1.1-java",
"android.hardware.ir-V1-java",
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
index dca9ef25a818..1c57151ed7bd 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
@@ -43,6 +43,7 @@ import android.hardware.biometrics.IInvalidationCallback;
import android.hardware.biometrics.ITestSession;
import android.hardware.biometrics.ITestSessionCallback;
import android.hardware.biometrics.fingerprint.IFingerprint;
+import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.fingerprint.Fingerprint;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
@@ -881,29 +882,27 @@ public class FingerprintService extends SystemService {
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
- public void onPointerDown(long requestId, int sensorId, int x, int y,
- float minor, float major) {
+ public void onPointerDown(long requestId, int sensorId, PointerContext pc) {
super.onPointerDown_enforcePermission();
-
final ServiceProvider provider = mRegistry.getProviderForSensor(sensorId);
if (provider == null) {
Slog.w(TAG, "No matching provider for onFingerDown, sensorId: " + sensorId);
return;
}
- provider.onPointerDown(requestId, sensorId, x, y, minor, major);
+ provider.onPointerDown(requestId, sensorId, pc);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
- public void onPointerUp(long requestId, int sensorId) {
- super.onPointerUp_enforcePermission();
+ public void onPointerUp(long requestId, int sensorId, PointerContext pc) {
+ super.onPointerUp_enforcePermission();
final ServiceProvider provider = mRegistry.getProviderForSensor(sensorId);
if (provider == null) {
Slog.w(TAG, "No matching provider for onFingerUp, sensorId: " + sensorId);
return;
}
- provider.onPointerUp(requestId, sensorId);
+ provider.onPointerUp(requestId, sensorId, pc);
}
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java
index 05c2e2919a11..5b6f14d6c805 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java
@@ -21,6 +21,7 @@ import android.annotation.Nullable;
import android.hardware.biometrics.IInvalidationCallback;
import android.hardware.biometrics.ITestSession;
import android.hardware.biometrics.ITestSessionCallback;
+import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.fingerprint.Fingerprint;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
@@ -122,9 +123,9 @@ public interface ServiceProvider extends
@NonNull IInvalidationCallback callback);
- void onPointerDown(long requestId, int sensorId, int x, int y, float minor, float major);
+ void onPointerDown(long requestId, int sensorId, PointerContext pc);
- void onPointerUp(long requestId, int sensorId);
+ void onPointerUp(long requestId, int sensorId, PointerContext pc);
void onUiReady(long requestId, int sensorId);
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java
index a2c07515156f..da7163a2a678 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java
@@ -16,6 +16,8 @@
package com.android.server.biometrics.sensors.fingerprint;
+import android.hardware.biometrics.fingerprint.PointerContext;
+
import com.android.server.biometrics.sensors.BaseClientMonitor;
/**
@@ -24,8 +26,8 @@ import com.android.server.biometrics.sensors.BaseClientMonitor;
* finger position (e.g. enroll, authenticate) should implement this.
*/
public interface Udfps {
- void onPointerDown(int x, int y, float minor, float major);
- void onPointerUp();
+ void onPointerDown(PointerContext pc);
+ void onPointerUp(PointerContext pc);
void onUiReady();
boolean isPointerDown();
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
index 893c9b16ea02..11f45176dc45 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
@@ -383,23 +383,17 @@ class FingerprintAuthenticationClient extends AuthenticationClient<AidlSession>
}
@Override
- public void onPointerDown(int x, int y, float minor, float major) {
+ public void onPointerDown(PointerContext pc) {
try {
mIsPointerDown = true;
mState = STATE_STARTED;
final AidlSession session = getFreshDaemon();
if (session.hasContextMethods()) {
- final PointerContext context = new PointerContext();
- context.pointerId = 0;
- context.x = x;
- context.y = y;
- context.minor = minor;
- context.major = major;
- context.isAod = getBiometricContext().isAod();
- session.getSession().onPointerDownWithContext(context);
+ session.getSession().onPointerDownWithContext(pc);
} else {
- session.getSession().onPointerDown(0 /* pointerId */, x, y, minor, major);
+ session.getSession().onPointerDown(pc.pointerId, (int) pc.x, (int) pc.y, pc.minor,
+ pc.major);
}
if (getListener() != null) {
@@ -411,18 +405,16 @@ class FingerprintAuthenticationClient extends AuthenticationClient<AidlSession>
}
@Override
- public void onPointerUp() {
+ public void onPointerUp(PointerContext pc) {
try {
mIsPointerDown = false;
mState = STATE_STARTED_PAUSED_ATTEMPTED;
final AidlSession session = getFreshDaemon();
if (session.hasContextMethods()) {
- final PointerContext context = new PointerContext();
- context.pointerId = 0;
- session.getSession().onPointerUpWithContext(context);
+ session.getSession().onPointerUpWithContext(pc);
} else {
- session.getSession().onPointerUp(0 /* pointerId */);
+ session.getSession().onPointerUp(pc.pointerId);
}
if (getListener() != null) {
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java
index 7e5d39fdef1a..fa54983b31dc 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java
@@ -219,22 +219,16 @@ class FingerprintEnrollClient extends EnrollClient<AidlSession> implements Udfps
}
@Override
- public void onPointerDown(int x, int y, float minor, float major) {
+ public void onPointerDown(PointerContext pc) {
try {
mIsPointerDown = true;
final AidlSession session = getFreshDaemon();
if (session.hasContextMethods()) {
- final PointerContext context = new PointerContext();
- context.pointerId = 0;
- context.x = x;
- context.y = y;
- context.minor = minor;
- context.major = major;
- context.isAod = getBiometricContext().isAod();
- session.getSession().onPointerDownWithContext(context);
+ session.getSession().onPointerDownWithContext(pc);
} else {
- session.getSession().onPointerDown(0 /* pointerId */, x, y, minor, major);
+ session.getSession().onPointerDown(pc.pointerId, (int) pc.x, (int) pc.y, pc.minor,
+ pc.major);
}
} catch (RemoteException e) {
Slog.e(TAG, "Unable to send pointer down", e);
@@ -242,17 +236,15 @@ class FingerprintEnrollClient extends EnrollClient<AidlSession> implements Udfps
}
@Override
- public void onPointerUp() {
+ public void onPointerUp(PointerContext pc) {
try {
mIsPointerDown = false;
final AidlSession session = getFreshDaemon();
if (session.hasContextMethods()) {
- final PointerContext context = new PointerContext();
- context.pointerId = 0;
- session.getSession().onPointerUpWithContext(context);
+ session.getSession().onPointerUpWithContext(pc);
} else {
- session.getSession().onPointerUp(0 /* pointerId */);
+ session.getSession().onPointerUp(pc.pointerId);
}
} catch (RemoteException e) {
Slog.e(TAG, "Unable to send pointer up", e);
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
index b42b1c68ec17..776d33172e68 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
@@ -34,6 +34,7 @@ import android.hardware.biometrics.ITestSessionCallback;
import android.hardware.biometrics.SensorLocationInternal;
import android.hardware.biometrics.common.ComponentInfo;
import android.hardware.biometrics.fingerprint.IFingerprint;
+import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.biometrics.fingerprint.SensorProps;
import android.hardware.fingerprint.Fingerprint;
import android.hardware.fingerprint.FingerprintManager;
@@ -627,25 +628,24 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
}
@Override
- public void onPointerDown(long requestId, int sensorId, int x, int y,
- float minor, float major) {
+ public void onPointerDown(long requestId, int sensorId, PointerContext pc) {
mSensors.get(sensorId).getScheduler().getCurrentClientIfMatches(requestId, (client) -> {
if (!(client instanceof Udfps)) {
Slog.e(getTag(), "onPointerDown received during client: " + client);
return;
}
- ((Udfps) client).onPointerDown(x, y, minor, major);
+ ((Udfps) client).onPointerDown(pc);
});
}
@Override
- public void onPointerUp(long requestId, int sensorId) {
+ public void onPointerUp(long requestId, int sensorId, PointerContext pc) {
mSensors.get(sensorId).getScheduler().getCurrentClientIfMatches(requestId, (client) -> {
if (!(client instanceof Udfps)) {
Slog.e(getTag(), "onPointerUp received during client: " + client);
return;
}
- ((Udfps) client).onPointerUp();
+ ((Udfps) client).onPointerUp(pc);
});
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
index 1f303634b0b4..4567addc4302 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
@@ -30,6 +30,7 @@ import android.hardware.biometrics.BiometricsProtoEnums;
import android.hardware.biometrics.IInvalidationCallback;
import android.hardware.biometrics.ITestSession;
import android.hardware.biometrics.ITestSessionCallback;
+import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint;
import android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprintClientCallback;
import android.hardware.fingerprint.Fingerprint;
@@ -807,25 +808,24 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
}
@Override
- public void onPointerDown(long requestId, int sensorId, int x, int y,
- float minor, float major) {
+ public void onPointerDown(long requestId, int sensorId, PointerContext pc) {
mScheduler.getCurrentClientIfMatches(requestId, (client) -> {
if (!(client instanceof Udfps)) {
Slog.w(TAG, "onFingerDown received during client: " + client);
return;
}
- ((Udfps) client).onPointerDown(x, y, minor, major);
+ ((Udfps) client).onPointerDown(pc);
});
}
@Override
- public void onPointerUp(long requestId, int sensorId) {
+ public void onPointerUp(long requestId, int sensorId, PointerContext pc) {
mScheduler.getCurrentClientIfMatches(requestId, (client) -> {
if (!(client instanceof Udfps)) {
Slog.w(TAG, "onFingerDown received during client: " + client);
return;
}
- ((Udfps) client).onPointerUp();
+ ((Udfps) client).onPointerUp(pc);
});
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java
index bea0f4ffd45d..34c6265a5368 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java
@@ -21,6 +21,7 @@ import android.annotation.Nullable;
import android.app.trust.TrustManager;
import android.content.ContentResolver;
import android.content.Context;
+import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback;
import android.hardware.fingerprint.FingerprintManager.AuthenticationResult;
@@ -441,8 +442,7 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage
}
@Override
- public void onPointerDown(long requestId, int sensorId, int x, int y, float minor,
- float major) {
+ public void onPointerDown(long requestId, int sensorId, PointerContext pc) {
mHandler.post(() -> {
Slog.d(TAG, "onFingerDown");
final AuthenticationConsumer lastAuthenticatedConsumer =
@@ -489,7 +489,7 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage
}
@Override
- public void onPointerUp(long requestId, int sensorId) {
+ public void onPointerUp(long requestId, int sensorId, PointerContext pc) {
mHandler.post(() -> {
Slog.d(TAG, "onFingerUp");
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java
index 089317e322da..a9cc897a2937 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java
@@ -24,6 +24,7 @@ import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricFingerprintConstants;
import android.hardware.biometrics.BiometricManager.Authenticators;
+import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.hardware.fingerprint.ISidefpsController;
@@ -234,11 +235,11 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi
}
@Override
- public void onPointerDown(int x, int y, float minor, float major) {
+ public void onPointerDown(PointerContext pc) {
mIsPointerDown = true;
mState = STATE_STARTED;
mALSProbeCallback.getProbe().enable();
- UdfpsHelper.onFingerDown(getFreshDaemon(), x, y, minor, major);
+ UdfpsHelper.onFingerDown(getFreshDaemon(), (int) pc.x, (int) pc.y, pc.minor, pc.major);
if (getListener() != null) {
try {
@@ -250,7 +251,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi
}
@Override
- public void onPointerUp() {
+ public void onPointerUp(PointerContext pc) {
mIsPointerDown = false;
mState = STATE_STARTED_PAUSED_ATTEMPTED;
mALSProbeCallback.getProbe().disable();
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java
index 3e9b8ef7fab4..cfa9fb429fdd 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricFingerprintConstants;
import android.hardware.biometrics.BiometricOverlayConstants;
+import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint;
import android.hardware.fingerprint.IUdfpsOverlay;
import android.hardware.fingerprint.IUdfpsOverlayController;
@@ -110,13 +111,13 @@ class FingerprintDetectClient extends AcquisitionClient<IBiometricsFingerprint>
}
@Override
- public void onPointerDown(int x, int y, float minor, float major) {
+ public void onPointerDown(PointerContext pc) {
mIsPointerDown = true;
- UdfpsHelper.onFingerDown(getFreshDaemon(), x, y, minor, major);
+ UdfpsHelper.onFingerDown(getFreshDaemon(), (int) pc.x, (int) pc.y, pc.minor, pc.major);
}
@Override
- public void onPointerUp() {
+ public void onPointerUp(PointerContext pc) {
mIsPointerDown = false;
UdfpsHelper.onFingerUp(getFreshDaemon());
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java
index 3371cec32fde..78039ef99986 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricFingerprintConstants;
import android.hardware.biometrics.BiometricStateListener;
+import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint;
import android.hardware.fingerprint.Fingerprint;
import android.hardware.fingerprint.FingerprintManager;
@@ -168,13 +169,13 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint
}
@Override
- public void onPointerDown(int x, int y, float minor, float major) {
+ public void onPointerDown(PointerContext pc) {
mIsPointerDown = true;
- UdfpsHelper.onFingerDown(getFreshDaemon(), x, y, minor, major);
+ UdfpsHelper.onFingerDown(getFreshDaemon(), (int) pc.x, (int) pc.y, pc.minor, pc.major);
}
@Override
- public void onPointerUp() {
+ public void onPointerUp(PointerContext pc) {
mIsPointerDown = false;
UdfpsHelper.onFingerUp(getFreshDaemon());
}
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
index 5e5b48dd24c1..22c53d349c5f 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
@@ -16,8 +16,6 @@
package com.android.server.biometrics.sensors.fingerprint.aidl;
-import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyFloat;
@@ -87,7 +85,7 @@ public class FingerprintAuthenticationClientTest {
private static final int USER_ID = 8;
private static final long OP_ID = 7;
private static final long REQUEST_ID = 88;
- private static final int POINTER_ID = 0;
+ private static final int POINTER_ID = 3;
private static final int TOUCH_X = 8;
private static final int TOUCH_Y = 20;
private static final float TOUCH_MAJOR = 4.4f;
@@ -135,8 +133,6 @@ public class FingerprintAuthenticationClientTest {
@Captor
private ArgumentCaptor<OperationContext> mOperationContextCaptor;
@Captor
- private ArgumentCaptor<PointerContext> mPointerContextCaptor;
- @Captor
private ArgumentCaptor<Consumer<OperationContext>> mContextInjector;
private final TestLooper mLooper = new TestLooper();
@@ -176,7 +172,10 @@ public class FingerprintAuthenticationClientTest {
public void pointerUp_v1() throws RemoteException {
final FingerprintAuthenticationClient client = createClient(1);
client.start(mCallback);
- client.onPointerUp();
+
+ PointerContext pc = new PointerContext();
+ pc.pointerId = POINTER_ID;
+ client.onPointerUp(pc);
verify(mHal).onPointerUp(eq(POINTER_ID));
verify(mHal, never()).onPointerUpWithContext(any());
@@ -186,10 +185,17 @@ public class FingerprintAuthenticationClientTest {
public void pointerDown_v1() throws RemoteException {
final FingerprintAuthenticationClient client = createClient(1);
client.start(mCallback);
- client.onPointerDown(TOUCH_X, TOUCH_Y, TOUCH_MAJOR, TOUCH_MINOR);
- verify(mHal).onPointerDown(eq(0),
- eq(TOUCH_X), eq(TOUCH_Y), eq(TOUCH_MAJOR), eq(TOUCH_MINOR));
+ PointerContext pc = new PointerContext();
+ pc.pointerId = POINTER_ID;
+ pc.x = TOUCH_X;
+ pc.y = TOUCH_Y;
+ pc.minor = TOUCH_MINOR;
+ pc.major = TOUCH_MAJOR;
+ client.onPointerDown(pc);
+
+ verify(mHal).onPointerDown(eq(POINTER_ID), eq(TOUCH_X), eq(TOUCH_Y), eq(TOUCH_MINOR),
+ eq(TOUCH_MAJOR));
verify(mHal, never()).onPointerDownWithContext(any());
}
@@ -197,26 +203,30 @@ public class FingerprintAuthenticationClientTest {
public void pointerUpWithContext_v2() throws RemoteException {
final FingerprintAuthenticationClient client = createClient(2);
client.start(mCallback);
- client.onPointerUp();
- verify(mHal).onPointerUpWithContext(mPointerContextCaptor.capture());
- verify(mHal, never()).onPointerUp(eq(POINTER_ID));
+ PointerContext pc = new PointerContext();
+ pc.pointerId = POINTER_ID;
+ client.onPointerUp(pc);
- final PointerContext pContext = mPointerContextCaptor.getValue();
- assertThat(pContext.pointerId).isEqualTo(POINTER_ID);
+ verify(mHal).onPointerUpWithContext(eq(pc));
+ verify(mHal, never()).onPointerUp(eq(POINTER_ID));
}
@Test
public void pointerDownWithContext_v2() throws RemoteException {
final FingerprintAuthenticationClient client = createClient(2);
client.start(mCallback);
- client.onPointerDown(TOUCH_X, TOUCH_Y, TOUCH_MAJOR, TOUCH_MINOR);
- verify(mHal).onPointerDownWithContext(mPointerContextCaptor.capture());
- verify(mHal, never()).onPointerDown(anyInt(), anyInt(), anyInt(), anyFloat(), anyFloat());
+ PointerContext pc = new PointerContext();
+ pc.pointerId = POINTER_ID;
+ pc.x = TOUCH_X;
+ pc.y = TOUCH_Y;
+ pc.minor = TOUCH_MINOR;
+ pc.major = TOUCH_MAJOR;
+ client.onPointerDown(pc);
- final PointerContext pContext = mPointerContextCaptor.getValue();
- assertThat(pContext.pointerId).isEqualTo(POINTER_ID);
+ verify(mHal).onPointerDownWithContext(eq(pc));
+ verify(mHal, never()).onPointerDown(anyInt(), anyInt(), anyInt(), anyFloat(), anyFloat());
}
@Test
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java
index 38b06c476174..c3d478311423 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java
@@ -18,8 +18,6 @@ package com.android.server.biometrics.sensors.fingerprint.aidl;
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED;
-import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -74,7 +72,7 @@ public class FingerprintEnrollClientTest {
private static final byte[] HAT = new byte[69];
private static final int USER_ID = 8;
private static final long REQUEST_ID = 9;
- private static final int POINTER_ID = 0;
+ private static final int POINTER_ID = 3;
private static final int TOUCH_X = 8;
private static final int TOUCH_Y = 20;
private static final float TOUCH_MAJOR = 4.4f;
@@ -153,7 +151,10 @@ public class FingerprintEnrollClientTest {
public void pointerUp_v1() throws RemoteException {
final FingerprintEnrollClient client = createClient(1);
client.start(mCallback);
- client.onPointerUp();
+
+ PointerContext pc = new PointerContext();
+ pc.pointerId = POINTER_ID;
+ client.onPointerUp(pc);
verify(mHal).onPointerUp(eq(POINTER_ID));
verify(mHal, never()).onPointerUpWithContext(any());
@@ -163,10 +164,17 @@ public class FingerprintEnrollClientTest {
public void pointerDown_v1() throws RemoteException {
final FingerprintEnrollClient client = createClient(1);
client.start(mCallback);
- client.onPointerDown(TOUCH_X, TOUCH_Y, TOUCH_MAJOR, TOUCH_MINOR);
- verify(mHal).onPointerDown(eq(0),
- eq(TOUCH_X), eq(TOUCH_Y), eq(TOUCH_MAJOR), eq(TOUCH_MINOR));
+ PointerContext pc = new PointerContext();
+ pc.pointerId = POINTER_ID;
+ pc.x = TOUCH_X;
+ pc.y = TOUCH_Y;
+ pc.minor = TOUCH_MINOR;
+ pc.major = TOUCH_MAJOR;
+ client.onPointerDown(pc);
+
+ verify(mHal).onPointerDown(eq(POINTER_ID), eq(TOUCH_X), eq(TOUCH_Y), eq(TOUCH_MINOR),
+ eq(TOUCH_MAJOR));
verify(mHal, never()).onPointerDownWithContext(any());
}
@@ -174,26 +182,30 @@ public class FingerprintEnrollClientTest {
public void pointerUpWithContext_v2() throws RemoteException {
final FingerprintEnrollClient client = createClient(2);
client.start(mCallback);
- client.onPointerUp();
- verify(mHal).onPointerUpWithContext(mPointerContextCaptor.capture());
- verify(mHal, never()).onPointerUp(eq(POINTER_ID));
+ PointerContext pc = new PointerContext();
+ pc.pointerId = POINTER_ID;
+ client.onPointerUp(pc);
- final PointerContext pContext = mPointerContextCaptor.getValue();
- assertThat(pContext.pointerId).isEqualTo(POINTER_ID);
+ verify(mHal).onPointerUpWithContext(eq(pc));
+ verify(mHal, never()).onPointerUp(anyInt());
}
@Test
public void pointerDownWithContext_v2() throws RemoteException {
final FingerprintEnrollClient client = createClient(2);
client.start(mCallback);
- client.onPointerDown(TOUCH_X, TOUCH_Y, TOUCH_MAJOR, TOUCH_MINOR);
- verify(mHal).onPointerDownWithContext(mPointerContextCaptor.capture());
- verify(mHal, never()).onPointerDown(anyInt(), anyInt(), anyInt(), anyFloat(), anyFloat());
+ PointerContext pc = new PointerContext();
+ pc.pointerId = POINTER_ID;
+ pc.x = TOUCH_X;
+ pc.y = TOUCH_Y;
+ pc.minor = TOUCH_MINOR;
+ pc.major = TOUCH_MAJOR;
+ client.onPointerDown(pc);
- final PointerContext pContext = mPointerContextCaptor.getValue();
- assertThat(pContext.pointerId).isEqualTo(POINTER_ID);
+ verify(mHal).onPointerDownWithContext(eq(pc));
+ verify(mHal, never()).onPointerDown(anyInt(), anyInt(), anyInt(), anyFloat(), anyFloat());
}
@Test
@@ -204,8 +216,10 @@ public class FingerprintEnrollClientTest {
verify(mLuxProbe).enable();
client.onAcquired(2, 0);
- client.onPointerUp();
- client.onPointerDown(TOUCH_X, TOUCH_Y, TOUCH_MAJOR, TOUCH_MINOR);
+
+ PointerContext pc = new PointerContext();
+ client.onPointerUp(pc);
+ client.onPointerDown(pc);
verify(mLuxProbe, never()).disable();
verify(mLuxProbe, never()).destroy();