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

Commit 99415f05 authored by joshmccloskey's avatar joshmccloskey
Browse files

Read and cache features when user switches

Bug: 163830899
Test: Verified feature is stored to secure setting.

1. Flashed device to QDA release build
2. Verified require_attention was being reported as 1
3. Flashed to most recent change, verified require_attention setting
was upated to 0.

Change-Id: Ibb1fe6ee3d2e6674b4e335341a3278d2cf0f61b0
Merged-In: I0187e27b641edf0836fa187530cb2a193082fe5d
parent 933f16e5
Loading
Loading
Loading
Loading
+17 −1
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@ import android.content.Intent;
import android.content.pm.UserInfo;
import android.content.pm.UserInfo;
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricFaceConstants;
import android.hardware.biometrics.BiometricsProtoEnums;
import android.hardware.biometrics.BiometricsProtoEnums;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;
@@ -604,6 +605,8 @@ public class FaceService extends BiometricServiceBase {
                return false;
                return false;
            }
            }


            getFeature(userId, BiometricFaceConstants.FEATURE_REQUIRE_ATTENTION,
                    null /* receiver */, opPackageName);
            return FaceService.this.hasEnrolledBiometrics(userId);
            return FaceService.this.hasEnrolledBiometrics(userId);
        }
        }


@@ -692,7 +695,20 @@ public class FaceService extends BiometricServiceBase {
                if (mDaemon != null) {
                if (mDaemon != null) {
                    try {
                    try {
                        OptionalBool result = mDaemon.getFeature(feature, faceId);
                        OptionalBool result = mDaemon.getFeature(feature, faceId);
                        receiver.onFeatureGet(result.status == Status.OK, feature, result.value);
                        if (receiver != null) {
                            receiver.onFeatureGet(result.status == Status.OK,
                                    feature, result.value);
                        }

                        if (result.status == Status.OK
                                && feature == BiometricFaceConstants.FEATURE_REQUIRE_ATTENTION) {
                            final int settingsValue = result.value ? 1 : 0;
                            Slog.d(TAG, "Updating attention value for user: " + mCurrentUserId
                                    + " to value: " + settingsValue);
                            Settings.Secure.putIntForUser(getContext().getContentResolver(),
                                    Settings.Secure.FACE_UNLOCK_ATTENTION_REQUIRED,
                                    settingsValue, mCurrentUserId);
                        }
                    } catch (RemoteException e) {
                    } catch (RemoteException e) {
                        Slog.e(getTag(), "Unable to getRequireAttention", e);
                        Slog.e(getTag(), "Unable to getRequireAttention", e);
                    }
                    }