Merge "Updated Fingerprint enrollment logging"
This commit is contained in:
committed by
Android (Google) Code Review
commit
446802707f
@@ -568,11 +568,13 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
* @param cancel an object that can be used to cancel enrollment
|
||||
* @param userId the user to whom this fingerprint will belong to
|
||||
* @param callback an object to receive enrollment events
|
||||
* @param shouldLogMetrics a flag that indicates if enrollment failure/success metrics
|
||||
* should be logged.
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(MANAGE_FINGERPRINT)
|
||||
public void enroll(byte [] hardwareAuthToken, CancellationSignal cancel, int userId,
|
||||
EnrollmentCallback callback) {
|
||||
EnrollmentCallback callback, boolean shouldLogMetrics) {
|
||||
if (userId == UserHandle.USER_CURRENT) {
|
||||
userId = getCurrentUserId();
|
||||
}
|
||||
@@ -593,7 +595,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
try {
|
||||
mEnrollmentCallback = callback;
|
||||
mService.enroll(mToken, hardwareAuthToken, userId, mServiceReceiver,
|
||||
mContext.getOpPackageName());
|
||||
mContext.getOpPackageName(), shouldLogMetrics);
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Remote exception in enroll: ", e);
|
||||
// Though this may not be a hardware issue, it will cause apps to give up or try
|
||||
|
||||
@@ -77,7 +77,7 @@ interface IFingerprintService {
|
||||
|
||||
// Start fingerprint enrollment
|
||||
void enroll(IBinder token, in byte [] hardwareAuthToken, int userId, IFingerprintServiceReceiver receiver,
|
||||
String opPackageName);
|
||||
String opPackageName, boolean shouldLogMetrics);
|
||||
|
||||
// Cancel enrollment in progress
|
||||
void cancelEnrollment(IBinder token);
|
||||
|
||||
@@ -56,9 +56,9 @@ public abstract class AcquisitionClient<T> extends ClientMonitor<T> implements I
|
||||
public AcquisitionClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
|
||||
@NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId,
|
||||
@NonNull String owner, int cookie, int sensorId, int statsModality,
|
||||
int statsAction, int statsClient) {
|
||||
int statsAction, int statsClient, boolean shouldLogMetrics) {
|
||||
super(context, lazyDaemon, token, listener, userId, owner, cookie, sensorId, statsModality,
|
||||
statsAction, statsClient);
|
||||
statsAction, statsClient, shouldLogMetrics);
|
||||
mPowerManager = context.getSystemService(PowerManager.class);
|
||||
mSuccessVibrationEffect = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
|
||||
mErrorVibrationEffect = VibrationEffect.get(VibrationEffect.EFFECT_DOUBLE_CLICK);
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityTaskManager;
|
||||
import android.app.IActivityTaskManager;
|
||||
import android.app.TaskStackListener;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
@@ -67,7 +66,8 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T>
|
||||
int statsModality, int statsClient, @Nullable TaskStackListener taskStackListener,
|
||||
@NonNull LockoutTracker lockoutTracker) {
|
||||
super(context, lazyDaemon, token, listener, targetUserId, owner, cookie, sensorId,
|
||||
statsModality, BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient);
|
||||
statsModality, BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient,
|
||||
true /* shouldLogMetrics */);
|
||||
mIsStrongBiometric = isStrongBiometric;
|
||||
mOperationId = operationId;
|
||||
mRequireConfirmation = requireConfirmation;
|
||||
|
||||
@@ -105,8 +105,8 @@ public abstract class ClientMonitor<T> extends LoggableMonitor implements IBinde
|
||||
public ClientMonitor(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
|
||||
@Nullable IBinder token, @Nullable ClientMonitorCallbackConverter listener, int userId,
|
||||
@NonNull String owner, int cookie, int sensorId, int statsModality, int statsAction,
|
||||
int statsClient) {
|
||||
super(statsModality, statsAction, statsClient);
|
||||
int statsClient, boolean shouldLogMetrics) {
|
||||
super(statsModality, statsAction, statsClient, shouldLogMetrics);
|
||||
mSequentialId = sCount++;
|
||||
mContext = context;
|
||||
mLazyDaemon = lazyDaemon;
|
||||
|
||||
@@ -49,10 +49,10 @@ public abstract class EnrollClient<T> extends AcquisitionClient<T> {
|
||||
@NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId,
|
||||
@NonNull byte[] hardwareAuthToken, @NonNull String owner, @NonNull BiometricUtils utils,
|
||||
int timeoutSec, int statsModality, int sensorId,
|
||||
boolean shouldVibrate) {
|
||||
boolean shouldVibrate, boolean shouldLogMetrics) {
|
||||
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
||||
statsModality, BiometricsProtoEnums.ACTION_ENROLL,
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN, shouldLogMetrics);
|
||||
mBiometricUtils = utils;
|
||||
mHardwareAuthToken = Arrays.copyOf(hardwareAuthToken, hardwareAuthToken.length);
|
||||
mTimeoutSec = timeoutSec;
|
||||
|
||||
@@ -32,7 +32,7 @@ public abstract class GenerateChallengeClient<T> extends ClientMonitor<T> {
|
||||
@NonNull String owner, int sensorId) {
|
||||
super(context, lazyDaemon, token, listener, 0 /* userId */, owner, 0 /* cookie */, sensorId,
|
||||
BiometricsProtoEnums.MODALITY_UNKNOWN, BiometricsProtoEnums.ACTION_UNKNOWN,
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN, true /* shouldLogMetrics */);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -107,7 +107,8 @@ public abstract class InternalCleanupClient<S extends BiometricAuthenticator.Ide
|
||||
@NonNull Map<Integer, Long> authenticatorIds) {
|
||||
super(context, lazyDaemon, null /* token */, null /* ClientMonitorCallbackConverter */,
|
||||
userId, owner, 0 /* cookie */, sensorId, statsModality,
|
||||
BiometricsProtoEnums.ACTION_ENUMERATE, BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.ACTION_ENUMERATE, BiometricsProtoEnums.CLIENT_UNKNOWN,
|
||||
true /* shouldLogMetrics */);
|
||||
mBiometricUtils = utils;
|
||||
mAuthenticatorIds = authenticatorIds;
|
||||
mEnrolledList = enrolledList;
|
||||
|
||||
@@ -51,7 +51,7 @@ public abstract class InternalEnumerateClient<T> extends ClientMonitor<T>
|
||||
// is all done internally.
|
||||
super(context, lazyDaemon, token, null /* ClientMonitorCallbackConverter */, userId, owner,
|
||||
0 /* cookie */, sensorId, statsModality, BiometricsProtoEnums.ACTION_ENUMERATE,
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN, true /* shouldLogMetrics */);
|
||||
mEnrolledList = enrolledList;
|
||||
mUtils = utils;
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ public abstract class LoggableMonitor {
|
||||
private final int mStatsAction;
|
||||
private final int mStatsClient;
|
||||
private long mFirstAcquireTimeMs;
|
||||
private boolean mShouldLogMetrics;
|
||||
|
||||
/**
|
||||
* Only valid for AuthenticationClient.
|
||||
@@ -51,11 +52,14 @@ public abstract class LoggableMonitor {
|
||||
* @param statsModality One of {@link BiometricsProtoEnums} MODALITY_* constants.
|
||||
* @param statsAction One of {@link BiometricsProtoEnums} ACTION_* constants.
|
||||
* @param statsClient One of {@link BiometricsProtoEnums} CLIENT_* constants.
|
||||
* @param shouldLogMetrics If set to false, metrics will not be reported to statsd.
|
||||
*/
|
||||
public LoggableMonitor(int statsModality, int statsAction, int statsClient) {
|
||||
public LoggableMonitor(int statsModality, int statsAction, int statsClient,
|
||||
boolean shouldLogMetrics) {
|
||||
mStatsModality = statsModality;
|
||||
mStatsAction = statsAction;
|
||||
mStatsClient = statsClient;
|
||||
mShouldLogMetrics = shouldLogMetrics;
|
||||
}
|
||||
|
||||
public int getStatsClient() {
|
||||
@@ -70,6 +74,9 @@ public abstract class LoggableMonitor {
|
||||
|
||||
protected final void logOnAcquired(Context context, int acquiredInfo, int vendorCode,
|
||||
int targetUserId) {
|
||||
if (!mShouldLogMetrics) {
|
||||
return;
|
||||
}
|
||||
|
||||
final boolean isFace = mStatsModality == BiometricsProtoEnums.MODALITY_FACE;
|
||||
final boolean isFingerprint = mStatsModality == BiometricsProtoEnums.MODALITY_FINGERPRINT;
|
||||
@@ -110,6 +117,10 @@ public abstract class LoggableMonitor {
|
||||
|
||||
protected final void logOnError(Context context, int error, int vendorCode, int targetUserId) {
|
||||
|
||||
if (!mShouldLogMetrics) {
|
||||
return;
|
||||
}
|
||||
|
||||
final long latency = mFirstAcquireTimeMs != 0
|
||||
? (System.currentTimeMillis() - mFirstAcquireTimeMs) : -1;
|
||||
|
||||
@@ -144,6 +155,10 @@ public abstract class LoggableMonitor {
|
||||
|
||||
protected final void logOnAuthenticated(Context context, boolean authenticated,
|
||||
boolean requireConfirmation, int targetUserId, boolean isBiometricPrompt) {
|
||||
if (!mShouldLogMetrics) {
|
||||
return;
|
||||
}
|
||||
|
||||
int authState = FrameworkStatsLog.BIOMETRIC_AUTHENTICATED__STATE__UNKNOWN;
|
||||
if (!authenticated) {
|
||||
authState = FrameworkStatsLog.BIOMETRIC_AUTHENTICATED__STATE__REJECTED;
|
||||
@@ -189,6 +204,10 @@ public abstract class LoggableMonitor {
|
||||
}
|
||||
|
||||
protected final void logOnEnrolled(int targetUserId, long latency, boolean enrollSuccessful) {
|
||||
if (!mShouldLogMetrics) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (DEBUG) {
|
||||
Slog.v(TAG, "Enrolled! Modality: " + mStatsModality
|
||||
+ ", User: " + targetUserId
|
||||
|
||||
@@ -45,7 +45,7 @@ public abstract class RemovalClient<S extends BiometricAuthenticator.Identifier,
|
||||
int sensorId, @NonNull Map<Integer, Long> authenticatorIds, int statsModality) {
|
||||
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
||||
statsModality, BiometricsProtoEnums.ACTION_REMOVE,
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN, true /* shouldLogMetrics */);
|
||||
mBiometricId = biometricId;
|
||||
mBiometricUtils = utils;
|
||||
mAuthenticatorIds = authenticatorIds;
|
||||
|
||||
@@ -27,7 +27,8 @@ public abstract class RevokeChallengeClient<T> extends ClientMonitor<T> {
|
||||
@NonNull IBinder token, @NonNull String owner, int sensorId) {
|
||||
super(context, lazyDaemon, token, null /* listener */, 0 /* userId */, owner,
|
||||
0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN,
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN,
|
||||
true /* shouldLogMetrics */);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -62,7 +62,7 @@ public class FaceEnrollClient extends EnrollClient<ISession> {
|
||||
@Nullable NativeHandle previewSurface, int sensorId, int maxTemplatesPerUser) {
|
||||
super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, opPackageName, utils,
|
||||
timeoutSec, BiometricsProtoEnums.MODALITY_FACE, sensorId,
|
||||
false /* shouldVibrate */);
|
||||
false /* shouldVibrate */, true /* shouldLogMetrics */);
|
||||
mEnrollIgnoreList = getContext().getResources()
|
||||
.getIntArray(R.array.config_face_acquire_enroll_ignorelist);
|
||||
mEnrollIgnoreListVendor = getContext().getResources()
|
||||
|
||||
@@ -38,7 +38,8 @@ class FaceGetAuthenticatorIdClient extends ClientMonitor<ISession> {
|
||||
Map<Integer, Long> authenticatorIds) {
|
||||
super(context, lazyDaemon, null /* token */, null /* listener */, userId, opPackageName,
|
||||
0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_FACE,
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN,
|
||||
true /* shouldLogMetrics */);
|
||||
mAuthenticatorIds = authenticatorIds;
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,8 @@ public class FaceResetLockoutClient extends ClientMonitor<ISession> {
|
||||
@NonNull LockoutResetDispatcher lockoutResetDispatcher) {
|
||||
super(context, lazyDaemon, null /* token */, null /* listener */, userId, owner,
|
||||
0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN,
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN,
|
||||
true /* shouldLogMetrics */);
|
||||
mHardwareAuthToken = HardwareAuthTokenUtils.toHardwareAuthToken(hardwareAuthToken);
|
||||
mLockoutCache = lockoutTracker;
|
||||
mLockoutResetDispatcher = lockoutResetDispatcher;
|
||||
|
||||
@@ -59,7 +59,7 @@ public class FaceEnrollClient extends EnrollClient<IBiometricsFace> {
|
||||
@Nullable NativeHandle surfaceHandle, int sensorId) {
|
||||
super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, owner, utils,
|
||||
timeoutSec, BiometricsProtoEnums.MODALITY_FACE, sensorId,
|
||||
false /* shouldVibrate */);
|
||||
false /* shouldVibrate */, true /* shouldLogMetrics */);
|
||||
mDisabledFeatures = Arrays.copyOf(disabledFeatures, disabledFeatures.length);
|
||||
mSurfaceHandle = surfaceHandle;
|
||||
mEnrollIgnoreList = getContext().getResources()
|
||||
|
||||
@@ -47,7 +47,7 @@ public class FaceGetFeatureClient extends ClientMonitor<IBiometricsFace> {
|
||||
@NonNull String owner, int sensorId, int feature, int faceId) {
|
||||
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
||||
BiometricsProtoEnums.MODALITY_UNKNOWN, BiometricsProtoEnums.ACTION_UNKNOWN,
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN, true /* shouldLogMetrics */);
|
||||
mFeature = feature;
|
||||
mFaceId = faceId;
|
||||
|
||||
|
||||
@@ -42,7 +42,8 @@ public class FaceResetLockoutClient extends ClientMonitor<IBiometricsFace> {
|
||||
@NonNull byte[] hardwareAuthToken) {
|
||||
super(context, lazyDaemon, null /* token */, null /* listener */, userId, owner,
|
||||
0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN,
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN,
|
||||
true /* shouldLogMetrics */);
|
||||
|
||||
mHardwareAuthToken = new ArrayList<>();
|
||||
for (byte b : hardwareAuthToken) {
|
||||
|
||||
@@ -49,7 +49,7 @@ public class FaceSetFeatureClient extends ClientMonitor<IBiometricsFace> {
|
||||
byte[] hardwareAuthToken, int faceId) {
|
||||
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
||||
BiometricsProtoEnums.MODALITY_UNKNOWN, BiometricsProtoEnums.ACTION_UNKNOWN,
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.CLIENT_UNKNOWN, true /* shouldLogMetrics */);
|
||||
mFeature = feature;
|
||||
mEnabled = enabled;
|
||||
mFaceId = faceId;
|
||||
|
||||
@@ -43,7 +43,8 @@ public class FaceUpdateActiveUserClient extends ClientMonitor<IBiometricsFace> {
|
||||
@NonNull Map<Integer, Long> authenticatorIds) {
|
||||
super(context, lazyDaemon, null /* token */, null /* listener */, userId, owner,
|
||||
0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN,
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN,
|
||||
true /* shouldLogMetrics */);
|
||||
mCurrentUserId = currentUserId;
|
||||
mHasEnrolledBiometrics = hasEnrolledBIometrics;
|
||||
mAuthenticatorIds = authenticatorIds;
|
||||
|
||||
@@ -66,10 +66,10 @@ import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.server.ServiceThread;
|
||||
import com.android.server.SystemService;
|
||||
import com.android.server.biometrics.Utils;
|
||||
import com.android.server.biometrics.sensors.BiometricServiceCallback;
|
||||
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
|
||||
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
|
||||
import com.android.server.biometrics.sensors.LockoutTracker;
|
||||
import com.android.server.biometrics.sensors.BiometricServiceCallback;
|
||||
import com.android.server.biometrics.sensors.fingerprint.aidl.FingerprintProvider;
|
||||
import com.android.server.biometrics.sensors.fingerprint.hidl.Fingerprint21;
|
||||
import com.android.server.biometrics.sensors.fingerprint.hidl.Fingerprint21UdfpsMock;
|
||||
@@ -188,7 +188,8 @@ public class FingerprintService extends SystemService implements BiometricServic
|
||||
|
||||
@Override // Binder call
|
||||
public void enroll(final IBinder token, final byte[] hardwareAuthToken, final int userId,
|
||||
final IFingerprintServiceReceiver receiver, final String opPackageName) {
|
||||
final IFingerprintServiceReceiver receiver, final String opPackageName,
|
||||
boolean shouldLogMetrics) {
|
||||
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
|
||||
|
||||
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
|
||||
@@ -198,7 +199,7 @@ public class FingerprintService extends SystemService implements BiometricServic
|
||||
}
|
||||
|
||||
provider.second.scheduleEnroll(provider.first, token, hardwareAuthToken, userId,
|
||||
receiver, opPackageName);
|
||||
receiver, opPackageName, shouldLogMetrics);
|
||||
}
|
||||
|
||||
@Override // Binder call
|
||||
|
||||
@@ -76,7 +76,8 @@ public interface ServiceProvider {
|
||||
@NonNull String opPackageName, long challenge);
|
||||
|
||||
void scheduleEnroll(int sensorId, @NonNull IBinder token, byte[] hardwareAuthToken, int userId,
|
||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName);
|
||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName,
|
||||
boolean shouldLogMetrics);
|
||||
|
||||
void cancelEnrollment(int sensorId, @NonNull IBinder token);
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
Utils.checkPermission(mContext, TEST_BIOMETRIC);
|
||||
|
||||
mProvider.scheduleEnroll(mSensorId, new Binder(), new byte[69], userId, mReceiver,
|
||||
mContext.getOpPackageName());
|
||||
mContext.getOpPackageName(), true /* shouldLogMetrics */);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -51,7 +51,7 @@ class FingerprintDetectClient extends AcquisitionClient<ISession> {
|
||||
int statsClient) {
|
||||
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
||||
BiometricsProtoEnums.MODALITY_FINGERPRINT, BiometricsProtoEnums.ACTION_AUTHENTICATE,
|
||||
statsClient);
|
||||
statsClient, true /* shouldLogMetrics */);
|
||||
mIsStrongBiometric = isStrongBiometric;
|
||||
mUdfpsOverlayController = udfpsOverlayController;
|
||||
}
|
||||
|
||||
@@ -51,10 +51,11 @@ class FingerprintEnrollClient extends EnrollClient<ISession> implements Udfps {
|
||||
@NonNull ClientMonitorCallbackConverter listener, int userId,
|
||||
@NonNull byte[] hardwareAuthToken, @NonNull String owner,
|
||||
@NonNull BiometricUtils<Fingerprint> utils, int sensorId,
|
||||
@Nullable IUdfpsOverlayController udfpsOvelayController, int maxTemplatesPerUser) {
|
||||
@Nullable IUdfpsOverlayController udfpsOvelayController, int maxTemplatesPerUser,
|
||||
boolean shouldLogMetrics) {
|
||||
super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, owner, utils,
|
||||
0 /* timeoutSec */, BiometricsProtoEnums.MODALITY_FINGERPRINT, sensorId,
|
||||
true /* shouldVibrate */);
|
||||
true /* shouldVibrate */, shouldLogMetrics);
|
||||
mUdfpsOverlayController = udfpsOvelayController;
|
||||
mMaxTemplatesPerUser = maxTemplatesPerUser;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,8 @@ class FingerprintGetAuthenticatorIdClient extends ClientMonitor<ISession> {
|
||||
int sensorId, Map<Integer, Long> authenticatorIds) {
|
||||
super(context, lazyDaemon, null /* token */, null /* listener */, userId, owner,
|
||||
0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_FINGERPRINT,
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN,
|
||||
true /* shouldLogMetrics */);
|
||||
mAuthenticatorIds = authenticatorIds;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityTaskManager;
|
||||
import android.app.IActivityTaskManager;
|
||||
import android.app.TaskStackListener;
|
||||
import android.content.Context;
|
||||
import android.content.pm.UserInfo;
|
||||
@@ -348,7 +347,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
||||
@Override
|
||||
public void scheduleEnroll(int sensorId, @NonNull IBinder token, byte[] hardwareAuthToken,
|
||||
int userId, @NonNull IFingerprintServiceReceiver receiver,
|
||||
@NonNull String opPackageName) {
|
||||
@NonNull String opPackageName, boolean shouldLogMetrics) {
|
||||
mHandler.post(() -> {
|
||||
final IFingerprint daemon = getHalInstance();
|
||||
if (daemon == null) {
|
||||
@@ -370,7 +369,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
||||
mSensors.get(sensorId).getLazySession(), token,
|
||||
new ClientMonitorCallbackConverter(receiver), userId, hardwareAuthToken,
|
||||
opPackageName, FingerprintUtils.getInstance(sensorId), sensorId,
|
||||
mUdfpsOverlayController, maxTemplatesPerUser);
|
||||
mUdfpsOverlayController, maxTemplatesPerUser, shouldLogMetrics);
|
||||
scheduleForSensor(sensorId, client, new ClientMonitor.Callback() {
|
||||
@Override
|
||||
public void onClientFinished(@NonNull ClientMonitor<?> clientMonitor,
|
||||
|
||||
@@ -50,7 +50,8 @@ class FingerprintResetLockoutClient extends ClientMonitor<ISession> {
|
||||
@NonNull LockoutResetDispatcher lockoutResetDispatcher) {
|
||||
super(context, lazyDaemon, null /* token */, null /* listener */, userId, owner,
|
||||
0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN,
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN,
|
||||
true /* shouldLogMetrics */);
|
||||
mHardwareAuthToken = HardwareAuthTokenUtils.toHardwareAuthToken(hardwareAuthToken);
|
||||
mLockoutCache = lockoutTracker;
|
||||
mLockoutResetDispatcher = lockoutResetDispatcher;
|
||||
|
||||
@@ -122,7 +122,7 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
Utils.checkPermission(mContext, TEST_BIOMETRIC);
|
||||
|
||||
mFingerprint21.scheduleEnroll(mSensorId, new Binder(), new byte[69], userId, mReceiver,
|
||||
mContext.getOpPackageName());
|
||||
mContext.getOpPackageName(), true/* shouldLogMetrics */);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityTaskManager;
|
||||
import android.app.IActivityTaskManager;
|
||||
import android.app.SynchronousUserSwitchObserver;
|
||||
import android.app.TaskStackListener;
|
||||
import android.app.UserSwitchObserver;
|
||||
@@ -548,14 +547,16 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||
@Override
|
||||
public void scheduleEnroll(int sensorId, @NonNull IBinder token,
|
||||
@NonNull byte[] hardwareAuthToken, int userId,
|
||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName) {
|
||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName,
|
||||
boolean shouldLogMetrics) {
|
||||
mHandler.post(() -> {
|
||||
scheduleUpdateActiveUserWithoutHandler(userId);
|
||||
|
||||
final FingerprintEnrollClient client = new FingerprintEnrollClient(mContext,
|
||||
mLazyDaemon, token, new ClientMonitorCallbackConverter(receiver), userId,
|
||||
hardwareAuthToken, opPackageName, FingerprintUtils.getLegacyInstance(mSensorId),
|
||||
ENROLL_TIMEOUT_SEC, mSensorProperties.sensorId, mUdfpsOverlayController);
|
||||
ENROLL_TIMEOUT_SEC, mSensorProperties.sensorId, mUdfpsOverlayController,
|
||||
shouldLogMetrics);
|
||||
mScheduler.scheduleClientMonitor(client, new ClientMonitor.Callback() {
|
||||
@Override
|
||||
public void onClientFinished(@NonNull ClientMonitor<?> clientMonitor,
|
||||
|
||||
@@ -56,7 +56,7 @@ class FingerprintDetectClient extends AcquisitionClient<IBiometricsFingerprint>
|
||||
boolean isStrongBiometric, int statsClient) {
|
||||
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
||||
BiometricsProtoEnums.MODALITY_FINGERPRINT, BiometricsProtoEnums.ACTION_AUTHENTICATE,
|
||||
statsClient);
|
||||
statsClient, true /* shouldLogMetrics */);
|
||||
mUdfpsOverlayController = udfpsOverlayController;
|
||||
mIsStrongBiometric = isStrongBiometric;
|
||||
}
|
||||
|
||||
@@ -52,10 +52,11 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint
|
||||
@NonNull ClientMonitorCallbackConverter listener, int userId,
|
||||
@NonNull byte[] hardwareAuthToken, @NonNull String owner,
|
||||
@NonNull BiometricUtils<Fingerprint> utils, int timeoutSec, int sensorId,
|
||||
@Nullable IUdfpsOverlayController udfpsOverlayController) {
|
||||
@Nullable IUdfpsOverlayController udfpsOverlayController,
|
||||
boolean shouldLogMetrics) {
|
||||
super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, owner, utils,
|
||||
timeoutSec, BiometricsProtoEnums.MODALITY_FINGERPRINT, sensorId,
|
||||
true /* shouldVibrate */);
|
||||
true /* shouldVibrate */, shouldLogMetrics);
|
||||
mUdfpsOverlayController = udfpsOverlayController;
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,8 @@ public class FingerprintUpdateActiveUserClient extends ClientMonitor<IBiometrics
|
||||
@NonNull Map<Integer, Long> authenticatorIds) {
|
||||
super(context, lazyDaemon, null /* token */, null /* listener */, userId, owner,
|
||||
0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN,
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN,
|
||||
true /* shouldLogMetrics */);
|
||||
mCurrentUserId = currentUserId;
|
||||
mHasEnrolledBiometrics = hasEnrolledBiometrics;
|
||||
mAuthenticatorIds = authenticatorIds;
|
||||
|
||||
@@ -218,7 +218,7 @@ public class BiometricSchedulerTest {
|
||||
@NonNull LazyDaemon<Object> lazyDaemon, int cookie) {
|
||||
super(context, lazyDaemon, token /* token */, null /* listener */, 0 /* userId */,
|
||||
TAG, cookie, TEST_SENSOR_ID, 0 /* statsModality */,
|
||||
0 /* statsAction */, 0 /* statsClient */);
|
||||
0 /* statsAction */, 0 /* statsClient */, true /* shouldLogMetrics */);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user