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

Commit 15b4c84c authored by Vinit Deshpande's avatar Vinit Deshpande
Browse files

Fix settings UI for passpoint networks

This change includes showing the friendly name in saved
networks list and 'Connected via provider' addition for
passpoint connections.

Change-Id: I613770e0468f888c280e82a89b8a012a841d5bbd
parent fc75374b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1333,6 +1333,8 @@
    <string name="wifi_assistant_title">Wi\u2011Fi Assistant</string>
    <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
    <string name="connected_via_wfa">Connected via Wi\u2011Fi assistant</string>
    <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] -->
    <string name="connected_via_passpoint">Connected via %1$s</string>

    <!-- Wifi Display settings. The title of the screen. [CHAR LIMIT=40] -->
    <string name="wifi_display_settings_title">Cast screen</string>
+14 −2
Original line number Diff line number Diff line
@@ -230,7 +230,11 @@ class AccessPoint extends Preference {
    }

    private void loadConfig(WifiConfiguration config) {
        if (config.isPasspoint())
            ssid = config.providerFriendlyName;
        else
            ssid = (config.SSID == null ? "" : removeDoubleQuotes(config.SSID));

        bssid = config.BSSID;
        security = getSecurity(config);
        networkId = config.networkId;
@@ -360,6 +364,7 @@ class AccessPoint extends Preference {
            refresh();
            return true;
        }

        return false;
    }

@@ -394,6 +399,11 @@ class AccessPoint extends Preference {
        }
    }

    void update(WifiConfiguration config) {
        mConfig = config;
        refresh();
    }

    int getLevel() {
        if (mRssi == Integer.MAX_VALUE) {
            return -1;
@@ -617,8 +627,10 @@ class AccessPoint extends Preference {
        StringBuilder summary = new StringBuilder();

        if (isActive()) { // This is the active connection
            String passpointProvider = (mConfig != null && mConfig.isPasspoint()) ?
                    mConfig.providerFriendlyName : null;
            summary.append(Summary.get(context, getState(),
                    networkId == WifiConfiguration.INVALID_NETWORK_ID));
                    networkId == WifiConfiguration.INVALID_NETWORK_ID, passpointProvider));
        } else if (mConfig != null
                && mConfig.hasNoInternetAccess()) {
            summary.append(context.getString(R.string.wifi_no_internet));
+21 −5
Original line number Diff line number Diff line
@@ -20,13 +20,21 @@ import com.android.settings.R;

import android.content.Context;
import android.net.NetworkInfo.DetailedState;
import android.text.TextUtils;

class Summary {
    static String get(Context context, String ssid, DetailedState state, boolean isEphemeral) {
        if (state == DetailedState.CONNECTED && isEphemeral && ssid == null) {
    static String get(Context context, String ssid, DetailedState state, boolean isEphemeral,
                      String passpointProvider) {
        if (state == DetailedState.CONNECTED) {
            if (TextUtils.isEmpty(passpointProvider) == false) {
                // Special case for connected + ephemeral networks.
                String format = context.getString(R.string.connected_via_passpoint);
                return String.format(format, passpointProvider);
            } else if (isEphemeral && ssid == null) {
                // Special case for connected + ephemeral networks.
                return context.getString(R.string.connected_via_wfa);
            }
        }

        String[] formats = context.getResources().getStringArray((ssid == null)
                ? R.array.wifi_status : R.array.wifi_status_with_ssid);
@@ -38,7 +46,15 @@ class Summary {
        return String.format(formats[index], ssid);
    }

    static String get(Context context, String ssid, DetailedState state, boolean isEphemeral) {
        return get(context, ssid, state, isEphemeral, null);
    }
    static String get(Context context, DetailedState state, boolean isEphemeral) {
        return get(context, null, state, isEphemeral);
        return get(context, null, state, isEphemeral, null);
    }

    static String get(Context context, DetailedState state, boolean isEphemeral,
                      String passpointProvider) {
        return get(context, null, state, isEphemeral, passpointProvider);
    }
}
+23 −0
Original line number Diff line number Diff line
@@ -653,6 +653,7 @@ public class WifiSettings extends RestrictedSettingsFragment
        switch (wifiState) {
            case WifiManager.WIFI_STATE_ENABLED:
                // AccessPoints are automatically sorted with TreeSet.
                mLastInfo = mWifiManager.getConnectionInfo();
                final Collection<AccessPoint> accessPoints =
                        constructAccessPoints(getActivity(), mWifiManager, mLastInfo,
                                mLastNetworkInfo);
@@ -721,6 +722,7 @@ public class WifiSettings extends RestrictedSettingsFragment
        /** Lookup table to more quickly update AccessPoints by only considering objects with the
         * correct SSID.  Maps SSID -> List of AccessPoints with the given SSID.  */
        Multimap<String, AccessPoint> apMap = new Multimap<String, AccessPoint>();
        WifiConfiguration connectionConfig = null;

        final List<WifiConfiguration> configs = wifiManager.getConfiguredNetworks();
        if (configs != null) {
@@ -732,13 +734,23 @@ public class WifiSettings extends RestrictedSettingsFragment
                }
            }
            for (WifiConfiguration config : configs) {
                if (lastInfo != null && lastInfo.getNetworkId() == config.networkId) {
                    connectionConfig = config;
                }

                if (config.selfAdded && config.numAssociation == 0) {
                    continue;
                }

                if (config.isPasspoint()) {
                    continue;
                }

                AccessPoint accessPoint = new AccessPoint(context, config);
                if (lastInfo != null && lastNetworkInfo != null) {
                    accessPoint.update(lastInfo, lastNetworkInfo);
                }

                accessPoints.add(accessPoint);
                apMap.put(accessPoint.ssid, accessPoint);
            }
@@ -758,11 +770,22 @@ public class WifiSettings extends RestrictedSettingsFragment
                    if (accessPoint.update(result))
                        found = true;
                }

                if (!found) {

                    AccessPoint accessPoint = new AccessPoint(context, result);
                    if (lastInfo != null && lastNetworkInfo != null) {
                        accessPoint.update(lastInfo, lastNetworkInfo);
                    }

                    if (lastInfo != null && lastInfo.getBSSID() != null
                            && lastInfo.getBSSID().equals(result.BSSID)
                            && connectionConfig != null && connectionConfig.isPasspoint()) {
                        /* This network is connected via this passpoint config */
                        /* SSID match is not going to work for it; so update explicitly */
                        accessPoint.update(connectionConfig);
                    }

                    accessPoints.add(accessPoint);
                    apMap.put(accessPoint.ssid, accessPoint);
                }