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

Commit bfaa9072 authored by Hung-ying Tyan's avatar Hung-ying Tyan
Browse files

Disable suggestion for certain types of text boxes.

+ Disable suggestion for password, server name and domain suffices.
+ Use a shorter string to indicate that a secret is set.
parent 241610e9
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.text.InputType;
import android.text.TextUtils;
import android.text.method.PasswordTransformationMethod;

@@ -32,6 +33,9 @@ import android.text.method.PasswordTransformationMethod;
 * The common class for editing {@link VpnProfile}.
 */
class VpnProfileEditor {
    static final String SECRET_SET_INDICATOR =
            new String(new byte[] {(byte) 1, (byte) 0});

    private static final String KEY_VPN_NAME = "vpn_name";

    private EditTextPreference mName;
@@ -95,7 +99,7 @@ class VpnProfileEditor {
     * Creates a preference for users to input domain suffices.
     */
    protected EditTextPreference createDomainSufficesPreference(Context c) {
        mDomainSuffices = createEditTextPreference(c,
        EditTextPreference pref = mDomainSuffices = createEditTextPreference(c,
                R.string.vpn_dns_search_list_title,
                R.string.vpn_dns_search_list,
                mProfile.getDomainSuffices(),
@@ -108,11 +112,12 @@ class VpnProfileEditor {
                        return true;
                    }
                });
        return mDomainSuffices;
        pref.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_URI);
        return pref;
    }

    private Preference createServerNamePreference(Context c) {
        mServerName = createEditTextPreference(c,
        EditTextPreference pref = mServerName = createEditTextPreference(c,
                R.string.vpn_vpn_server_title,
                R.string.vpn_vpn_server,
                mProfile.getServerName(),
@@ -125,7 +130,8 @@ class VpnProfileEditor {
                        return true;
                    }
                });
        return mServerName;
        pref.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_URI);
        return pref;
    }

    protected EditTextPreference createEditTextPreference(Context c, int titleId,
@@ -147,9 +153,10 @@ class VpnProfileEditor {
        EditTextPreference pref = new EditTextPreference(c);
        pref.setTitle(titleId);
        pref.setDialogTitle(titleId);
        pref.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
        pref.getEditText().setTransformationMethod(
                new PasswordTransformationMethod());
        pref.setText(value);
        pref.setText(TextUtils.isEmpty(value) ? "" : SECRET_SET_INDICATOR);
        setSecretSummary(pref, fieldNameId, value);
        pref.setPersistent(true);
        pref.setOnPreferenceChangeListener(listener);
+17 −12
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.vpn;

import com.android.settings.R;
import com.android.settings.SecuritySettings;
import static com.android.settings.vpn.VpnProfileEditor.SECRET_SET_INDICATOR;

import android.app.AlertDialog;
import android.app.Dialog;
@@ -109,6 +110,10 @@ public class VpnSettings extends PreferenceActivity implements

    private static final int NO_ERROR = 0;

    private static final String NAMESPACE_VPN = "vpn";
    private static final String KEY_PREFIX_IPSEC_PSK = "ipsk000";
    private static final String KEY_PREFIX_L2TP_SECRET = "lscrt000";

    private PreferenceScreen mAddVpn;
    private PreferenceCategory mVpnListContainer;

@@ -838,37 +843,37 @@ public class VpnSettings extends PreferenceActivity implements
        return mVpnManager.createVpnProfile(Enum.valueOf(VpnType.class, type));
    }

    private static final String NAMESPACE_VPN = "vpn";
    private static final String KEY_PREFIX_IPSEC_PSK = "ipsk000";
    private static final String KEY_PREFIX_L2TP_SECRET = "lscrt000";
    private String keyNameForDaemon(String keyName) {
        return NAMESPACE_VPN + "_" + keyName;
    }

    private void processSecrets(VpnProfile p) {
        Keystore ks = Keystore.getInstance();
        switch (p.getType()) {
            case L2TP_IPSEC_PSK:
                L2tpIpsecPskProfile pskProfile = (L2tpIpsecPskProfile) p;
                String keyName = KEY_PREFIX_IPSEC_PSK + p.getId();
                String keyNameForDaemon = NAMESPACE_VPN + "_" + keyName;
                String presharedKey = pskProfile.getPresharedKey();
                if (!presharedKey.equals(keyNameForDaemon)) {
                if (!presharedKey.equals(SECRET_SET_INDICATOR)) {
                    String keyName = KEY_PREFIX_IPSEC_PSK + p.getId();
                    int ret = ks.put(NAMESPACE_VPN, keyName, presharedKey);
                    if (ret < 0) Log.e(TAG, "keystore write failed: key=" + keyName);
                    pskProfile.setPresharedKey(keyNameForDaemon);
                    if (ret < 0) {
                        Log.e(TAG, "keystore write failed: key=" + keyName);
                    }
                    pskProfile.setPresharedKey(keyNameForDaemon(keyName));
                }
                // pass through

            case L2TP:
                L2tpProfile l2tpProfile = (L2tpProfile) p;
                keyName = KEY_PREFIX_L2TP_SECRET + p.getId();
                String keyName = KEY_PREFIX_L2TP_SECRET + p.getId();
                if (l2tpProfile.isSecretEnabled()) {
                    keyNameForDaemon = NAMESPACE_VPN + "_" + keyName;
                    String secret = l2tpProfile.getSecretString();
                    if (!secret.equals(keyNameForDaemon)) {
                    if (!secret.equals(SECRET_SET_INDICATOR)) {
                        int ret = ks.put(NAMESPACE_VPN, keyName, secret);
                        if (ret < 0) {
                            Log.e(TAG, "keystore write failed: key=" + keyName);
                        }
                        l2tpProfile.setSecretString(keyNameForDaemon);
                        l2tpProfile.setSecretString(keyNameForDaemon(keyName));
                    }
                } else {
                    ks.remove(NAMESPACE_VPN, keyName);