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

Commit 7e89b412 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Require authorization before turning off eSIM security feature" into rvc-dev am: f3ce231d

Change-Id: I95978fe3e4f797fa94ddd51701e92b8f4cd6142f
parents 696d25ad f3ce231d
Loading
Loading
Loading
Loading
+25 −5
Original line number Diff line number Diff line
@@ -24,11 +24,13 @@ import androidx.preference.Preference;
import androidx.preference.TwoStatePreference;

import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.wifi.dpp.WifiDppUtils;

/** Enable/disable user confirmation before deleting an eSim */
public class ConfirmSimDeletionPreferenceController extends TogglePreferenceController {
public class ConfirmSimDeletionPreferenceController extends BasePreferenceController implements
        Preference.OnPreferenceChangeListener{
    public static final String KEY_CONFIRM_SIM_DELETION = "confirm_sim_deletion";
    private boolean mConfirmationDefaultOn;

@@ -53,21 +55,39 @@ public class ConfirmSimDeletionPreferenceController extends TogglePreferenceCont
                == 1;
    }

    @Override
    public boolean isChecked() {
        return getGlobalState();
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        Settings.Global.putInt(
                mContext.getContentResolver(), KEY_CONFIRM_SIM_DELETION, isChecked ? 1 : 0);
        return true;
    }

    // handle UI change
    @Override
    public void updateState(Preference preference) {
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if (!preference.getKey().equals(getPreferenceKey())) {
            return false;
        }
        if (!isChecked()) {
            setChecked(true);
            return true;
        } else {
            // prevent disabling the feature until authorized
            WifiDppUtils.showLockScreen(mContext, () -> {
                // set data
                setChecked(false);
                // set UI
                ((TwoStatePreference) preference).setChecked(false);
            });
            return false;
        }
    }

    @Override
    public void updateState(Preference preference) {
        final KeyguardManager keyguardManager = mContext.getSystemService(KeyguardManager.class);
        if (!keyguardManager.isKeyguardSecure()) {
            preference.setEnabled(false);