Fix searching condition for biometric settings

The preferences that are related to biometric settings should only be
searchable if the device supports the multiple biometric auth. However
we can see these preferences still can be searched even the device
doesn't support the feature, which is caused by that there's no
guardence. So the availiability of the preferences need to be updated to
prevent revealing unsupported preference from Settings search.

Fixes: 187167774
Test: manual test
1) Navigate to Settings search on a device without face auth
2) Search for face
3) See if there's something about face unlock

Change-Id: I6f120e8d9002a1e8f0be9361fdbea193776e4d7d
This commit is contained in:
Mill Chen
2021-05-05 22:22:09 +08:00
parent d7caf65594
commit ecd1495977
4 changed files with 10 additions and 2 deletions

View File

@@ -32,6 +32,6 @@ public class BiometricFaceStatusPreferenceController extends FaceStatusPreferenc
@Override @Override
protected boolean isDeviceSupported() { protected boolean isDeviceSupported() {
return Utils.hasFaceHardware(mContext); return Utils.isMultipleBiometricsSupported(mContext) && Utils.hasFaceHardware(mContext);
} }
} }

View File

@@ -33,6 +33,7 @@ public class BiometricFingerprintStatusPreferenceController extends
@Override @Override
protected boolean isDeviceSupported() { protected boolean isDeviceSupported() {
return Utils.hasFingerprintHardware(mContext); return Utils.isMultipleBiometricsSupported(mContext)
&& Utils.hasFingerprintHardware(mContext);
} }
} }

View File

@@ -69,6 +69,9 @@ public class BiometricSettingsAppPreferenceController extends TogglePreferenceCo
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
if (!Utils.isMultipleBiometricsSupported(mContext)) {
return UNSUPPORTED_ON_DEVICE;
}
if (mFaceManager == null || mFingerprintManager == null) { if (mFaceManager == null || mFingerprintManager == null) {
return AVAILABLE_UNSEARCHABLE; return AVAILABLE_UNSEARCHABLE;
} }

View File

@@ -21,6 +21,7 @@ import android.app.admin.DevicePolicyManager;
import android.content.Context; import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -62,6 +63,9 @@ public class BiometricSettingsKeyguardPreferenceController extends TogglePrefere
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
if (!Utils.isMultipleBiometricsSupported(mContext)) {
return UNSUPPORTED_ON_DEVICE;
}
return getRestrictingAdmin() != null ? DISABLED_FOR_USER : AVAILABLE; return getRestrictingAdmin() != null ? DISABLED_FOR_USER : AVAILABLE;
} }
} }