Loading services/core/java/com/android/server/biometrics/sensors/face/FaceService.java +6 −7 Original line number Diff line number Diff line Loading @@ -393,15 +393,14 @@ public class FaceService extends SystemService implements BiometricServiceCallba final IFaceServiceReceiver receiver, final String opPackageName) { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); final Pair<Integer, ServiceProvider> provider = getSingleProvider(); if (provider == null) { Slog.w(TAG, "Null provider for removeAll"); return; } provider.second.scheduleRemoveAll(provider.first, token, userId, receiver, for (ServiceProvider provider : mServiceProviders) { List<FaceSensorPropertiesInternal> props = provider.getSensorProperties(); for (FaceSensorPropertiesInternal prop : props) { provider.scheduleRemoveAll(prop.sensorId, token, userId, receiver, opPackageName); } } } @Override // Binder call public void addLockoutResetCallback(final IBiometricServiceLockoutResetCallback callback, Loading services/core/java/com/android/server/biometrics/sensors/face/hidl/TestHal.java +6 −2 Original line number Diff line number Diff line Loading @@ -23,11 +23,11 @@ import android.hardware.biometrics.face.V1_0.IBiometricsFaceClientCallback; import android.hardware.biometrics.face.V1_0.OptionalBool; import android.hardware.biometrics.face.V1_0.OptionalUint64; import android.hardware.biometrics.face.V1_0.Status; import android.os.NativeHandle; import android.os.RemoteException; import android.util.Slog; import java.util.ArrayList; import java.util.Arrays; public class TestHal extends IBiometricsFace.Stub { private static final String TAG = "face.hidl.TestHal"; Loading Loading @@ -107,8 +107,12 @@ public class TestHal extends IBiometricsFace.Stub { } @Override public int remove(int faceId) { public int remove(int faceId) throws RemoteException { Slog.w(TAG, "remove"); if (mCallback != null) { mCallback.onRemoved(0 /* deviceId */, new ArrayList<Integer>(Arrays.asList(faceId)), 0 /* userId */); } return 0; } Loading services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java +6 −6 Original line number Diff line number Diff line Loading @@ -506,14 +506,14 @@ public class FingerprintService extends SystemService implements BiometricServic final IFingerprintServiceReceiver receiver, final String opPackageName) { Utils.checkPermission(getContext(), MANAGE_FINGERPRINT); final Pair<Integer, ServiceProvider> provider = getSingleProvider(); if (provider == null) { Slog.w(TAG, "Null provider for removeAll"); return; } provider.second.scheduleRemoveAll(provider.first, token, receiver, userId, for (ServiceProvider provider : mServiceProviders) { List<FingerprintSensorPropertiesInternal> props = provider.getSensorProperties(); for (FingerprintSensorPropertiesInternal prop : props) { provider.scheduleRemoveAll(prop.sensorId, token, receiver, userId, opPackageName); } } } @Override // Binder call public void addLockoutResetCallback(final IBiometricServiceLockoutResetCallback callback, Loading services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java +3 −1 Original line number Diff line number Diff line Loading @@ -527,7 +527,9 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider // Fingerprint2.1 keeps track of lockout in the framework. Let's just do it on the handler // thread. mHandler.post(() -> { mLockoutTracker.resetFailedAttemptsForUser(true /* clearAttemptCounter */, userId); final FingerprintResetLockoutClient client = new FingerprintResetLockoutClient(mContext, userId, mContext.getOpPackageName(), sensorId, mLockoutTracker); mScheduler.scheduleClientMonitor(client); }); } Loading services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintResetLockoutClient.java 0 → 100644 +54 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.biometrics.sensors.fingerprint.hidl; import android.annotation.NonNull; import android.content.Context; import android.hardware.biometrics.BiometricsProtoEnums; import com.android.server.biometrics.BiometricsProto; import com.android.server.biometrics.sensors.BaseClientMonitor; /** * Clears lockout, which is handled in the framework (and not the HAL) for the * IBiometricsFingerprint@2.1 interface. */ public class FingerprintResetLockoutClient extends BaseClientMonitor { @NonNull final LockoutFrameworkImpl mLockoutTracker; public FingerprintResetLockoutClient(@NonNull Context context, int userId, @NonNull String owner, int sensorId, @NonNull LockoutFrameworkImpl lockoutTracker) { super(context, null /* token */, null /* listener */, userId, owner, 0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN, BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN); mLockoutTracker = lockoutTracker; } @Override public void start(@NonNull Callback callback) { super.start(callback); mLockoutTracker.resetFailedAttemptsForUser(true /* clearAttemptCounter */, getTargetUserId()); callback.onClientFinished(this, true /* success */); } @Override public int getProtoEnum() { return BiometricsProto.CM_RESET_LOCKOUT; } } Loading
services/core/java/com/android/server/biometrics/sensors/face/FaceService.java +6 −7 Original line number Diff line number Diff line Loading @@ -393,15 +393,14 @@ public class FaceService extends SystemService implements BiometricServiceCallba final IFaceServiceReceiver receiver, final String opPackageName) { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); final Pair<Integer, ServiceProvider> provider = getSingleProvider(); if (provider == null) { Slog.w(TAG, "Null provider for removeAll"); return; } provider.second.scheduleRemoveAll(provider.first, token, userId, receiver, for (ServiceProvider provider : mServiceProviders) { List<FaceSensorPropertiesInternal> props = provider.getSensorProperties(); for (FaceSensorPropertiesInternal prop : props) { provider.scheduleRemoveAll(prop.sensorId, token, userId, receiver, opPackageName); } } } @Override // Binder call public void addLockoutResetCallback(final IBiometricServiceLockoutResetCallback callback, Loading
services/core/java/com/android/server/biometrics/sensors/face/hidl/TestHal.java +6 −2 Original line number Diff line number Diff line Loading @@ -23,11 +23,11 @@ import android.hardware.biometrics.face.V1_0.IBiometricsFaceClientCallback; import android.hardware.biometrics.face.V1_0.OptionalBool; import android.hardware.biometrics.face.V1_0.OptionalUint64; import android.hardware.biometrics.face.V1_0.Status; import android.os.NativeHandle; import android.os.RemoteException; import android.util.Slog; import java.util.ArrayList; import java.util.Arrays; public class TestHal extends IBiometricsFace.Stub { private static final String TAG = "face.hidl.TestHal"; Loading Loading @@ -107,8 +107,12 @@ public class TestHal extends IBiometricsFace.Stub { } @Override public int remove(int faceId) { public int remove(int faceId) throws RemoteException { Slog.w(TAG, "remove"); if (mCallback != null) { mCallback.onRemoved(0 /* deviceId */, new ArrayList<Integer>(Arrays.asList(faceId)), 0 /* userId */); } return 0; } Loading
services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java +6 −6 Original line number Diff line number Diff line Loading @@ -506,14 +506,14 @@ public class FingerprintService extends SystemService implements BiometricServic final IFingerprintServiceReceiver receiver, final String opPackageName) { Utils.checkPermission(getContext(), MANAGE_FINGERPRINT); final Pair<Integer, ServiceProvider> provider = getSingleProvider(); if (provider == null) { Slog.w(TAG, "Null provider for removeAll"); return; } provider.second.scheduleRemoveAll(provider.first, token, receiver, userId, for (ServiceProvider provider : mServiceProviders) { List<FingerprintSensorPropertiesInternal> props = provider.getSensorProperties(); for (FingerprintSensorPropertiesInternal prop : props) { provider.scheduleRemoveAll(prop.sensorId, token, receiver, userId, opPackageName); } } } @Override // Binder call public void addLockoutResetCallback(final IBiometricServiceLockoutResetCallback callback, Loading
services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java +3 −1 Original line number Diff line number Diff line Loading @@ -527,7 +527,9 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider // Fingerprint2.1 keeps track of lockout in the framework. Let's just do it on the handler // thread. mHandler.post(() -> { mLockoutTracker.resetFailedAttemptsForUser(true /* clearAttemptCounter */, userId); final FingerprintResetLockoutClient client = new FingerprintResetLockoutClient(mContext, userId, mContext.getOpPackageName(), sensorId, mLockoutTracker); mScheduler.scheduleClientMonitor(client); }); } Loading
services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintResetLockoutClient.java 0 → 100644 +54 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.biometrics.sensors.fingerprint.hidl; import android.annotation.NonNull; import android.content.Context; import android.hardware.biometrics.BiometricsProtoEnums; import com.android.server.biometrics.BiometricsProto; import com.android.server.biometrics.sensors.BaseClientMonitor; /** * Clears lockout, which is handled in the framework (and not the HAL) for the * IBiometricsFingerprint@2.1 interface. */ public class FingerprintResetLockoutClient extends BaseClientMonitor { @NonNull final LockoutFrameworkImpl mLockoutTracker; public FingerprintResetLockoutClient(@NonNull Context context, int userId, @NonNull String owner, int sensorId, @NonNull LockoutFrameworkImpl lockoutTracker) { super(context, null /* token */, null /* listener */, userId, owner, 0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN, BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN); mLockoutTracker = lockoutTracker; } @Override public void start(@NonNull Callback callback) { super.start(callback); mLockoutTracker.resetFailedAttemptsForUser(true /* clearAttemptCounter */, getTargetUserId()); callback.onClientFinished(this, true /* success */); } @Override public int getProtoEnum() { return BiometricsProto.CM_RESET_LOCKOUT; } }