[Wi-Fi] Remove unsupported EAP methods for WPA3-Enterprise 192-bit - II
Refine code:
1. Change method name from getSpinnerAdapterWithEapMethods to getSpinnerAdapter
and apply it to other Spinner adapters.
2. Change method name from getSpinnerArrayWithEapMethodsTts to
getSpinnerAdapterWithEapMethodsTts and it will
setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
for adapters.
3. Remove the code of ag/8693033
4. Improve indentation.
Bug: 135127581
Test: WifiConfigControllerTest
Change-Id: I653eda11ca1b8235c5ecaa1a826a2fddd004d2e1
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 9e36912..df6e470 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -221,19 +221,13 @@
mLevels = res.getStringArray(R.array.wifi_signal);
if (Utils.isWifiOnly(mContext) || !mContext.getResources().getBoolean(
com.android.internal.R.bool.config_eap_sim_based_auth_supported)) {
- mPhase2PeapAdapter = new ArrayAdapter<CharSequence>(
- mContext, android.R.layout.simple_spinner_item,
- res.getStringArray(R.array.wifi_peap_phase2_entries));
+ mPhase2PeapAdapter = getSpinnerAdapter(R.array.wifi_peap_phase2_entries);
} else {
- mPhase2PeapAdapter = getSpinnerArrayWithEapMethodsTts(
+ mPhase2PeapAdapter = getSpinnerAdapterWithEapMethodsTts(
R.array.wifi_peap_phase2_entries_with_sim_auth);
}
- mPhase2PeapAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- mPhase2FullAdapter = new ArrayAdapter<CharSequence>(
- mContext, android.R.layout.simple_spinner_item,
- res.getStringArray(R.array.wifi_phase2_entries));
- mPhase2FullAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ mPhase2FullAdapter = getSpinnerAdapter(R.array.wifi_phase2_entries);
mUnspecifiedCertString = mContext.getString(R.string.wifi_unspecified);
mMultipleCertSetString = mContext.getString(R.string.wifi_multiple_cert_added);
@@ -680,12 +674,6 @@
config.enterpriseConfig = new WifiEnterpriseConfig();
int eapMethod = mEapMethodSpinner.getSelectedItemPosition();
int phase2Method = mPhase2Spinner.getSelectedItemPosition();
- if (mAccessPointSecurity == AccessPoint.SECURITY_EAP_SUITE_B) {
- if (eapMethod != WIFI_EAP_METHOD_TLS) {
- Log.e(TAG, "WPA3-Enterprise 192-bit EAP method must be EAP-TLS");
- return null;
- }
- }
config.enterpriseConfig.setEapMethod(eapMethod);
switch (eapMethod) {
case Eap.PEAP:
@@ -1005,21 +993,18 @@
if (refreshEapMethods) {
ArrayAdapter<CharSequence> eapMethodSpinnerAdapter;
if (mAccessPointSecurity == AccessPoint.SECURITY_EAP_SUITE_B) {
- eapMethodSpinnerAdapter = getSpinnerAdapterWithEapMethods(R.array.wifi_eap_method);
+ eapMethodSpinnerAdapter = getSpinnerAdapter(R.array.wifi_eap_method);
mEapMethodSpinner.setAdapter(eapMethodSpinnerAdapter);
// WAP3-Enterprise 192-bit only allows EAP method TLS
mEapMethodSpinner.setSelection(Eap.TLS);
mEapMethodSpinner.setEnabled(false);
} else if (Utils.isWifiOnly(mContext) || !mContext.getResources().getBoolean(
com.android.internal.R.bool.config_eap_sim_based_auth_supported)) {
- eapMethodSpinnerAdapter = getSpinnerAdapterWithEapMethods(
- R.array.eap_method_without_sim_auth);
+ eapMethodSpinnerAdapter = getSpinnerAdapter(R.array.eap_method_without_sim_auth);
mEapMethodSpinner.setAdapter(eapMethodSpinnerAdapter);
mEapMethodSpinner.setEnabled(true);
} else {
- eapMethodSpinnerAdapter = getSpinnerArrayWithEapMethodsTts(R.array.wifi_eap_method);
- eapMethodSpinnerAdapter.setDropDownViewResource(
- android.R.layout.simple_spinner_dropdown_item);
+ eapMethodSpinnerAdapter = getSpinnerAdapterWithEapMethodsTts(R.array.wifi_eap_method);
mEapMethodSpinner.setAdapter(eapMethodSpinnerAdapter);
mEapMethodSpinner.setEnabled(true);
}
@@ -1046,74 +1031,74 @@
false);
}
- // Modifying an existing network
- if (mAccessPoint != null && mAccessPoint.isSaved()) {
- WifiEnterpriseConfig enterpriseConfig = mAccessPoint.getConfig().enterpriseConfig;
- int eapMethod = enterpriseConfig.getEapMethod();
- int phase2Method = enterpriseConfig.getPhase2Method();
- mEapMethodSpinner.setSelection(eapMethod);
- showEapFieldsByMethod(eapMethod);
- switch (eapMethod) {
- case Eap.PEAP:
- switch (phase2Method) {
- case Phase2.NONE:
- mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_NONE);
- break;
- case Phase2.MSCHAPV2:
- mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_MSCHAPV2);
- break;
- case Phase2.GTC:
- mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_GTC);
- break;
- case Phase2.SIM:
- mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_SIM);
- break;
- case Phase2.AKA:
- mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_AKA);
- break;
- case Phase2.AKA_PRIME:
- mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_AKA_PRIME);
- break;
- default:
- Log.e(TAG, "Invalid phase 2 method " + phase2Method);
- break;
- }
- break;
- default:
- mPhase2Spinner.setSelection(phase2Method);
- break;
- }
- if (!TextUtils.isEmpty(enterpriseConfig.getCaPath())) {
- setSelection(mEapCaCertSpinner, mUseSystemCertsString);
- } else {
- String[] caCerts = enterpriseConfig.getCaCertificateAliases();
- if (caCerts == null) {
- setSelection(mEapCaCertSpinner, mDoNotValidateEapServerString);
- } else if (caCerts.length == 1) {
- setSelection(mEapCaCertSpinner, caCerts[0]);
- } else {
- // Reload the cert spinner with an extra "multiple certificates added" item.
- loadCertificates(
- mEapCaCertSpinner,
- Credentials.CA_CERTIFICATE,
- mDoNotValidateEapServerString,
- true,
- true);
- setSelection(mEapCaCertSpinner, mMultipleCertSetString);
+ // Modifying an existing network
+ if (mAccessPoint != null && mAccessPoint.isSaved()) {
+ WifiEnterpriseConfig enterpriseConfig = mAccessPoint.getConfig().enterpriseConfig;
+ int eapMethod = enterpriseConfig.getEapMethod();
+ int phase2Method = enterpriseConfig.getPhase2Method();
+ mEapMethodSpinner.setSelection(eapMethod);
+ showEapFieldsByMethod(eapMethod);
+ switch (eapMethod) {
+ case Eap.PEAP:
+ switch (phase2Method) {
+ case Phase2.NONE:
+ mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_NONE);
+ break;
+ case Phase2.MSCHAPV2:
+ mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_MSCHAPV2);
+ break;
+ case Phase2.GTC:
+ mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_GTC);
+ break;
+ case Phase2.SIM:
+ mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_SIM);
+ break;
+ case Phase2.AKA:
+ mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_AKA);
+ break;
+ case Phase2.AKA_PRIME:
+ mPhase2Spinner.setSelection(WIFI_PEAP_PHASE2_AKA_PRIME);
+ break;
+ default:
+ Log.e(TAG, "Invalid phase 2 method " + phase2Method);
+ break;
}
- }
- mEapDomainView.setText(enterpriseConfig.getDomainSuffixMatch());
- String userCert = enterpriseConfig.getClientCertificateAlias();
- if (TextUtils.isEmpty(userCert)) {
- setSelection(mEapUserCertSpinner, mDoNotProvideEapUserCertString);
- } else {
- setSelection(mEapUserCertSpinner, userCert);
- }
- mEapIdentityView.setText(enterpriseConfig.getIdentity());
- mEapAnonymousView.setText(enterpriseConfig.getAnonymousIdentity());
- } else {
- showEapFieldsByMethod(mEapMethodSpinner.getSelectedItemPosition());
+ break;
+ default:
+ mPhase2Spinner.setSelection(phase2Method);
+ break;
}
+ if (!TextUtils.isEmpty(enterpriseConfig.getCaPath())) {
+ setSelection(mEapCaCertSpinner, mUseSystemCertsString);
+ } else {
+ String[] caCerts = enterpriseConfig.getCaCertificateAliases();
+ if (caCerts == null) {
+ setSelection(mEapCaCertSpinner, mDoNotValidateEapServerString);
+ } else if (caCerts.length == 1) {
+ setSelection(mEapCaCertSpinner, caCerts[0]);
+ } else {
+ // Reload the cert spinner with an extra "multiple certificates added" item.
+ loadCertificates(
+ mEapCaCertSpinner,
+ Credentials.CA_CERTIFICATE,
+ mDoNotValidateEapServerString,
+ true,
+ true);
+ setSelection(mEapCaCertSpinner, mMultipleCertSetString);
+ }
+ }
+ mEapDomainView.setText(enterpriseConfig.getDomainSuffixMatch());
+ String userCert = enterpriseConfig.getClientCertificateAlias();
+ if (TextUtils.isEmpty(userCert)) {
+ setSelection(mEapUserCertSpinner, mDoNotProvideEapUserCertString);
+ } else {
+ setSelection(mEapUserCertSpinner, userCert);
+ }
+ mEapIdentityView.setText(enterpriseConfig.getIdentity());
+ mEapAnonymousView.setText(enterpriseConfig.getAnonymousIdentity());
+ } else {
+ showEapFieldsByMethod(mEapMethodSpinner.getSelectedItemPosition());
+ }
}
/**
@@ -1417,10 +1402,8 @@
spinner.setEnabled(true);
}
- final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
- context, android.R.layout.simple_spinner_item,
+ final ArrayAdapter<CharSequence> adapter = getSpinnerAdapter(
certs.toArray(new String[certs.size()]));
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
@@ -1642,12 +1625,16 @@
return returnEntries;
}
- private ArrayAdapter<CharSequence> getSpinnerAdapterWithEapMethods(
+ private ArrayAdapter<CharSequence> getSpinnerAdapter(
int contentStringArrayResId) {
- String[] eapMethods = mContext.getResources().getStringArray(
- contentStringArrayResId);
+ return getSpinnerAdapter(
+ mContext.getResources().getStringArray(contentStringArrayResId));
+ }
+
+ private ArrayAdapter<CharSequence> getSpinnerAdapter(
+ String[] contentStringArray) {
ArrayAdapter<CharSequence> spinnerAdapter = new ArrayAdapter<>(mContext,
- android.R.layout.simple_spinner_item, eapMethods);
+ android.R.layout.simple_spinner_item, contentStringArray);
spinnerAdapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
return spinnerAdapter;
@@ -1657,10 +1644,11 @@
* This function is to span the TTS strings to each EAP method items in the
* spinner to have detail TTS content for the TTS engine usage.
*/
- private ArrayAdapter<CharSequence> getSpinnerArrayWithEapMethodsTts(int resid) {
+ private ArrayAdapter<CharSequence> getSpinnerAdapterWithEapMethodsTts(
+ int contentStringArrayResId) {
final Resources res = mContext.getResources();
CharSequence[] sourceStrings = res.getStringArray(
- resid);
+ contentStringArrayResId);
CharSequence[] targetStrings = res.getStringArray(
R.array.wifi_eap_method_target_strings);
CharSequence[] ttsStrings = res.getStringArray(
@@ -1670,13 +1658,16 @@
final CharSequence[] newTtsSourceStrings = findAndReplaceTargetStrings(
sourceStrings, targetStrings, ttsStrings);
- // Build new ttsspan text arrays for talkback.
+ // Build new TtsSpan text arrays for TalkBack.
final CharSequence[] accessibilityArray = createAccessibleEntries(
sourceStrings, newTtsSourceStrings);
- // Return a new ArrayAdapter with the new talkback array.
- return new ArrayAdapter<CharSequence>(
+ // Return a new ArrayAdapter with the new TalkBack array.
+ ArrayAdapter<CharSequence> spinnerAdapter = new ArrayAdapter<>(
mContext, android.R.layout.simple_spinner_item, accessibilityArray);
+ spinnerAdapter.setDropDownViewResource(
+ android.R.layout.simple_spinner_dropdown_item);
+ return spinnerAdapter;
}
private SpannableString[] createAccessibleEntries(CharSequence entries[],