Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ac525d6 authored by Diya Bera's avatar Diya Bera Committed by Android (Google) Code Review
Browse files

Merge "Update AIDL and HIDL utils" into main

parents 992ffb63 03325410
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -80,13 +80,16 @@ public class AidlResponseHandler extends ISessionCallback.Stub {
    private final AuthSessionCoordinator mAuthSessionCoordinator;
    private final AuthSessionCoordinator mAuthSessionCoordinator;
    @NonNull
    @NonNull
    private final AidlResponseHandlerCallback mAidlResponseHandlerCallback;
    private final AidlResponseHandlerCallback mAidlResponseHandlerCallback;
    @NonNull
    private final FaceUtils mBiometricUtils;


    public AidlResponseHandler(@NonNull Context context,
    public AidlResponseHandler(@NonNull Context context,
            @NonNull BiometricScheduler scheduler, int sensorId, int userId,
            @NonNull BiometricScheduler scheduler, int sensorId, int userId,
            @NonNull LockoutTracker lockoutTracker,
            @NonNull LockoutTracker lockoutTracker,
            @NonNull LockoutResetDispatcher lockoutResetDispatcher,
            @NonNull LockoutResetDispatcher lockoutResetDispatcher,
            @NonNull AuthSessionCoordinator authSessionCoordinator,
            @NonNull AuthSessionCoordinator authSessionCoordinator,
            @NonNull AidlResponseHandlerCallback aidlResponseHandlerCallback) {
            @NonNull AidlResponseHandlerCallback aidlResponseHandlerCallback,
            @NonNull FaceUtils biometricUtils) {
        mContext = context;
        mContext = context;
        mScheduler = scheduler;
        mScheduler = scheduler;
        mSensorId = sensorId;
        mSensorId = sensorId;
@@ -95,6 +98,7 @@ public class AidlResponseHandler extends ISessionCallback.Stub {
        mLockoutResetDispatcher = lockoutResetDispatcher;
        mLockoutResetDispatcher = lockoutResetDispatcher;
        mAuthSessionCoordinator = authSessionCoordinator;
        mAuthSessionCoordinator = authSessionCoordinator;
        mAidlResponseHandlerCallback = aidlResponseHandlerCallback;
        mAidlResponseHandlerCallback = aidlResponseHandlerCallback;
        mBiometricUtils = biometricUtils;
    }
    }


    @Override
    @Override
@@ -167,8 +171,7 @@ public class AidlResponseHandler extends ISessionCallback.Stub {
        } else {
        } else {
            currentUserId = client.getTargetUserId();
            currentUserId = client.getTargetUserId();
        }
        }
        final CharSequence name = FaceUtils.getInstance(mSensorId)
        final CharSequence name = mBiometricUtils.getUniqueName(mContext, currentUserId);
                .getUniqueName(mContext, currentUserId);
        final Face face = new Face(name, enrollmentId, mSensorId);
        final Face face = new Face(name, enrollmentId, mSensorId);


        handleResponse(FaceEnrollClient.class, (c) -> {
        handleResponse(FaceEnrollClient.class, (c) -> {
+5 −3
Original line number Original line Diff line number Diff line
@@ -60,7 +60,6 @@ import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
import com.android.server.biometrics.sensors.ClientMonitorCompositeCallback;
import com.android.server.biometrics.sensors.ClientMonitorCompositeCallback;
import com.android.server.biometrics.sensors.EnrollClient;
import com.android.server.biometrics.sensors.EnrollClient;
import com.android.server.biometrics.sensors.face.FaceService;
import com.android.server.biometrics.sensors.face.FaceService;
import com.android.server.biometrics.sensors.face.FaceUtils;


import java.io.IOException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.ArrayList;
@@ -85,6 +84,7 @@ public class FaceEnrollClient extends EnrollClient<AidlSession> {
    private final int mMaxTemplatesPerUser;
    private final int mMaxTemplatesPerUser;
    private final boolean mDebugConsent;
    private final boolean mDebugConsent;
    private final @android.hardware.face.FaceEnrollOptions.EnrollReason int mEnrollReason;
    private final @android.hardware.face.FaceEnrollOptions.EnrollReason int mEnrollReason;
    private final BiometricUtils<Face> mBiometricUtils;


    private final ClientMonitorCallback mPreviewHandleDeleterCallback =
    private final ClientMonitorCallback mPreviewHandleDeleterCallback =
            new ClientMonitorCallback() {
            new ClientMonitorCallback() {
@@ -107,7 +107,8 @@ public class FaceEnrollClient extends EnrollClient<AidlSession> {
            @NonNull BiometricLogger logger, @NonNull BiometricContext biometricContext,
            @NonNull BiometricLogger logger, @NonNull BiometricContext biometricContext,
            int maxTemplatesPerUser, boolean debugConsent,
            int maxTemplatesPerUser, boolean debugConsent,
            android.hardware.face.FaceEnrollOptions options,
            android.hardware.face.FaceEnrollOptions options,
            @NonNull AuthenticationStateListeners authenticationStateListeners) {
            @NonNull AuthenticationStateListeners authenticationStateListeners,
            @NonNull BiometricUtils<Face> biometricUtils) {
        super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, opPackageName, utils,
        super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, opPackageName, utils,
                timeoutSec, sensorId, false /* shouldVibrate */, logger, biometricContext,
                timeoutSec, sensorId, false /* shouldVibrate */, logger, biometricContext,
                BiometricFaceConstants.reasonToMetric(options.getEnrollReason()));
                BiometricFaceConstants.reasonToMetric(options.getEnrollReason()));
@@ -122,6 +123,7 @@ public class FaceEnrollClient extends EnrollClient<AidlSession> {
        mDebugConsent = debugConsent;
        mDebugConsent = debugConsent;
        mDisabledFeatures = disabledFeatures;
        mDisabledFeatures = disabledFeatures;
        mPreviewSurface = previewSurface;
        mPreviewSurface = previewSurface;
        mBiometricUtils = biometricUtils;
        Slog.w(TAG, "EnrollOptions "
        Slog.w(TAG, "EnrollOptions "
                + android.hardware.face.FaceEnrollOptions.enrollReasonToString(
                + android.hardware.face.FaceEnrollOptions.enrollReasonToString(
                        options.getEnrollReason()));
                        options.getEnrollReason()));
@@ -144,7 +146,7 @@ public class FaceEnrollClient extends EnrollClient<AidlSession> {


    @Override
    @Override
    protected boolean hasReachedEnrollmentLimit() {
    protected boolean hasReachedEnrollmentLimit() {
        return FaceUtils.getInstance(getSensorId()).getBiometricsForUser(getContext(),
        return mBiometricUtils.getBiometricsForUser(getContext(),
                getTargetUserId()).size() >= mMaxTemplatesPerUser;
                getTargetUserId()).size() >= mMaxTemplatesPerUser;
    }
    }


+1 −2
Original line number Original line Diff line number Diff line
@@ -30,7 +30,6 @@ import com.android.server.biometrics.sensors.BiometricUtils;
import com.android.server.biometrics.sensors.InternalCleanupClient;
import com.android.server.biometrics.sensors.InternalCleanupClient;
import com.android.server.biometrics.sensors.InternalEnumerateClient;
import com.android.server.biometrics.sensors.InternalEnumerateClient;
import com.android.server.biometrics.sensors.RemovalClient;
import com.android.server.biometrics.sensors.RemovalClient;
import com.android.server.biometrics.sensors.face.FaceUtils;


import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Map;
@@ -75,7 +74,7 @@ public class FaceInternalCleanupClient extends InternalCleanupClient<Face, AidlS
    @Override
    @Override
    protected void onAddUnknownTemplate(int userId,
    protected void onAddUnknownTemplate(int userId,
            @NonNull BiometricAuthenticator.Identifier identifier) {
            @NonNull BiometricAuthenticator.Identifier identifier) {
        FaceUtils.getInstance(getSensorId()).addBiometricForUser(
        mBiometricUtils.addBiometricForUser(
                getContext(), getTargetUserId(), (Face) identifier);
                getContext(), getTargetUserId(), (Face) identifier);
    }
    }


+15 −14
Original line number Original line Diff line number Diff line
@@ -72,7 +72,6 @@ import com.android.server.biometrics.sensors.LockoutResetDispatcher;
import com.android.server.biometrics.sensors.LockoutTracker;
import com.android.server.biometrics.sensors.LockoutTracker;
import com.android.server.biometrics.sensors.PerformanceTracker;
import com.android.server.biometrics.sensors.PerformanceTracker;
import com.android.server.biometrics.sensors.SensorList;
import com.android.server.biometrics.sensors.SensorList;
import com.android.server.biometrics.sensors.face.FaceUtils;
import com.android.server.biometrics.sensors.face.ServiceProvider;
import com.android.server.biometrics.sensors.face.ServiceProvider;
import com.android.server.biometrics.sensors.face.UsageStats;
import com.android.server.biometrics.sensors.face.UsageStats;
import com.android.server.biometrics.sensors.face.hidl.HidlToAidlSensorAdapter;
import com.android.server.biometrics.sensors.face.hidl.HidlToAidlSensorAdapter;
@@ -326,8 +325,8 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
        }
        }


        if (Build.isDebuggable()) {
        if (Build.isDebuggable()) {
            BiometricUtils<Face> utils = FaceUtils.getInstance(
            BiometricUtils<Face> utils = mFaceSensors.get(
                    mFaceSensors.keyAt(0));
                    mFaceSensors.keyAt(0)).getFaceUtilsInstance();
            for (UserInfo user : UserManager.get(mContext).getAliveUsers()) {
            for (UserInfo user : UserManager.get(mContext).getAliveUsers()) {
                List<Face> enrollments = utils.getBiometricsForUser(mContext, user.id);
                List<Face> enrollments = utils.getBiometricsForUser(mContext, user.id);
                Slog.d(getTag(), "Expecting enrollments for user " + user.id + ": "
                Slog.d(getTag(), "Expecting enrollments for user " + user.id + ": "
@@ -386,7 +385,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
                    new InvalidationRequesterClient<>(mContext, userId, sensorId,
                    new InvalidationRequesterClient<>(mContext, userId, sensorId,
                            BiometricLogger.ofUnknown(mContext),
                            BiometricLogger.ofUnknown(mContext),
                            mBiometricContext,
                            mBiometricContext,
                            FaceUtils.getInstance(sensorId));
                            mFaceSensors.get(sensorId).getFaceUtilsInstance());
            scheduleForSensor(sensorId, client);
            scheduleForSensor(sensorId, client);
        });
        });
    }
    }
@@ -415,7 +414,8 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
    @NonNull
    @NonNull
    @Override
    @Override
    public List<Face> getEnrolledFaces(int sensorId, int userId) {
    public List<Face> getEnrolledFaces(int sensorId, int userId) {
        return FaceUtils.getInstance(sensorId).getBiometricsForUser(mContext, userId);
        return mFaceSensors.get(sensorId).getFaceUtilsInstance()
                .getBiometricsForUser(mContext, userId);
    }
    }


    @Override
    @Override
@@ -497,13 +497,14 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
            final FaceEnrollClient client = new FaceEnrollClient(mContext,
            final FaceEnrollClient client = new FaceEnrollClient(mContext,
                    mFaceSensors.get(sensorId).getLazySession(), token,
                    mFaceSensors.get(sensorId).getLazySession(), token,
                    new ClientMonitorCallbackConverter(receiver), userId, hardwareAuthToken,
                    new ClientMonitorCallbackConverter(receiver), userId, hardwareAuthToken,
                    opPackageName, id, FaceUtils.getInstance(sensorId), disabledFeatures,
                    opPackageName, id, mFaceSensors.get(sensorId).getFaceUtilsInstance(),
                    ENROLL_TIMEOUT_SEC, previewSurface, sensorId,
                    disabledFeatures, ENROLL_TIMEOUT_SEC, previewSurface, sensorId,
                    createLogger(BiometricsProtoEnums.ACTION_ENROLL,
                    createLogger(BiometricsProtoEnums.ACTION_ENROLL,
                            BiometricsProtoEnums.CLIENT_UNKNOWN,
                            BiometricsProtoEnums.CLIENT_UNKNOWN,
                            mAuthenticationStatsCollector),
                            mAuthenticationStatsCollector),
                    mBiometricContext, maxTemplatesPerUser, debugConsent, options,
                    mBiometricContext, maxTemplatesPerUser, debugConsent, options,
                    mAuthenticationStateListeners);
                    mAuthenticationStateListeners,
                    mFaceSensors.get(sensorId).getFaceUtilsInstance());
            scheduleForSensor(sensorId, client, mBiometricStateCallback);
            scheduleForSensor(sensorId, client, mBiometricStateCallback);
        });
        });
        return id;
        return id;
@@ -615,7 +616,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
    @Override
    @Override
    public void scheduleRemoveAll(int sensorId, @NonNull IBinder token, int userId,
    public void scheduleRemoveAll(int sensorId, @NonNull IBinder token, int userId,
            @NonNull IFaceServiceReceiver receiver, @NonNull String opPackageName) {
            @NonNull IFaceServiceReceiver receiver, @NonNull String opPackageName) {
        final List<Face> faces = FaceUtils.getInstance(sensorId)
        final List<Face> faces = mFaceSensors.get(sensorId).getFaceUtilsInstance()
                .getBiometricsForUser(mContext, userId);
                .getBiometricsForUser(mContext, userId);
        final int[] faceIds = new int[faces.size()];
        final int[] faceIds = new int[faces.size()];
        for (int i = 0; i < faces.size(); i++) {
        for (int i = 0; i < faces.size(); i++) {
@@ -632,7 +633,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
            final FaceRemovalClient client = new FaceRemovalClient(mContext,
            final FaceRemovalClient client = new FaceRemovalClient(mContext,
                    mFaceSensors.get(sensorId).getLazySession(), token,
                    mFaceSensors.get(sensorId).getLazySession(), token,
                    new ClientMonitorCallbackConverter(receiver), faceIds, userId,
                    new ClientMonitorCallbackConverter(receiver), faceIds, userId,
                    opPackageName, FaceUtils.getInstance(sensorId), sensorId,
                    opPackageName, mFaceSensors.get(sensorId).getFaceUtilsInstance(), sensorId,
                    createLogger(BiometricsProtoEnums.ACTION_REMOVE,
                    createLogger(BiometricsProtoEnums.ACTION_REMOVE,
                            BiometricsProtoEnums.CLIENT_UNKNOWN,
                            BiometricsProtoEnums.CLIENT_UNKNOWN,
                            mAuthenticationStatsCollector),
                            mAuthenticationStatsCollector),
@@ -666,7 +667,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
            @NonNull IFaceServiceReceiver receiver, @NonNull String opPackageName) {
            @NonNull IFaceServiceReceiver receiver, @NonNull String opPackageName) {
        mHandler.post(() -> {
        mHandler.post(() -> {
            mFaceSensors.get(sensorId).scheduleFaceUpdateActiveUserClient(userId);
            mFaceSensors.get(sensorId).scheduleFaceUpdateActiveUserClient(userId);
            final List<Face> faces = FaceUtils.getInstance(sensorId)
            final List<Face> faces = mFaceSensors.get(sensorId).getFaceUtilsInstance()
                    .getBiometricsForUser(mContext, userId);
                    .getBiometricsForUser(mContext, userId);
            if (faces.isEmpty()) {
            if (faces.isEmpty()) {
                Slog.w(getTag(), "Ignoring setFeature, no templates enrolled for user: " + userId);
                Slog.w(getTag(), "Ignoring setFeature, no templates enrolled for user: " + userId);
@@ -687,7 +688,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
            @NonNull ClientMonitorCallbackConverter callback, @NonNull String opPackageName) {
            @NonNull ClientMonitorCallbackConverter callback, @NonNull String opPackageName) {
        mHandler.post(() -> {
        mHandler.post(() -> {
            mFaceSensors.get(sensorId).scheduleFaceUpdateActiveUserClient(userId);
            mFaceSensors.get(sensorId).scheduleFaceUpdateActiveUserClient(userId);
            final List<Face> faces = FaceUtils.getInstance(sensorId)
            final List<Face> faces = mFaceSensors.get(sensorId).getFaceUtilsInstance()
                    .getBiometricsForUser(mContext, userId);
                    .getBiometricsForUser(mContext, userId);
            if (faces.isEmpty()) {
            if (faces.isEmpty()) {
                Slog.w(getTag(), "Ignoring getFeature, no templates enrolled for user: " + userId);
                Slog.w(getTag(), "Ignoring getFeature, no templates enrolled for user: " + userId);
@@ -727,7 +728,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
                                    BiometricsProtoEnums.CLIENT_UNKNOWN,
                                    BiometricsProtoEnums.CLIENT_UNKNOWN,
                                    mAuthenticationStatsCollector),
                                    mAuthenticationStatsCollector),
                            mBiometricContext,
                            mBiometricContext,
                            FaceUtils.getInstance(sensorId),
                            mFaceSensors.get(sensorId).getFaceUtilsInstance(),
                            mFaceSensors.get(sensorId).getAuthenticatorIds());
                            mFaceSensors.get(sensorId).getAuthenticatorIds());
            if (favorHalEnrollments) {
            if (favorHalEnrollments) {
                client.setFavorHalEnrollments();
                client.setFavorHalEnrollments();
@@ -768,7 +769,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
            JSONArray sets = new JSONArray();
            JSONArray sets = new JSONArray();
            for (UserInfo user : UserManager.get(mContext).getUsers()) {
            for (UserInfo user : UserManager.get(mContext).getUsers()) {
                final int userId = user.getUserHandle().getIdentifier();
                final int userId = user.getUserHandle().getIdentifier();
                final int c = FaceUtils.getInstance(sensorId)
                final int c = mFaceSensors.get(sensorId).getFaceUtilsInstance()
                        .getBiometricsForUser(mContext, userId).size();
                        .getBiometricsForUser(mContext, userId).size();
                JSONObject set = new JSONObject();
                JSONObject set = new JSONObject();
                set.put("id", userId);
                set.put("id", userId);
+6 −3
Original line number Original line Diff line number Diff line
@@ -158,7 +158,7 @@ public class Sensor {
                                        Slog.e(TAG, "Face sensor hardware unavailable.");
                                        Slog.e(TAG, "Face sensor hardware unavailable.");
                                        mCurrentSession = null;
                                        mCurrentSession = null;
                                    }
                                    }
                                });
                                }, getFaceUtilsInstance());


                        return Sensor.this.getStartUserClient(resultController, sensorId,
                        return Sensor.this.getStartUserClient(resultController, sensorId,
                                newUserId, provider);
                                newUserId, provider);
@@ -280,8 +280,7 @@ public class Sensor {
            final long userToken = proto.start(SensorStateProto.USER_STATES);
            final long userToken = proto.start(SensorStateProto.USER_STATES);
            proto.write(UserStateProto.USER_ID, userId);
            proto.write(UserStateProto.USER_ID, userId);
            proto.write(UserStateProto.NUM_ENROLLED,
            proto.write(UserStateProto.NUM_ENROLLED,
                    FaceUtils.getInstance(mSensorProperties.sensorId)
                    getFaceUtilsInstance().getBiometricsForUser(mContext, userId).size());
                            .getBiometricsForUser(mContext, userId).size());
            proto.end(userToken);
            proto.end(userToken);
        }
        }


@@ -358,4 +357,8 @@ public class Sensor {
            Supplier<AidlSession> lazySession) {
            Supplier<AidlSession> lazySession) {
        mLazySession = lazySession;
        mLazySession = lazySession;
    }
    }

    public FaceUtils getFaceUtilsInstance() {
        return FaceUtils.getInstance(mSensorProperties.sensorId);
    }
}
}
Loading