Propagate PointerContext for UDFPS touch events
Bug: 218388821 Test: atest FrameworksCoreTests:android.util.RotationUtilsTest Test: atest FrameworksServicesTests:com.android.server.biometrics Test: atest SystemUITests:com.android.systemui.biometrics Change-Id: If41ae8d30c702c1482c0ab5617014d93a656526b
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
PointerContext pc = new PointerContext();
|
||||
pc.pointerId = POINTER_ID;
|
||||
client.onPointerUp(pc);
|
||||
|
||||
verify(mHal).onPointerUpWithContext(eq(pc));
|
||||
verify(mHal, never()).onPointerUp(eq(POINTER_ID));
|
||||
|
||||
final PointerContext pContext = mPointerContextCaptor.getValue();
|
||||
assertThat(pContext.pointerId).isEqualTo(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());
|
||||
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).onPointerDownWithContext(eq(pc));
|
||||
verify(mHal, never()).onPointerDown(anyInt(), anyInt(), anyInt(), anyFloat(), anyFloat());
|
||||
|
||||
final PointerContext pContext = mPointerContextCaptor.getValue();
|
||||
assertThat(pContext.pointerId).isEqualTo(POINTER_ID);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -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());
|
||||
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).onPointerDownWithContext(eq(pc));
|
||||
verify(mHal, never()).onPointerDown(anyInt(), anyInt(), anyInt(), anyFloat(), anyFloat());
|
||||
|
||||
final PointerContext pContext = mPointerContextCaptor.getValue();
|
||||
assertThat(pContext.pointerId).isEqualTo(POINTER_ID);
|
||||
}
|
||||
|
||||
@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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user