Merge "[Biometric Onboarding & Edu] move screen lock settings to choose lock" into main

This commit is contained in:
Shawn Lin
2025-01-21 22:34:40 -08:00
committed by Android (Google) Code Review
4 changed files with 121 additions and 6 deletions

View File

@@ -71,6 +71,7 @@ import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import com.android.internal.widget.LockPatternUtils;
@@ -87,13 +88,22 @@ import com.android.settings.biometrics.BiometricUtils;
import com.android.settings.biometrics.IdentityCheckBiometricErrorDialog;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.flags.Flags;
import com.android.settings.safetycenter.LockScreenSafetySource;
import com.android.settings.search.SearchFeatureProvider;
import com.android.settings.security.screenlock.AutoPinConfirmPreferenceController;
import com.android.settings.security.screenlock.LockAfterTimeoutPreferenceController;
import com.android.settings.security.screenlock.PatternVisiblePreferenceController;
import com.android.settings.security.screenlock.PinPrivacyPreferenceController;
import com.android.settings.security.screenlock.PowerButtonInstantLockPreferenceController;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.widget.FooterPreference;
import com.google.android.setupcompat.util.WizardManagerHelper;
import java.util.ArrayList;
/**
* Activity class that provides a generic implementation for displaying options to choose a lock
* type, either for setting up a new lock or updating an existing lock.
@@ -131,6 +141,8 @@ public class ChooseLockGeneric extends SettingsActivity {
private static final String WAITING_FOR_CONFIRMATION = "waiting_for_confirmation";
public static final String HIDE_INSECURE_OPTIONS = "hide_insecure_options";
public static final String TAG_FRP_WARNING_DIALOG = "frp_warning_dialog";
public static final String KEY_LOCK_SETTINGS = "unlock_settings";
public static final String KEY_LOCK_SETTINGS_FOOTER ="lock_settings_footer";
/**
@@ -214,6 +226,9 @@ public class ChooseLockGeneric extends SettingsActivity {
private boolean mWaitingForBiometricEnrollment = false;
private boolean mEnrollFingerPrintOnly = false;
private final ArrayList<AbstractPreferenceController> mUnlockSettingsControllers =
new ArrayList<>();
@Override
public int getMetricsCategory() {
return SettingsEnums.CHOOSE_LOCK_GENERIC;
@@ -652,6 +667,12 @@ public class ChooseLockGeneric extends SettingsActivity {
footer.setVisible(false);
}
if (Flags.biometricsOnboardingEducation()
&& !WizardManagerHelper.isAnySetupWizard(getIntent())) {
buildUnlockSettingsPreferenceControllers();
setUpUnlockSettingsPreference();
}
// Used for testing purposes
findPreference(ScreenLockType.NONE.preferenceKey).setViewId(R.id.lock_none);
findPreference(KEY_SKIP_FINGERPRINT).setViewId(R.id.lock_none);
@@ -661,6 +682,37 @@ public class ChooseLockGeneric extends SettingsActivity {
findPreference(ScreenLockType.PASSWORD.preferenceKey).setViewId(R.id.lock_password);
}
private void buildUnlockSettingsPreferenceControllers() {
mUnlockSettingsControllers.add(new PatternVisiblePreferenceController(
getContext(), mUserId, mLockPatternUtils));
mUnlockSettingsControllers.add(new PinPrivacyPreferenceController(
getContext(), mUserId, mLockPatternUtils));
mUnlockSettingsControllers.add(new PowerButtonInstantLockPreferenceController(
getContext(), mUserId, mLockPatternUtils));
mUnlockSettingsControllers.add(new LockAfterTimeoutPreferenceController(
getContext(), mUserId, mLockPatternUtils));
mUnlockSettingsControllers.add(new AutoPinConfirmPreferenceController(
getContext(), mUserId, mLockPatternUtils, this));
}
private void setUpUnlockSettingsPreference() {
boolean showUnlockSettingsCategory = false;
for (AbstractPreferenceController controller : mUnlockSettingsControllers) {
final boolean isAvailable = controller.isAvailable();
final Preference preference = findPreference(controller.getPreferenceKey());
preference.setVisible(isAvailable);
if (!isAvailable) {
continue;
}
preference.setOnPreferenceChangeListener(
(Preference.OnPreferenceChangeListener) controller);
controller.updateState(preference);
showUnlockSettingsCategory = true;
}
final PreferenceCategory unlockSettingsCategory = findPreference(KEY_LOCK_SETTINGS);
unlockSettingsCategory.setVisible(showUnlockSettingsCategory);
}
private String getFooterString() {
@StringRes int stringId;
switch (mController.getAggregatedPasswordComplexity()) {

View File

@@ -92,7 +92,8 @@ public class ScreenLockPreferenceDetailsUtils {
* Returns whether the Gear Menu should be shown.
*/
public boolean shouldShowGearMenu() {
return isLockPatternSecure();
return !com.android.settings.flags.Flags.biometricsOnboardingEducation()
&& isLockPatternSecure();
}
/**