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

Commit c01528ff authored by Diya Bera's avatar Diya Bera
Browse files

Remove IPC calls from KeyguardUpdateMonitor

Bug: 221037350
Change-Id: I3a23a9b8b958bb149e47ab2acbe1f19775be72c7
parent 7f7ebbe4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2182,8 +2182,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
    private void updateFaceEnrolled(int userId) {
        mIsFaceEnrolled = whitelistIpcs(
                () -> mFaceManager != null && mFaceManager.isHardwareDetected()
                        && mFaceManager.hasEnrolledTemplates(userId)
                        && mBiometricEnabledForUser.get(userId));
                        && mBiometricEnabledForUser.get(userId))
                && mAuthController.isFaceAuthEnrolled(userId);
    }

    public boolean isFaceSupported() {
+12 −1
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ public class AuthController extends CoreStartable implements CommandQueue.Callba
    @Nullable private List<FingerprintSensorPropertiesInternal> mSidefpsProps;

    @NonNull private final SparseBooleanArray mUdfpsEnrolledForUser;
    @NonNull private final SparseBooleanArray mFaceEnrolledForUser;
    @NonNull private final SensorPrivacyManager mSensorPrivacyManager;
    private final WakefulnessLifecycle mWakefulnessLifecycle;
    private boolean mAllFingerprintAuthenticatorsRegistered;
@@ -345,6 +346,15 @@ public class AuthController extends CoreStartable implements CommandQueue.Callba
                }
            }
        }
        if (mFaceProps == null) {
            Log.d(TAG, "handleEnrollmentsChanged, mFaceProps is null");
        } else {
            for (FaceSensorPropertiesInternal prop : mFaceProps) {
                if (prop.sensorId == sensorId) {
                    mFaceEnrolledForUser.put(userId, hasEnrollments);
                }
            }
        }
        for (Callback cb : mCallbacks) {
            cb.onEnrollmentsChanged(modality);
        }
@@ -709,6 +719,7 @@ public class AuthController extends CoreStartable implements CommandQueue.Callba
        mWindowManager = windowManager;
        mInteractionJankMonitor = jankMonitor;
        mUdfpsEnrolledForUser = new SparseBooleanArray();
        mFaceEnrolledForUser = new SparseBooleanArray();
        mVibratorHelper = vibrator;

        mOrientationListener = new BiometricDisplayListener(
@@ -1057,7 +1068,7 @@ public class AuthController extends CoreStartable implements CommandQueue.Callba
            return false;
        }

        return mFaceManager.hasEnrolledTemplates(userId);
        return mFaceEnrolledForUser.get(userId);
    }

    /**
+5 −4
Original line number Diff line number Diff line
@@ -588,8 +588,9 @@ public class FaceService extends SystemService {
                }
                try {
                    final SensorProps[] props = face.getSensorProps();
                    final FaceProvider provider = new FaceProvider(getContext(), props, instance,
                            mLockoutResetDispatcher, BiometricContext.getInstance(getContext()));
                    final FaceProvider provider = new FaceProvider(getContext(),
                            mBiometricStateCallback, props, instance, mLockoutResetDispatcher,
                            BiometricContext.getInstance(getContext()));
                    providers.add(provider);
                } catch (RemoteException e) {
                    Slog.e(TAG, "Remote exception in getSensorProps: " + fqName);
@@ -600,14 +601,14 @@ public class FaceService extends SystemService {
        }

        @android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
        @Override // Binder call
        public void registerAuthenticators(
                @NonNull List<FaceSensorPropertiesInternal> hidlSensors) {
            mRegistry.registerAll(() -> {
                final List<ServiceProvider> providers = new ArrayList<>();
                for (FaceSensorPropertiesInternal hidlSensor : hidlSensors) {
                    providers.add(
                            Face10.newInstance(getContext(), hidlSensor, mLockoutResetDispatcher));
                            Face10.newInstance(getContext(), mBiometricStateCallback,
                                    hidlSensor, mLockoutResetDispatcher));
                }
                providers.addAll(getAidlProviders());
                return providers;
+1 −3
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.server.biometrics.sensors.face.aidl;

import static android.Manifest.permission.TEST_BIOMETRIC;

import android.annotation.NonNull;
import android.content.Context;
import android.hardware.biometrics.ITestSession;
@@ -33,8 +31,8 @@ import android.os.RemoteException;
import android.util.Slog;

import com.android.server.biometrics.HardwareAuthTokenUtils;
import com.android.server.biometrics.Utils;
import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.BiometricStateCallback;
import com.android.server.biometrics.sensors.ClientMonitorCallback;
import com.android.server.biometrics.sensors.face.FaceUtils;

+23 −5
Original line number Diff line number Diff line
@@ -52,8 +52,10 @@ import com.android.server.biometrics.log.BiometricContext;
import com.android.server.biometrics.log.BiometricLogger;
import com.android.server.biometrics.sensors.AuthenticationClient;
import com.android.server.biometrics.sensors.BaseClientMonitor;
import com.android.server.biometrics.sensors.BiometricStateCallback;
import com.android.server.biometrics.sensors.ClientMonitorCallback;
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
import com.android.server.biometrics.sensors.ClientMonitorCompositeCallback;
import com.android.server.biometrics.sensors.InvalidationRequesterClient;
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
import com.android.server.biometrics.sensors.PerformanceTracker;
@@ -80,6 +82,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
    private boolean mTestHalEnabled;

    @NonNull private final Context mContext;
    @NonNull private final BiometricStateCallback mBiometricStateCallback;
    @NonNull private final String mHalInstanceName;
    @NonNull @VisibleForTesting
    final SparseArray<Sensor> mSensors; // Map of sensors that this HAL supports
@@ -121,11 +124,14 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
        }
    }

    public FaceProvider(@NonNull Context context, @NonNull SensorProps[] props,
    public FaceProvider(@NonNull Context context,
            @NonNull BiometricStateCallback biometricStateCallback,
            @NonNull SensorProps[] props,
            @NonNull String halInstanceName,
            @NonNull LockoutResetDispatcher lockoutResetDispatcher,
            @NonNull BiometricContext biometricContext) {
        mContext = context;
        mBiometricStateCallback = biometricStateCallback;
        mHalInstanceName = halInstanceName;
        mSensors = new SparseArray<>();
        mHandler = new Handler(Looper.getMainLooper());
@@ -363,9 +369,20 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
                            BiometricsProtoEnums.CLIENT_UNKNOWN),
                    mBiometricContext, maxTemplatesPerUser, debugConsent);
            scheduleForSensor(sensorId, client, new ClientMonitorCallback() {
                @Override
                public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) {
                    mBiometricStateCallback.onClientStarted(clientMonitor);
                }

                @Override
                public void onBiometricAction(int action) {
                    mBiometricStateCallback.onBiometricAction(action);
                }

                @Override
                public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
                        boolean success) {
                    mBiometricStateCallback.onClientFinished(clientMonitor, success);
                    if (success) {
                        scheduleLoadAuthenticatorIdsForUser(sensorId, userId);
                        scheduleInvalidationRequest(sensorId, userId);
@@ -395,7 +412,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
                    token, id, callback, userId, opPackageName, sensorId,
                    createLogger(BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient),
                    mBiometricContext, isStrongBiometric);
            scheduleForSensor(sensorId, client);
            scheduleForSensor(sensorId, client, mBiometricStateCallback);
        });

        return id;
@@ -422,7 +439,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
                    mBiometricContext, isStrongBiometric,
                    mUsageStats, mSensors.get(sensorId).getLockoutCache(),
                    allowBackgroundAuthentication, isKeyguardBypassEnabled);
            scheduleForSensor(sensorId, client);
            scheduleForSensor(sensorId, client, mBiometricStateCallback);
        });
    }

@@ -477,7 +494,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
                            BiometricsProtoEnums.CLIENT_UNKNOWN),
                    mBiometricContext,
                    mSensors.get(sensorId).getAuthenticatorIds());
            scheduleForSensor(sensorId, client);
            scheduleForSensor(sensorId, client, mBiometricStateCallback);
        });
    }

@@ -565,7 +582,8 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
            if (favorHalEnrollments) {
                client.setFavorHalEnrollments();
            }
            scheduleForSensor(sensorId, client, callback);
            scheduleForSensor(sensorId, client, new ClientMonitorCompositeCallback(callback,
                    mBiometricStateCallback));
        });
    }

Loading