Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 27908899 authored by Raff Tsai's avatar Raff Tsai
Browse files

Fix Settings crash when clicks Notifications

- FaceSettingsLockscreenBypassPreferenceController's preference key
is different from that in xml. Use DashboardFragment generic way to
create PreferenceController which bind the preference key defined in
xml.
- Also refine the way of fixing b/140878309

Fixes: 145893081
Test: manual check FaceSettings and Notification Settings
Change-Id: Ia80e755e3f86b44e771b0cf80c9bf53a8ef8f430
parent e3d171cc
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ public class FaceSettings extends DashboardFragment {
    private FaceSettingsAttentionPreferenceController mAttentionController;
    private FaceSettingsRemoveButtonPreferenceController mRemoveController;
    private FaceSettingsEnrollButtonPreferenceController mEnrollController;
    private FaceSettingsLockscreenBypassPreferenceController mLockscreenController;
    private List<AbstractPreferenceController> mControllers;

    private List<Preference> mTogglePreferences;
@@ -129,7 +130,7 @@ public class FaceSettings extends DashboardFragment {
        Preference attentionPref = findPreference(FaceSettingsAttentionPreferenceController.KEY);
        Preference confirmPref = findPreference(FaceSettingsConfirmPreferenceController.KEY);
        Preference bypassPref =
                findPreference(FaceSettingsLockscreenBypassPreferenceController.KEY);
                findPreference(mLockscreenController.getPreferenceKey());
        mTogglePreferences = new ArrayList<>(
                Arrays.asList(keyguardPref, appPref, attentionPref, confirmPref, bypassPref));

@@ -142,8 +143,6 @@ public class FaceSettings extends DashboardFragment {
                ((FaceSettingsPreferenceController) controller).setUserId(mUserId);
            } else if (controller instanceof FaceSettingsEnrollButtonPreferenceController) {
                ((FaceSettingsEnrollButtonPreferenceController) controller).setUserId(mUserId);
            } else if (controller instanceof FaceSettingsLockscreenBypassPreferenceController) {
                ((FaceSettingsLockscreenBypassPreferenceController) controller).setUserId(mUserId);
            }
        }
        mRemoveController.setUserId(mUserId);
@@ -151,7 +150,7 @@ public class FaceSettings extends DashboardFragment {
        // Don't show keyguard controller for work profile settings.
        if (mUserManager.isManagedProfile(mUserId)) {
            removePreference(FaceSettingsKeyguardPreferenceController.KEY);
            removePreference(FaceSettingsLockscreenBypassPreferenceController.KEY);
            removePreference(mLockscreenController.getPreferenceKey());
        }

        if (savedInstanceState != null) {
@@ -159,6 +158,14 @@ public class FaceSettings extends DashboardFragment {
        }
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);

        mLockscreenController = use(FaceSettingsLockscreenBypassPreferenceController.class);
        mLockscreenController.setUserId(mUserId);
    }

    @Override
    public void onResume() {
        super.onResume();
@@ -263,7 +270,6 @@ public class FaceSettings extends DashboardFragment {
        final List<AbstractPreferenceController> controllers = new ArrayList<>();
        controllers.add(new FaceSettingsVideoPreferenceController(context));
        controllers.add(new FaceSettingsKeyguardPreferenceController(context));
        controllers.add(new FaceSettingsLockscreenBypassPreferenceController(context));
        controllers.add(new FaceSettingsAppPreferenceController(context));
        controllers.add(new FaceSettingsAttentionPreferenceController(context));
        controllers.add(new FaceSettingsRemoveButtonPreferenceController(context));
+0 −6
Original line number Diff line number Diff line
@@ -30,16 +30,10 @@ import com.android.internal.annotations.VisibleForTesting;
public class FaceSettingsLockscreenBypassPreferenceController
        extends FaceSettingsPreferenceController {

    static final String KEY = "security_lockscreen_bypass";

    @VisibleForTesting
    protected FaceManager mFaceManager;
    private UserManager mUserManager;

    public FaceSettingsLockscreenBypassPreferenceController(Context context) {
        this(context, KEY);
    }

    public FaceSettingsLockscreenBypassPreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_FACE)) {