Merge change 8183 into donut

* changes:
  Improve UX of adding credential...
diff --git a/src/com/android/settings/wifi/AccessPointDialog.java b/src/com/android/settings/wifi/AccessPointDialog.java
index c9f511b..4152056 100644
--- a/src/com/android/settings/wifi/AccessPointDialog.java
+++ b/src/com/android/settings/wifi/AccessPointDialog.java
@@ -246,7 +246,6 @@
         } else if (mMode == MODE_INFO) {
             if (mState.isEnterprise() && !mState.configured) {
                 setLayout(R.layout.wifi_ap_configure);
-                defaultPasswordVisibility = false;
                 setEnterpriseFieldsVisible(true);
             } else {
                 setLayout(R.layout.wifi_ap_info);
@@ -319,6 +318,8 @@
         if (mMode == MODE_CONFIGURE ||
                 (mState.isEnterprise() && !mState.configured)) {
             setEnterpriseFields(view);
+            mPhase2Spinner.setSelection(getSelectionIndex(
+                    R.array.wifi_phase2_entries, mState.getPhase2()));
             mEapSpinner.setSelection(getSelectionIndex(
                     R.array.wifi_eap_entries, mState.getEap()));
             mClientCertSpinner.setSelection(getSelectionIndex(
@@ -663,14 +664,15 @@
             }
         }
         switch (securityType) {
+            case SECURITY_IEEE8021X: 
             case SECURITY_WPA_EAP: {
-                mState.setSecurity(AccessPointState.WPA_EAP);
+                if (securityType == SECURITY_WPA_EAP) {
+                    mState.setSecurity(AccessPointState.WPA_EAP);
+                } else {
+                    mState.setSecurity(AccessPointState.IEEE8021X);
+                }
                 mState.setEap(mEapSpinner.getSelectedItemPosition());
-                break;
-            }
-            case SECURITY_IEEE8021X: {
-                mState.setSecurity(AccessPointState.IEEE8021X);
-                mState.setEap(mEapSpinner.getSelectedItemPosition());
+                mState.setPhase2((String)mPhase2Spinner.getSelectedItem());
                 break;
             }
             default:
diff --git a/src/com/android/settings/wifi/AccessPointState.java b/src/com/android/settings/wifi/AccessPointState.java
index 8fb651b..899c304 100644
--- a/src/com/android/settings/wifi/AccessPointState.java
+++ b/src/com/android/settings/wifi/AccessPointState.java
@@ -375,12 +375,22 @@
 
     /* For Enterprise Fields */
     public void setEnterpriseField(int field, String value) {
-        if (value != null && field >= 0 && field < MAX_ENTRPRISE_FIELD) {
+        if ((value != null) && (field >= 0) && (field < MAX_ENTRPRISE_FIELD)) {
             this.mEnterpriseFields[field] = value;
             requestRefresh();
         }
     }
 
+    public void setPhase2(String phase2) {
+        if (!TextUtils.isEmpty(phase2) && (!phase2.equals("None"))) {
+            mPhase2 = phase2;
+        }
+    }
+
+    public String getPhase2() {
+        return mPhase2;
+    }
+
     public void setEap(int method) {
         mEap =  EAP_METHOD[method];
         requestRefresh();
@@ -495,6 +505,12 @@
         config.hiddenSSID = hiddenSsid;
         config.SSID = convertToQuotedString(ssid);
         config.eap = mEap;
+
+        if (!TextUtils.isEmpty(mPhase2)) {
+            config.phase2 = convertToQuotedString("auth=" + mPhase2);
+        } else {
+            config.phase2 = null;
+        }
         if (!TextUtils.isEmpty(mEnterpriseFields[IDENTITY])) {
             config.identity =
                     convertToQuotedString(mEnterpriseFields[IDENTITY]);