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

Commit da27daf8 authored by Kevin Chyn's avatar Kevin Chyn
Browse files

18/n: Make more HAL operations ClientMonitors

1) SetFeature
2) GetFeature
3) ResetLockout

The following will be done in a separate CL
4) SetActiveUser
5) GetAuthenticatorId

Test: Enroll face, go to face settings, toggle attention setting.
      Setting is persisted in the HAL and retrieved correctly to
      Settings.
Test: Fingerprint/Face lockout, resetLockout
Test: Multi-user / Multi-profile enroll, auth, resetLockout

Bug: 157790417
Change-Id: I063fcc73f0129a1d31214f30928f32708e14e2ff
parent 74b61eb9
Loading
Loading
Loading
Loading
+4 −18
Original line number Diff line number Diff line
@@ -449,8 +449,8 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
        if (mService != null) {
            try {
                mSetFeatureCallback = callback;
                mService.setFeature(userId, feature, enabled, token, mServiceReceiver,
                        mContext.getOpPackageName());
                mService.setFeature(mToken, userId, feature, enabled, token,
                        mServiceReceiver, mContext.getOpPackageName());
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
@@ -465,22 +465,8 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
        if (mService != null) {
            try {
                mGetFeatureCallback = callback;
                mService.getFeature(userId, feature, mServiceReceiver, mContext.getOpPackageName());
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
        }
    }

    /**
     * Pokes the the driver to have it start looking for faces again.
     * @hide
     */
    @RequiresPermission(MANAGE_BIOMETRIC)
    public void userActivity() {
        if (mService != null) {
            try {
                mService.userActivity();
                mService.getFeature(mToken, userId, feature, mServiceReceiver,
                        mContext.getOpPackageName());
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
+4 −5
Original line number Diff line number Diff line
@@ -89,12 +89,11 @@ interface IFaceService {
    // Add a callback which gets notified when the face lockout period expired.
    void addLockoutResetCallback(IBiometricServiceLockoutResetCallback callback);

    void setFeature(int userId, int feature, boolean enabled, in byte [] token,
            IFaceServiceReceiver receiver, String opPackageName);
    void setFeature(IBinder token, int userId, int feature, boolean enabled,
            in byte [] hardwareAuthToken, IFaceServiceReceiver receiver, String opPackageName);

    void getFeature(int userId, int feature, IFaceServiceReceiver receiver, String opPackageName);

    void userActivity();
    void getFeature(IBinder token, int userId, int feature, IFaceServiceReceiver receiver,
            String opPackageName);

    // Give FaceService its ID. See AuthService.java
    void initializeConfiguration(int sensorId);
+1 −1
Original line number Diff line number Diff line
@@ -751,7 +751,7 @@ public abstract class BiometricServiceBase extends SystemService
     * @param initiatedByClient true for authenticate, remove and enroll
     */
    @VisibleForTesting
    void startClient(ClientMonitor newClient, boolean initiatedByClient) {
    protected void startClient(ClientMonitor newClient, boolean initiatedByClient) {
        ClientMonitor currentClient = mCurrentClient;
        if (currentClient != null) {
            if (DEBUG) Slog.v(getTag(), "request stop current client " +
+1 −1
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ public abstract class ClientMonitor extends LoggableMonitor implements IBinder.D
     * @param statsClient   One of {@link BiometricsProtoEnums} CLIENT_* constants
     */
    public ClientMonitor(@NonNull FinishCallback finishCallback, @NonNull Context context,
            IBinder token, @Nullable ClientMonitorCallbackConverter listener, int userId,
            @Nullable IBinder token, @Nullable ClientMonitorCallbackConverter listener, int userId,
            boolean restricted, @NonNull String owner, int cookie, int sensorId, int statsModality,
            int statsAction, int statsClient) {
        super(statsModality, statsAction, statsClient);
+13 −0
Original line number Diff line number Diff line
@@ -126,4 +126,17 @@ public final class ClientMonitorCallbackConverter {
            mFingerprintServiceReceiver.onChallengeGenerated(challenge);
        }
    }

    public void onFeatureSet(boolean success, int feature) throws RemoteException {
        if (mFaceServiceReceiver != null) {
            mFaceServiceReceiver.onFeatureSet(success, feature);
        }
    }

    public void onFeatureGet(boolean success, int feature, boolean value)
            throws RemoteException {
        if (mFaceServiceReceiver != null) {
            mFaceServiceReceiver.onFeatureGet(success, feature, value);
        }
    }
}
Loading