FPSettings depends on SensorProps for maxEnrolls

Test: Verified that AIDL FP devices honor the maximum number
of fp's allowed according to the HAL.
Fixes: 223617233

Change-Id: Ia0c46647d77ce52d4fe95154eae8d8b656456f53
This commit is contained in:
Joshua Mccloskey
2022-03-09 21:07:26 +00:00
parent f886179845
commit 5eda7f09d0
3 changed files with 14 additions and 8 deletions

View File

@@ -312,9 +312,10 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
default: default:
FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this); FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
int enrolled = fpm.getEnrolledFingerprints().size(); int enrolled = fpm.getEnrolledFingerprints().size();
int max = getResources().getInteger( final List<FingerprintSensorPropertiesInternal> props =
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); fpm.getSensorPropertiesInternal();
if (enrolled >= max) { final int maxEnrollments = props.get(0).maxEnrollmentsPerUser;
if (enrolled >= maxEnrollments) {
finish(); finish();
} else { } else {
// We came back from enrolling but it wasn't completed, start again. // We came back from enrolling but it wasn't completed, start again.

View File

@@ -21,6 +21,7 @@ import android.content.ComponentName;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@@ -36,6 +37,7 @@ import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupcompat.template.FooterButton; import com.google.android.setupcompat.template.FooterButton;
import com.google.android.setupcompat.util.WizardManagerHelper; import com.google.android.setupcompat.util.WizardManagerHelper;
import java.util.List;
/** /**
* Activity which concludes fingerprint enrollment. * Activity which concludes fingerprint enrollment.
*/ */
@@ -92,10 +94,11 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this); final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
boolean hideAddAnother = false; boolean hideAddAnother = false;
if (fpm != null) { if (fpm != null) {
final List<FingerprintSensorPropertiesInternal> props =
fpm.getSensorPropertiesInternal();
int maxEnrollments = props.get(0).maxEnrollmentsPerUser;
int enrolled = fpm.getEnrolledFingerprints(mUserId).size(); int enrolled = fpm.getEnrolledFingerprints(mUserId).size();
int max = getResources().getInteger( hideAddAnother = enrolled >= maxEnrollments;
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
hideAddAnother = enrolled >= max;
} }
if (hideAddAnother) { if (hideAddAnother) {
// Don't show "Add" button if too many fingerprints already added // Don't show "Add" button if too many fingerprints already added

View File

@@ -457,8 +457,10 @@ public class FingerprintSettings extends SubSettings {
final Preference addPreference = findPreference(KEY_FINGERPRINT_ADD); final Preference addPreference = findPreference(KEY_FINGERPRINT_ADD);
/* Disable preference if too many fingerprints added */ /* Disable preference if too many fingerprints added */
final int max = getContext().getResources().getInteger( final List<FingerprintSensorPropertiesInternal> props =
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); mFingerprintManager.getSensorPropertiesInternal();
// This will need to be updated for devices with multiple fingerprint sensors
final int max = props.get(0).maxEnrollmentsPerUser;
boolean tooMany = mFingerprintManager.getEnrolledFingerprints(mUserId).size() >= max; boolean tooMany = mFingerprintManager.getEnrolledFingerprints(mUserId).size() >= max;
// retryFingerprint() will be called when remove finishes // retryFingerprint() will be called when remove finishes
// need to disable enroll or have a way to determine if enroll is in progress // need to disable enroll or have a way to determine if enroll is in progress