Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8d2fb4a authored by Rubin Xu's avatar Rubin Xu Committed by Android (Google) Code Review
Browse files

Merge "resolve merge conflicts of 55d7fcbf to master."

parents 91d92190 b557817a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1630,6 +1630,8 @@
    <string name="wifi_unchanged">(unchanged)</string>
    <!-- Hint for unspecified fields -->
    <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
         string is listed first [CHAR LIMIT=20]-->
    <string name="wifi_wps_available_first_item">WPS available</string>
+41 −15
Original line number Diff line number Diff line
@@ -64,6 +64,8 @@ import com.android.settingslib.wifi.AccessPoint;

import java.net.Inet4Address;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;

/**
@@ -115,6 +117,8 @@ public class WifiConfigController implements TextWatcher,

    private String unspecifiedCert = "unspecified";
    private static final int unspecifiedCertIndex = 0;
    private String multipleCertSet = "multipleCert";
    private static final int multipleCertSetIndex = 1;

    private Spinner mSecuritySpinner;
    private Spinner mEapMethodSpinner;
@@ -178,6 +182,7 @@ public class WifiConfigController implements TextWatcher,
        PHASE2_FULL_ADAPTER.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        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.setOnItemSelectedListener(this);
        mProxySettingsSpinner = (Spinner) mView.findViewById(R.id.proxy_settings);
@@ -476,8 +481,20 @@ public class WifiConfigController implements TextWatcher,
                        break;
                }
                String caCert = (String) mEapCaCertSpinner.getSelectedItem();
                if (caCert.equals(unspecifiedCert)) caCert = "";
                config.enterpriseConfig.setCaCertificateAlias(caCert);
                if (caCert.equals(unspecifiedCert)) {
                    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();
                if (clientCert.equals(unspecifiedCert)) clientCert = "";
                config.enterpriseConfig.setClientCertificateAlias(clientCert);
@@ -686,8 +703,8 @@ public class WifiConfigController implements TextWatcher,
            mEapIdentityView = (TextView) mView.findViewById(R.id.identity);
            mEapAnonymousView = (TextView) mView.findViewById(R.id.anonymous);

            loadCertificates(mEapCaCertSpinner, Credentials.CA_CERTIFICATE);
            loadCertificates(mEapUserCertSpinner, Credentials.USER_PRIVATE_KEY);
            loadCertificates(mEapCaCertSpinner, Credentials.CA_CERTIFICATE, false);
            loadCertificates(mEapUserCertSpinner, Credentials.USER_PRIVATE_KEY, false);

            // Modifying an existing network
            if (mAccessPoint != null && mAccessPoint.isSaved()) {
@@ -717,7 +734,17 @@ public class WifiConfigController implements TextWatcher,
                        mPhase2Spinner.setSelection(phase2Method);
                        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());
                mEapIdentityView.setText(enterpriseConfig.getIdentity());
                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();

        String[] certs = KeyStore.getInstance().list(prefix, android.os.Process.WIFI_UID);
        if (certs == null || certs.length == 0) {
            certs = new String[] {unspecifiedCert};
        } else {
            final String[] array = new String[certs.length + 1];
            array[0] = unspecifiedCert;
            System.arraycopy(certs, 0, array, 1, certs.length);
            certs = array;
        ArrayList<String> certs = new ArrayList<String>();
        certs.add(unspecifiedCert);
        if (showMultipleCerts) {
            certs.add(multipleCertSet);
        }
        certs.addAll(
                Arrays.asList(KeyStore.getInstance().list(prefix, android.os.Process.WIFI_UID)));

        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);
        spinner.setAdapter(adapter);
    }