Loading services/core/java/com/android/server/biometrics/sensors/InvalidationClient.java +15 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ import android.annotation.NonNull; import android.content.Context; import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.biometrics.BiometricsProtoEnums; import android.hardware.biometrics.IInvalidationCallback; import android.os.RemoteException; import android.util.Slog; import java.util.Map; Loading @@ -30,22 +33,29 @@ import java.util.Map; public abstract class InvalidationClient<S extends BiometricAuthenticator.Identifier, T> extends ClientMonitor<T> { private final BiometricUtils<S> mUtils; private final Map<Integer, Long> mAuthenticatorIds; private static final String TAG = "InvalidationClient"; @NonNull private final Map<Integer, Long> mAuthenticatorIds; @NonNull private final IInvalidationCallback mInvalidationCallback; public InvalidationClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon, int userId, int sensorId, @NonNull BiometricUtils<S> utils, @NonNull Map<Integer, Long> authenticatorIds) { int userId, int sensorId, @NonNull Map<Integer, Long> authenticatorIds, @NonNull IInvalidationCallback callback) { super(context, lazyDaemon, null /* token */, null /* listener */, userId, context.getOpPackageName(), 0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN, BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN); mUtils = utils; mAuthenticatorIds = authenticatorIds; mInvalidationCallback = callback; } public void onAuthenticatorIdInvalidated(long newAuthenticatorId) { mAuthenticatorIds.put(getTargetUserId(), newAuthenticatorId); try { mInvalidationCallback.onCompleted(); } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); } mCallback.onClientFinished(this, true /* success */); } Loading services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceInvalidationClient.java +3 −3 Original line number Diff line number Diff line Loading @@ -18,13 +18,13 @@ package com.android.server.biometrics.sensors.face.aidl; import android.annotation.NonNull; import android.content.Context; import android.hardware.biometrics.IInvalidationCallback; import android.hardware.biometrics.face.ISession; import android.hardware.face.Face; import android.os.RemoteException; import android.util.Slog; import com.android.server.biometrics.sensors.InvalidationClient; import com.android.server.biometrics.sensors.face.FaceUtils; import java.util.Map; Loading @@ -33,8 +33,8 @@ public class FaceInvalidationClient extends InvalidationClient<Face, ISession> { public FaceInvalidationClient(@NonNull Context context, @NonNull LazyDaemon<ISession> lazyDaemon, int userId, int sensorId, @NonNull FaceUtils utils, @NonNull Map<Integer, Long> authenticatorIds) { super(context, lazyDaemon, userId, sensorId, utils, authenticatorIds); @NonNull Map<Integer, Long> authenticatorIds, @NonNull IInvalidationCallback callback) { super(context, lazyDaemon, userId, sensorId, authenticatorIds, callback); } @Override Loading services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java +27 −1 Original line number Diff line number Diff line Loading @@ -20,10 +20,10 @@ 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; import android.hardware.biometrics.IInvalidationCallback; import android.hardware.biometrics.ITestSession; import android.hardware.biometrics.face.IFace; import android.hardware.biometrics.face.SensorProps; Loading Loading @@ -268,6 +268,32 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider { return FaceUtils.getInstance(sensorId).getBiometricsForUser(mContext, userId); } @Override public void scheduleInvalidateAuthenticatorId(int sensorId, int userId, @NonNull IInvalidationCallback callback) { mHandler.post(() -> { final IFace daemon = getHalInstance(); if (daemon == null) { Slog.e(getTag(), "Null daemon during scheduleInvalidateAuthenticatorId: " + sensorId); return; } try { if (!mSensors.get(sensorId).hasSessionForUser(userId)) { createNewSessionWithoutHandler(daemon, sensorId, userId); } final FaceInvalidationClient client = new FaceInvalidationClient(mContext, mSensors.get(sensorId).getLazySession(), userId, sensorId, mSensors.get(sensorId).getAuthenticatorIds(), callback); mSensors.get(sensorId).getScheduler().scheduleClientMonitor(client); } catch (RemoteException e) { Slog.e(getTag(), "Remote exception", e); } }); } @Override public int getLockoutModeForUser(int sensorId, int userId) { return mSensors.get(sensorId).getLockoutCache().getLockoutModeForUser(userId); Loading services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java +11 −1 Original line number Diff line number Diff line Loading @@ -376,7 +376,17 @@ public class Sensor implements IBinder.DeathRecipient { @Override public void onAuthenticatorIdInvalidated(long newAuthenticatorId) { // TODO(b/159667191) mHandler.post(() -> { final ClientMonitor<?> client = mScheduler.getCurrentClient(); if (!(client instanceof FaceInvalidationClient)) { Slog.e(mTag, "onAuthenticatorIdInvalidated for wrong consumer: " + Utils.getClientName(client)); return; } final FaceInvalidationClient invalidationClient = (FaceInvalidationClient) client; invalidationClient.onAuthenticatorIdInvalidated(newAuthenticatorId); }); } } Loading services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInvalidationClient.java +3 −3 Original line number Diff line number Diff line Loading @@ -18,13 +18,13 @@ package com.android.server.biometrics.sensors.fingerprint.aidl; import android.annotation.NonNull; import android.content.Context; import android.hardware.biometrics.IInvalidationCallback; import android.hardware.biometrics.fingerprint.ISession; import android.hardware.fingerprint.Fingerprint; import android.os.RemoteException; import android.util.Slog; import com.android.server.biometrics.sensors.InvalidationClient; import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils; import java.util.Map; Loading @@ -33,8 +33,8 @@ public class FingerprintInvalidationClient extends InvalidationClient<Fingerprin public FingerprintInvalidationClient(@NonNull Context context, @NonNull LazyDaemon<ISession> lazyDaemon, int userId, int sensorId, @NonNull FingerprintUtils utils, @NonNull Map<Integer, Long> authenticatorIds) { super(context, lazyDaemon, userId, sensorId, utils, authenticatorIds); @NonNull Map<Integer, Long> authenticatorIds, @NonNull IInvalidationCallback callback) { super(context, lazyDaemon, userId, sensorId, authenticatorIds, callback); } @Override Loading Loading
services/core/java/com/android/server/biometrics/sensors/InvalidationClient.java +15 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ import android.annotation.NonNull; import android.content.Context; import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.biometrics.BiometricsProtoEnums; import android.hardware.biometrics.IInvalidationCallback; import android.os.RemoteException; import android.util.Slog; import java.util.Map; Loading @@ -30,22 +33,29 @@ import java.util.Map; public abstract class InvalidationClient<S extends BiometricAuthenticator.Identifier, T> extends ClientMonitor<T> { private final BiometricUtils<S> mUtils; private final Map<Integer, Long> mAuthenticatorIds; private static final String TAG = "InvalidationClient"; @NonNull private final Map<Integer, Long> mAuthenticatorIds; @NonNull private final IInvalidationCallback mInvalidationCallback; public InvalidationClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon, int userId, int sensorId, @NonNull BiometricUtils<S> utils, @NonNull Map<Integer, Long> authenticatorIds) { int userId, int sensorId, @NonNull Map<Integer, Long> authenticatorIds, @NonNull IInvalidationCallback callback) { super(context, lazyDaemon, null /* token */, null /* listener */, userId, context.getOpPackageName(), 0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN, BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN); mUtils = utils; mAuthenticatorIds = authenticatorIds; mInvalidationCallback = callback; } public void onAuthenticatorIdInvalidated(long newAuthenticatorId) { mAuthenticatorIds.put(getTargetUserId(), newAuthenticatorId); try { mInvalidationCallback.onCompleted(); } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); } mCallback.onClientFinished(this, true /* success */); } Loading
services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceInvalidationClient.java +3 −3 Original line number Diff line number Diff line Loading @@ -18,13 +18,13 @@ package com.android.server.biometrics.sensors.face.aidl; import android.annotation.NonNull; import android.content.Context; import android.hardware.biometrics.IInvalidationCallback; import android.hardware.biometrics.face.ISession; import android.hardware.face.Face; import android.os.RemoteException; import android.util.Slog; import com.android.server.biometrics.sensors.InvalidationClient; import com.android.server.biometrics.sensors.face.FaceUtils; import java.util.Map; Loading @@ -33,8 +33,8 @@ public class FaceInvalidationClient extends InvalidationClient<Face, ISession> { public FaceInvalidationClient(@NonNull Context context, @NonNull LazyDaemon<ISession> lazyDaemon, int userId, int sensorId, @NonNull FaceUtils utils, @NonNull Map<Integer, Long> authenticatorIds) { super(context, lazyDaemon, userId, sensorId, utils, authenticatorIds); @NonNull Map<Integer, Long> authenticatorIds, @NonNull IInvalidationCallback callback) { super(context, lazyDaemon, userId, sensorId, authenticatorIds, callback); } @Override Loading
services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java +27 −1 Original line number Diff line number Diff line Loading @@ -20,10 +20,10 @@ 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; import android.hardware.biometrics.IInvalidationCallback; import android.hardware.biometrics.ITestSession; import android.hardware.biometrics.face.IFace; import android.hardware.biometrics.face.SensorProps; Loading Loading @@ -268,6 +268,32 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider { return FaceUtils.getInstance(sensorId).getBiometricsForUser(mContext, userId); } @Override public void scheduleInvalidateAuthenticatorId(int sensorId, int userId, @NonNull IInvalidationCallback callback) { mHandler.post(() -> { final IFace daemon = getHalInstance(); if (daemon == null) { Slog.e(getTag(), "Null daemon during scheduleInvalidateAuthenticatorId: " + sensorId); return; } try { if (!mSensors.get(sensorId).hasSessionForUser(userId)) { createNewSessionWithoutHandler(daemon, sensorId, userId); } final FaceInvalidationClient client = new FaceInvalidationClient(mContext, mSensors.get(sensorId).getLazySession(), userId, sensorId, mSensors.get(sensorId).getAuthenticatorIds(), callback); mSensors.get(sensorId).getScheduler().scheduleClientMonitor(client); } catch (RemoteException e) { Slog.e(getTag(), "Remote exception", e); } }); } @Override public int getLockoutModeForUser(int sensorId, int userId) { return mSensors.get(sensorId).getLockoutCache().getLockoutModeForUser(userId); Loading
services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java +11 −1 Original line number Diff line number Diff line Loading @@ -376,7 +376,17 @@ public class Sensor implements IBinder.DeathRecipient { @Override public void onAuthenticatorIdInvalidated(long newAuthenticatorId) { // TODO(b/159667191) mHandler.post(() -> { final ClientMonitor<?> client = mScheduler.getCurrentClient(); if (!(client instanceof FaceInvalidationClient)) { Slog.e(mTag, "onAuthenticatorIdInvalidated for wrong consumer: " + Utils.getClientName(client)); return; } final FaceInvalidationClient invalidationClient = (FaceInvalidationClient) client; invalidationClient.onAuthenticatorIdInvalidated(newAuthenticatorId); }); } } Loading
services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInvalidationClient.java +3 −3 Original line number Diff line number Diff line Loading @@ -18,13 +18,13 @@ package com.android.server.biometrics.sensors.fingerprint.aidl; import android.annotation.NonNull; import android.content.Context; import android.hardware.biometrics.IInvalidationCallback; import android.hardware.biometrics.fingerprint.ISession; import android.hardware.fingerprint.Fingerprint; import android.os.RemoteException; import android.util.Slog; import com.android.server.biometrics.sensors.InvalidationClient; import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils; import java.util.Map; Loading @@ -33,8 +33,8 @@ public class FingerprintInvalidationClient extends InvalidationClient<Fingerprin public FingerprintInvalidationClient(@NonNull Context context, @NonNull LazyDaemon<ISession> lazyDaemon, int userId, int sensorId, @NonNull FingerprintUtils utils, @NonNull Map<Integer, Long> authenticatorIds) { super(context, lazyDaemon, userId, sensorId, utils, authenticatorIds); @NonNull Map<Integer, Long> authenticatorIds, @NonNull IInvalidationCallback callback) { super(context, lazyDaemon, userId, sensorId, authenticatorIds, callback); } @Override Loading