resolve merge conflicts of 55d7fcbfc2 to master.

Change-Id: Ib0876ea153e8a8f7c8ad5438915d39c9ae97e51b
This commit is contained in:
Rubin Xu
2016-01-27 00:34:53 +00:00
2 changed files with 43 additions and 15 deletions

View File

@@ -1630,6 +1630,8 @@
<string name="wifi_unchanged">(unchanged)</string> <string name="wifi_unchanged">(unchanged)</string>
<!-- Hint for unspecified fields --> <!-- Hint for unspecified fields -->
<string name="wifi_unspecified">(unspecified)</string> <string name="wifi_unspecified">(unspecified)</string>
<!-- Hint for multiple certificates being added to the configuration -->
<string name="wifi_multiple_cert_added">(Multiple certificates added)</string>
<!-- Substring of status line when Wi-Fi Protected Setup (WPS) is available and <!-- Substring of status line when Wi-Fi Protected Setup (WPS) is available and
string is listed first [CHAR LIMIT=20]--> string is listed first [CHAR LIMIT=20]-->
<string name="wifi_wps_available_first_item">WPS available</string> <string name="wifi_wps_available_first_item">WPS available</string>

View File

@@ -64,6 +64,8 @@ import com.android.settingslib.wifi.AccessPoint;
import java.net.Inet4Address; import java.net.Inet4Address;
import java.net.InetAddress; import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
/** /**
@@ -115,6 +117,8 @@ public class WifiConfigController implements TextWatcher,
private String unspecifiedCert = "unspecified"; private String unspecifiedCert = "unspecified";
private static final int unspecifiedCertIndex = 0; private static final int unspecifiedCertIndex = 0;
private String multipleCertSet = "multipleCert";
private static final int multipleCertSetIndex = 1;
private Spinner mSecuritySpinner; private Spinner mSecuritySpinner;
private Spinner mEapMethodSpinner; private Spinner mEapMethodSpinner;
@@ -178,6 +182,7 @@ public class WifiConfigController implements TextWatcher,
PHASE2_FULL_ADAPTER.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); PHASE2_FULL_ADAPTER.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
unspecifiedCert = mContext.getString(R.string.wifi_unspecified); unspecifiedCert = mContext.getString(R.string.wifi_unspecified);
multipleCertSet = mContext.getString(R.string.wifi_multiple_cert_added);
mIpSettingsSpinner = (Spinner) mView.findViewById(R.id.ip_settings); mIpSettingsSpinner = (Spinner) mView.findViewById(R.id.ip_settings);
mIpSettingsSpinner.setOnItemSelectedListener(this); mIpSettingsSpinner.setOnItemSelectedListener(this);
mProxySettingsSpinner = (Spinner) mView.findViewById(R.id.proxy_settings); mProxySettingsSpinner = (Spinner) mView.findViewById(R.id.proxy_settings);
@@ -476,8 +481,20 @@ public class WifiConfigController implements TextWatcher,
break; break;
} }
String caCert = (String) mEapCaCertSpinner.getSelectedItem(); String caCert = (String) mEapCaCertSpinner.getSelectedItem();
if (caCert.equals(unspecifiedCert)) caCert = ""; if (caCert.equals(unspecifiedCert)) {
config.enterpriseConfig.setCaCertificateAlias(caCert); config.enterpriseConfig.setCaCertificateAliases(null);
} else if (caCert.equals(multipleCertSet)) {
if (mAccessPoint != null) {
if (!mAccessPoint.isSaved()) {
Log.e(TAG, "Multiple certs can only be set when editing saved network");
}
config.enterpriseConfig.setCaCertificateAliases(
mAccessPoint.getConfig().enterpriseConfig.getCaCertificateAliases());
}
} else {
config.enterpriseConfig.setCaCertificateAliases(new String[] {caCert});
}
String clientCert = (String) mEapUserCertSpinner.getSelectedItem(); String clientCert = (String) mEapUserCertSpinner.getSelectedItem();
if (clientCert.equals(unspecifiedCert)) clientCert = ""; if (clientCert.equals(unspecifiedCert)) clientCert = "";
config.enterpriseConfig.setClientCertificateAlias(clientCert); config.enterpriseConfig.setClientCertificateAlias(clientCert);
@@ -686,8 +703,8 @@ public class WifiConfigController implements TextWatcher,
mEapIdentityView = (TextView) mView.findViewById(R.id.identity); mEapIdentityView = (TextView) mView.findViewById(R.id.identity);
mEapAnonymousView = (TextView) mView.findViewById(R.id.anonymous); mEapAnonymousView = (TextView) mView.findViewById(R.id.anonymous);
loadCertificates(mEapCaCertSpinner, Credentials.CA_CERTIFICATE); loadCertificates(mEapCaCertSpinner, Credentials.CA_CERTIFICATE, false);
loadCertificates(mEapUserCertSpinner, Credentials.USER_PRIVATE_KEY); loadCertificates(mEapUserCertSpinner, Credentials.USER_PRIVATE_KEY, false);
// Modifying an existing network // Modifying an existing network
if (mAccessPoint != null && mAccessPoint.isSaved()) { if (mAccessPoint != null && mAccessPoint.isSaved()) {
@@ -717,7 +734,17 @@ public class WifiConfigController implements TextWatcher,
mPhase2Spinner.setSelection(phase2Method); mPhase2Spinner.setSelection(phase2Method);
break; break;
} }
setSelection(mEapCaCertSpinner, enterpriseConfig.getCaCertificateAlias()); String[] caCerts = enterpriseConfig.getCaCertificateAliases();
if (caCerts == null) {
setSelection(mEapCaCertSpinner, unspecifiedCert);
} 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, true);
mEapCaCertSpinner.setSelection(multipleCertSetIndex);
}
setSelection(mEapUserCertSpinner, enterpriseConfig.getClientCertificateAlias()); setSelection(mEapUserCertSpinner, enterpriseConfig.getClientCertificateAlias());
mEapIdentityView.setText(enterpriseConfig.getIdentity()); mEapIdentityView.setText(enterpriseConfig.getIdentity());
mEapAnonymousView.setText(enterpriseConfig.getAnonymousIdentity()); mEapAnonymousView.setText(enterpriseConfig.getAnonymousIdentity());
@@ -949,21 +976,20 @@ public class WifiConfigController implements TextWatcher,
} }
} }
private void loadCertificates(Spinner spinner, String prefix) { private void loadCertificates(Spinner spinner, String prefix, boolean showMultipleCerts) {
final Context context = mConfigUi.getContext(); final Context context = mConfigUi.getContext();
String[] certs = KeyStore.getInstance().list(prefix, android.os.Process.WIFI_UID); ArrayList<String> certs = new ArrayList<String>();
if (certs == null || certs.length == 0) { certs.add(unspecifiedCert);
certs = new String[] {unspecifiedCert}; if (showMultipleCerts) {
} else { certs.add(multipleCertSet);
final String[] array = new String[certs.length + 1];
array[0] = unspecifiedCert;
System.arraycopy(certs, 0, array, 1, certs.length);
certs = array;
} }
certs.addAll(
Arrays.asList(KeyStore.getInstance().list(prefix, android.os.Process.WIFI_UID)));
final ArrayAdapter<String> adapter = new ArrayAdapter<String>( final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
context, android.R.layout.simple_spinner_item, certs); context, android.R.layout.simple_spinner_item,
certs.toArray(new String[certs.size()]));
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter); spinner.setAdapter(adapter);
} }