summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/security
diff options
context:
space:
mode:
authorLee Chou <leechou@google.com>2020-03-02 11:32:50 +0800
committerLee Chou <leechou@google.com>2020-03-02 05:23:49 +0000
commitee81a02109a29dd838ee8d19d5f4c01252bd5c14 (patch)
treee64e1cf86ac8cee03695ad7417e0380ceecff06b /src/com/android/settings/security
parentd09ecc3e9631c34146d466c18495d83392b0c1ad (diff)
downloadpackages_apps_Settings-ee81a02109a29dd838ee8d19d5f4c01252bd5c14.tar.gz
packages_apps_Settings-ee81a02109a29dd838ee8d19d5f4c01252bd5c14.tar.bz2
packages_apps_Settings-ee81a02109a29dd838ee8d19d5f4c01252bd5c14.zip
Require authorization before turning off eSIM security feature
eSIM has a feature that requires an auth check before deletion, this adds a security check before allowing the security feature to be turned off. TogglePreferenceController was changed to BasePreferenceController to separate updating the state from UI press and updating from code. Bug: 150568010 Test: mp settingsg and manual testing Change-Id: I9e74e173720dce7b25d2d8a1e9004862cdb5e2e0
Diffstat (limited to 'src/com/android/settings/security')
-rw-r--r--src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java30
1 files changed, 25 insertions, 5 deletions
diff --git a/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java b/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java
index f24d8db32b..8d093c0bc4 100644
--- a/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java
+++ b/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java
@@ -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);