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 Diff line number Diff line
@@ -80,13 +80,16 @@ public class AidlResponseHandler extends ISessionCallback.Stub {
    private final AuthSessionCoordinator mAuthSessionCoordinator;
    @NonNull
    private final AidlResponseHandlerCallback mAidlResponseHandlerCallback;
    @NonNull
    private final FaceUtils mBiometricUtils;

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

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

        handleResponse(FaceEnrollClient.class, (c) -> {
+5 −3
Original line number 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.EnrollClient;
import com.android.server.biometrics.sensors.face.FaceService;
import com.android.server.biometrics.sensors.face.FaceUtils;

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

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

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

+1 −2
Original line number 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.InternalEnumerateClient;
import com.android.server.biometrics.sensors.RemovalClient;
import com.android.server.biometrics.sensors.face.FaceUtils;

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

+15 −14
Original line number 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.PerformanceTracker;
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.UsageStats;
import com.android.server.biometrics.sensors.face.hidl.HidlToAidlSensorAdapter;
@@ -326,8 +325,8 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
        }

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

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

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

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

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