diff options
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(); |