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

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

Merge "Remove IPC calls from KeyguardUpdateMonitor"

parents 9c1f895b c01528ff
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