Loading src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +20 −0 Original line number Diff line number Diff line Loading @@ -332,6 +332,8 @@ public class FingerprintSettings extends SubSettings { private boolean mIsEnrolling; /** SaveInstance key if we are waiting activity result from a extension preference */ @NonNull private String mLaunchedExtPrefKey = ""; /** key list for changing visibility */ @NonNull private final ArrayList<String> mExtPrefKeys = new ArrayList<>(); private long mChallenge; Loading Loading @@ -474,6 +476,7 @@ public class FingerprintSettings extends SubSettings { if (preference instanceof PrimarySwitchIntentPreference) { preference.setOnPreferenceClickListener(this::onExtIntentPreferenceClick); } mExtPrefKeys.add(preference.getKey()); mFingerprintUnlockCategory.addPreference(preference); } } Loading Loading @@ -826,8 +829,17 @@ public class FingerprintSettings extends SubSettings { updateAddPreference(); } /** * Lambda function for setCategoryHasChildrenSupplier */ private boolean fingerprintUnlockCategoryHasChild() { return mFingerprintUnlockCategory.getPreferenceCount() > 0; } private void addFingerprintUnlockCategory() { mFingerprintUnlockCategory = findPreference(KEY_FINGERPRINT_UNLOCK_CATEGORY); mFingerprintUnlockCategoryPreferenceController.setCategoryHasChildrenSupplier( this::fingerprintUnlockCategoryHasChild); if (isSfps()) { // For both SFPS "screen on to auth" and "rest to unlock" final Preference restToUnlockPreference = FeatureFactory.getFeatureFactory() Loading Loading @@ -867,6 +879,14 @@ public class FingerprintSettings extends SubSettings { mScreenOffUnlockUdfpsPreferenceController.getAvailabilityStatus(); updatePreferenceVisibility(status, mScreenOffUnlockUdfpsPreference); } if (!mExtPrefKeys.isEmpty()) { for (String key: mExtPrefKeys) { Preference preference = mFingerprintUnlockCategory.findPreference(key); if (preference != null) { updatePreferenceVisibility(categoryStatus, preference); } } } } private void updatePreferenceVisibility(int availabilityStatus, Preference preference) { Loading src/com/android/settings/biometrics/fingerprint/FingerprintUnlockCategoryController.java +18 −3 Original line number Diff line number Diff line Loading @@ -16,8 +16,7 @@ package com.android.settings.biometrics.fingerprint; import static android.hardware.biometrics.Flags.screenOffUnlockUdfps; import android.annotation.Nullable; import android.content.Context; import android.hardware.fingerprint.FingerprintManager; Loading @@ -25,6 +24,8 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import java.util.function.Supplier; /** * Preference controller that controls the fingerprint unlock features to be shown / be hidden. */ Loading @@ -34,17 +35,31 @@ public class FingerprintUnlockCategoryController extends BasePreferenceControlle private int mUserId; @VisibleForTesting protected FingerprintManager mFingerprintManager; @Nullable private Supplier<Boolean> mCategoryHasChildSupplier = null; public FingerprintUnlockCategoryController(Context context, String key) { super(context, key); mFingerprintManager = Utils.getFingerprintManagerOrNull(context); } public void setCategoryHasChildrenSupplier( @Nullable Supplier<Boolean> categoryHasChildSupplier ) { mCategoryHasChildSupplier = categoryHasChildSupplier; } @Override public int getAvailabilityStatus() { Supplier<Boolean> categoryHasChildSupplier = mCategoryHasChildSupplier; boolean hasChild = false; if (categoryHasChildSupplier != null) { hasChild = categoryHasChildSupplier.get(); } if (mFingerprintManager != null && mFingerprintManager.isHardwareDetected() && (mFingerprintManager.isPowerbuttonFps() || screenOffUnlockUdfps())) { && hasChild) { return mFingerprintManager.hasEnrolledTemplates(getUserId()) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } else { Loading Loading
src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +20 −0 Original line number Diff line number Diff line Loading @@ -332,6 +332,8 @@ public class FingerprintSettings extends SubSettings { private boolean mIsEnrolling; /** SaveInstance key if we are waiting activity result from a extension preference */ @NonNull private String mLaunchedExtPrefKey = ""; /** key list for changing visibility */ @NonNull private final ArrayList<String> mExtPrefKeys = new ArrayList<>(); private long mChallenge; Loading Loading @@ -474,6 +476,7 @@ public class FingerprintSettings extends SubSettings { if (preference instanceof PrimarySwitchIntentPreference) { preference.setOnPreferenceClickListener(this::onExtIntentPreferenceClick); } mExtPrefKeys.add(preference.getKey()); mFingerprintUnlockCategory.addPreference(preference); } } Loading Loading @@ -826,8 +829,17 @@ public class FingerprintSettings extends SubSettings { updateAddPreference(); } /** * Lambda function for setCategoryHasChildrenSupplier */ private boolean fingerprintUnlockCategoryHasChild() { return mFingerprintUnlockCategory.getPreferenceCount() > 0; } private void addFingerprintUnlockCategory() { mFingerprintUnlockCategory = findPreference(KEY_FINGERPRINT_UNLOCK_CATEGORY); mFingerprintUnlockCategoryPreferenceController.setCategoryHasChildrenSupplier( this::fingerprintUnlockCategoryHasChild); if (isSfps()) { // For both SFPS "screen on to auth" and "rest to unlock" final Preference restToUnlockPreference = FeatureFactory.getFeatureFactory() Loading Loading @@ -867,6 +879,14 @@ public class FingerprintSettings extends SubSettings { mScreenOffUnlockUdfpsPreferenceController.getAvailabilityStatus(); updatePreferenceVisibility(status, mScreenOffUnlockUdfpsPreference); } if (!mExtPrefKeys.isEmpty()) { for (String key: mExtPrefKeys) { Preference preference = mFingerprintUnlockCategory.findPreference(key); if (preference != null) { updatePreferenceVisibility(categoryStatus, preference); } } } } private void updatePreferenceVisibility(int availabilityStatus, Preference preference) { Loading
src/com/android/settings/biometrics/fingerprint/FingerprintUnlockCategoryController.java +18 −3 Original line number Diff line number Diff line Loading @@ -16,8 +16,7 @@ package com.android.settings.biometrics.fingerprint; import static android.hardware.biometrics.Flags.screenOffUnlockUdfps; import android.annotation.Nullable; import android.content.Context; import android.hardware.fingerprint.FingerprintManager; Loading @@ -25,6 +24,8 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import java.util.function.Supplier; /** * Preference controller that controls the fingerprint unlock features to be shown / be hidden. */ Loading @@ -34,17 +35,31 @@ public class FingerprintUnlockCategoryController extends BasePreferenceControlle private int mUserId; @VisibleForTesting protected FingerprintManager mFingerprintManager; @Nullable private Supplier<Boolean> mCategoryHasChildSupplier = null; public FingerprintUnlockCategoryController(Context context, String key) { super(context, key); mFingerprintManager = Utils.getFingerprintManagerOrNull(context); } public void setCategoryHasChildrenSupplier( @Nullable Supplier<Boolean> categoryHasChildSupplier ) { mCategoryHasChildSupplier = categoryHasChildSupplier; } @Override public int getAvailabilityStatus() { Supplier<Boolean> categoryHasChildSupplier = mCategoryHasChildSupplier; boolean hasChild = false; if (categoryHasChildSupplier != null) { hasChild = categoryHasChildSupplier.get(); } if (mFingerprintManager != null && mFingerprintManager.isHardwareDetected() && (mFingerprintManager.isPowerbuttonFps() || screenOffUnlockUdfps())) { && hasChild) { return mFingerprintManager.hasEnrolledTemplates(getUserId()) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } else { Loading