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

Commit 597f49cd 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: If330baa96dedb099d5989b3df5b9778bbbcb15e3
parent afbeb2c2
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -67,6 +67,8 @@

    <!-- 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>

    <!-- Bluetooth settings.  Message when a device is disconnected -->
    <string name="bluetooth_disconnected">Disconnected</string>
+28 −6
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.net.wifi.WifiConfiguration.KeyMgmt;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.util.LruCache;

@@ -274,8 +275,10 @@ public class AccessPoint implements Comparable<AccessPoint> {
        StringBuilder summary = new StringBuilder();

        if (isActive()) { // This is the active connection
            String passpointProvider = (mConfig != null && mConfig.isPasspoint()) ?
                    mConfig.providerFriendlyName : null;
            summary.append(getSummary(mContext, getDetailedState(),
                    networkId == WifiConfiguration.INVALID_NETWORK_ID));
                    networkId == WifiConfiguration.INVALID_NETWORK_ID, passpointProvider));
        } else if (mConfig != null
                && mConfig.hasNoInternetAccess()) {
            summary.append(mContext.getString(R.string.wifi_no_internet));
@@ -559,7 +562,11 @@ public class AccessPoint implements Comparable<AccessPoint> {
    }

    void loadConfig(WifiConfiguration config) {
        if (config.isPasspoint())
            ssid = config.providerFriendlyName;
        else
            ssid = (config.SSID == null ? "" : removeDoubleQuotes(config.SSID));
            
        security = getSecurity(config);
        networkId = config.networkId;
        mConfig = config;
@@ -643,12 +650,22 @@ public class AccessPoint implements Comparable<AccessPoint> {
        return reorder;
    }

    void update(WifiConfiguration config) {
        mConfig = config;
    }
    
    public static String getSummary(Context context, String ssid, DetailedState state,
            boolean isEphemeral) {
            boolean isEphemeral, String passpointProvider) {
        if (state == DetailedState.CONNECTED && isEphemeral && ssid == null) {
            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);
@@ -661,7 +678,12 @@ public class AccessPoint implements Comparable<AccessPoint> {
    }

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

    public static String getSummary(Context context, DetailedState state, boolean isEphemeral,
            String passpointProvider) {
        return getSummary(context, null, state, isEphemeral, passpointProvider);
    }

    public static String convertToQuotedString(String string) {
+16 −0
Original line number Diff line number Diff line
@@ -220,14 +220,21 @@ public class WifiTracker {
        /** 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 = mWifiManager.getConfiguredNetworks();
        if (configs != null) {
            mSavedNetworksExist = configs.size() != 0;
            for (WifiConfiguration config : configs) {
                if (mLastInfo != null && mLastInfo.getNetworkId() == config.networkId) {
                    connectionConfig = config;
                }
                if (config.selfAdded && config.numAssociation == 0) {
                    continue;
                }
                if (config.isPasspoint()) {
                    continue;
                }
                AccessPoint accessPoint = getCachedOrCreate(config);
                if (mLastInfo != null && mLastNetworkInfo != null) {
                    accessPoint.update(mLastInfo, mLastNetworkInfo);
@@ -264,6 +271,15 @@ public class WifiTracker {
                    if (mLastInfo != null && mLastNetworkInfo != null) {
                        accessPoint.update(mLastInfo, mLastNetworkInfo);
                    }

                    if (mLastInfo != null && mLastInfo.getBSSID() != null
                            && mLastInfo.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);
                    }

                    mAccessPoints.add(accessPoint);
                    apMap.put(accessPoint.getSsid(), accessPoint);
                }