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

Commit 99b7eb15 authored by Ilya Matyukhin's avatar Ilya Matyukhin Committed by Android (Google) Code Review
Browse files

Merge "Update face for the new enrollment API"

parents b8944642 9eae1727
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import static android.Manifest.permission.TEST_BIOMETRIC;
import android.annotation.NonNull;
import android.content.Context;
import android.hardware.biometrics.ITestSession;
import android.hardware.biometrics.face.AuthenticationFrame;
import android.hardware.biometrics.face.BaseFrame;
import android.hardware.face.Face;
import android.hardware.face.IFaceServiceReceiver;
import android.os.Binder;
@@ -180,12 +182,21 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
        mSensor.getSessionForUser(userId).mHalSessionCallback.onAuthenticationFailed();
    }

    // TODO(b/174619156): replace with notifyAuthenticationFrame and notifyEnrollmentFrame.
    @Override
    public void notifyAcquired(int userId, int acquireInfo) {
        Utils.checkPermission(mContext, TEST_BIOMETRIC);

        mSensor.getSessionForUser(userId).mHalSessionCallback
                .onAcquired((byte) acquireInfo, 0 /* vendorCode */);
        BaseFrame data = new BaseFrame();
        data.acquiredInfo = (byte) acquireInfo;

        AuthenticationFrame authenticationFrame = new AuthenticationFrame();
        authenticationFrame.data = data;

        // TODO(b/174619156): Currently onAuthenticationFrame and onEnrollmentFrame are the same.
        // This will need to call the correct callback once the onAcquired callback is removed.
        mSensor.getSessionForUser(userId).mHalSessionCallback.onAuthenticationFrame(
                authenticationFrame);
    }

    @Override
+3 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.Context;
import android.hardware.biometrics.BiometricFaceConstants;
import android.hardware.biometrics.BiometricsProtoEnums;
import android.hardware.biometrics.common.ICancellationSignal;
import android.hardware.biometrics.face.EnrollmentType;
import android.hardware.biometrics.face.IFace;
import android.hardware.biometrics.face.ISession;
import android.hardware.face.Face;
@@ -114,7 +115,8 @@ public class FaceEnrollClient extends EnrollClient<ISession> {

        try {
            // TODO(b/172593978): Pass features.
            mCancellationSignal = getFreshDaemon().enroll(mSequentialId,
            // TODO(b/174619156): Handle accessibility enrollment.
            mCancellationSignal = getFreshDaemon().enroll(mSequentialId, EnrollmentType.DEFAULT,
                    HardwareAuthTokenUtils.toHardwareAuthToken(mHardwareAuthToken),
                    mPreviewSurface);
        } catch (RemoteException e) {
+21 −2
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import android.content.Context;
import android.content.pm.UserInfo;
import android.hardware.biometrics.BiometricsProtoEnums;
import android.hardware.biometrics.ITestSession;
import android.hardware.biometrics.face.AuthenticationFrame;
import android.hardware.biometrics.face.EnrollmentFrame;
import android.hardware.biometrics.face.Error;
import android.hardware.biometrics.face.IFace;
import android.hardware.biometrics.face.ISession;
@@ -167,7 +169,8 @@ public class Sensor implements IBinder.DeathRecipient {
        }

        @Override
        public void onAcquired(byte info, int vendorCode) {
        public void onAuthenticationFrame(AuthenticationFrame frame) {
            // TODO(b/174619156): propagate the frame to an AuthenticationClient
            mHandler.post(() -> {
                final BaseClientMonitor client = mScheduler.getCurrentClient();
                if (!(client instanceof AcquisitionClient)) {
@@ -177,7 +180,23 @@ public class Sensor implements IBinder.DeathRecipient {
                }

                final AcquisitionClient<?> acquisitionClient = (AcquisitionClient<?>) client;
                acquisitionClient.onAcquired(info, vendorCode);
                acquisitionClient.onAcquired(frame.data.acquiredInfo, frame.data.vendorCode);
            });
        }

        @Override
        public void onEnrollmentFrame(EnrollmentFrame frame) {
            // TODO(b/174619156): propagate the frame to an EnrollmentClient
            mHandler.post(() -> {
                final BaseClientMonitor client = mScheduler.getCurrentClient();
                if (!(client instanceof AcquisitionClient)) {
                    Slog.e(mTag, "onAcquired for non-acquisition client: "
                            + Utils.getClientName(client));
                    return;
                }

                final AcquisitionClient<?> acquisitionClient = (AcquisitionClient<?>) client;
                acquisitionClient.onAcquired(frame.data.acquiredInfo, frame.data.vendorCode);
            });
        }

+2 −2
Original line number Diff line number Diff line
@@ -49,8 +49,8 @@ public class TestHal extends IFace.Stub {
            }

            @Override
            public ICancellationSignal enroll(int cookie, HardwareAuthToken hat,
                    NativeHandle previewSurface) {
            public ICancellationSignal enroll(int cookie, byte enrollmentType,
                    HardwareAuthToken hat, NativeHandle previewSurface) {
                return null;
            }

+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ public class TestSession extends ISession.Stub {
    }

    @Override
    public ICancellationSignal enroll(int cookie, HardwareAuthToken hat,
    public ICancellationSignal enroll(int cookie, byte enrollmentType, HardwareAuthToken hat,
            NativeHandle previewSurface) {
        return null;
    }