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.
diff --git a/src/com/android/settings/vpn/VpnProfileEditor.java b/src/com/android/settings/vpn/VpnProfileEditor.java
index a1cdc76..bf2e57d 100644
--- a/src/com/android/settings/vpn/VpnProfileEditor.java
+++ b/src/com/android/settings/vpn/VpnProfileEditor.java
@@ -25,6 +25,7 @@
 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 @@
  * 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 @@
      * 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 @@
                         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 @@
                         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 @@
         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);
diff --git a/src/com/android/settings/vpn/VpnSettings.java b/src/com/android/settings/vpn/VpnSettings.java
index c41a105..f0e71f7 100644
--- a/src/com/android/settings/vpn/VpnSettings.java
+++ b/src/com/android/settings/vpn/VpnSettings.java
@@ -18,6 +18,7 @@
 
 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 @@
 
     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 @@
         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);