From ba7ee527d8683f718efbc85558310b8ba269809b Mon Sep 17 00:00:00 2001 From: Partha N Date: Tue, 17 Jan 2012 18:33:03 -0800 Subject: [PATCH] Enable EAP-pwd configuration in WiFi Settings. EAP-pwd (RFC 5931) is an EAP method that uses a shared password for authentication. It has the simplicity of setup as WPA2-PSK (no certificates), but provides strong authenticaiton like 802.1x. Modified the Settings screen so that the only visible fields when choosing EAP-pwd are 'identity' and 'password'. Change-Id: I9365d873b43c416ddfa4cae47b7419d902c212a7 Signed-off-by: Partha N --- res/layout/wifi_dialog.xml | 18 +++++++++----- res/values/arrays.xml | 3 +++ .../settings/wifi/WifiConfigController.java | 24 +++++++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/res/layout/wifi_dialog.xml b/res/layout/wifi_dialog.xml index 1b4d0629849..f06c33207ac 100644 --- a/res/layout/wifi_dialog.xml +++ b/res/layout/wifi_dialog.xml @@ -63,7 +63,8 @@ style="@style/wifi_section" android:visibility="gone"> - - - - - - TLS TTLS + + PWD @@ -416,6 +418,7 @@ PEAP TLS TTLS + PWD diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index 2f8ae549106..c64a225dab6 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -97,6 +97,12 @@ public class WifiConfigController implements TextWatcher, public static final int PROXY_NONE = 0; public static final int PROXY_STATIC = 1; + /* These values from from "wifi_eap_method" resource array */ + public static final int WIFI_EAP_METHOD_PEAP = 0; + public static final int WIFI_EAP_METHOD_TLS = 1; + public static final int WIFI_EAP_METHOD_TTLS = 2; + public static final int WIFI_EAP_METHOD_PWD = 3; + private static final String TAG = "WifiConfigController"; private Spinner mNetworkSetupSpinner; @@ -541,6 +547,7 @@ public class WifiConfigController implements TextWatcher, if (mEapMethodSpinner == null) { mEapMethodSpinner = (Spinner) mView.findViewById(R.id.method); + mEapMethodSpinner.setOnItemSelectedListener(this); mPhase2Spinner = (Spinner) mView.findViewById(R.id.phase2); mEapCaCertSpinner = (Spinner) mView.findViewById(R.id.ca_cert); mEapUserCertSpinner = (Spinner) mView.findViewById(R.id.user_cert); @@ -562,6 +569,21 @@ public class WifiConfigController implements TextWatcher, mEapAnonymousView.setText(config.anonymous_identity.value()); } } + + mView.findViewById(R.id.l_method).setVisibility(View.VISIBLE); + mView.findViewById(R.id.l_identity).setVisibility(View.VISIBLE); + + if (mEapMethodSpinner.getSelectedItemPosition() == WIFI_EAP_METHOD_PWD){ + mView.findViewById(R.id.l_phase2).setVisibility(View.GONE); + mView.findViewById(R.id.l_ca_cert).setVisibility(View.GONE); + mView.findViewById(R.id.l_user_cert).setVisibility(View.GONE); + mView.findViewById(R.id.l_anonymous).setVisibility(View.GONE); + } else { + mView.findViewById(R.id.l_phase2).setVisibility(View.VISIBLE); + mView.findViewById(R.id.l_ca_cert).setVisibility(View.VISIBLE); + mView.findViewById(R.id.l_user_cert).setVisibility(View.VISIBLE); + mView.findViewById(R.id.l_anonymous).setVisibility(View.VISIBLE); + } } private void showNetworkSetupFields() { @@ -761,6 +783,8 @@ public class WifiConfigController implements TextWatcher, if (parent == mSecuritySpinner) { mAccessPointSecurity = position; showSecurityFields(); + } else if (parent == mEapMethodSpinner) { + showSecurityFields(); } else if (parent == mNetworkSetupSpinner) { showNetworkSetupFields(); } else if (parent == mProxySettingsSpinner) {