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:
FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
int enrolled = fpm.getEnrolledFingerprints().size();
int max = getResources().getInteger(
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
if (enrolled >= max) {
final List<FingerprintSensorPropertiesInternal> props =
fpm.getSensorPropertiesInternal();
final int maxEnrollments = props.get(0).maxEnrollmentsPerUser;
if (enrolled >= maxEnrollments) {
finish();
} else {
// 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.pm.PackageManager;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Bundle;
import android.util.Log;
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.util.WizardManagerHelper;
import java.util.List;
/**
* Activity which concludes fingerprint enrollment.
*/
@@ -92,10 +94,11 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
boolean hideAddAnother = false;
if (fpm != null) {
final List<FingerprintSensorPropertiesInternal> props =
fpm.getSensorPropertiesInternal();
int maxEnrollments = props.get(0).maxEnrollmentsPerUser;
int enrolled = fpm.getEnrolledFingerprints(mUserId).size();
int max = getResources().getInteger(
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
hideAddAnother = enrolled >= max;
hideAddAnother = enrolled >= maxEnrollments;
}
if (hideAddAnother) {
// 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);
/* Disable preference if too many fingerprints added */
final int max = getContext().getResources().getInteger(
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
final List<FingerprintSensorPropertiesInternal> props =
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;
// retryFingerprint() will be called when remove finishes
// need to disable enroll or have a way to determine if enroll is in progress