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


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


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


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


    void update(WifiConfiguration config) {
        mConfig = config;
    }
    
    public static String getSummary(Context context, String ssid, DetailedState state,
    public static String getSummary(Context context, String ssid, DetailedState state,
            boolean isEphemeral) {
            boolean isEphemeral, String passpointProvider) {
        if (state == DetailedState.CONNECTED && isEphemeral && ssid == null) {
        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.
                // Special case for connected + ephemeral networks.
                return context.getString(R.string.connected_via_wfa);
                return context.getString(R.string.connected_via_wfa);
            }
            }
        }


        String[] formats = context.getResources().getStringArray((ssid == null)
        String[] formats = context.getResources().getStringArray((ssid == null)
                ? R.array.wifi_status : R.array.wifi_status_with_ssid);
                ? 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) {
    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) {
    public static String convertToQuotedString(String string) {
+16 −0
Original line number Original line 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
        /** Lookup table to more quickly update AccessPoints by only considering objects with the
         * correct SSID.  Maps SSID -> List of AccessPoints with the given SSID.  */
         * correct SSID.  Maps SSID -> List of AccessPoints with the given SSID.  */
        Multimap<String, AccessPoint> apMap = new Multimap<String, AccessPoint>();
        Multimap<String, AccessPoint> apMap = new Multimap<String, AccessPoint>();
        WifiConfiguration connectionConfig = null;


        final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks();
        final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks();
        if (configs != null) {
        if (configs != null) {
            mSavedNetworksExist = configs.size() != 0;
            mSavedNetworksExist = configs.size() != 0;
            for (WifiConfiguration config : configs) {
            for (WifiConfiguration config : configs) {
                if (mLastInfo != null && mLastInfo.getNetworkId() == config.networkId) {
                    connectionConfig = config;
                }
                if (config.selfAdded && config.numAssociation == 0) {
                if (config.selfAdded && config.numAssociation == 0) {
                    continue;
                    continue;
                }
                }
                if (config.isPasspoint()) {
                    continue;
                }
                AccessPoint accessPoint = getCachedOrCreate(config);
                AccessPoint accessPoint = getCachedOrCreate(config);
                if (mLastInfo != null && mLastNetworkInfo != null) {
                if (mLastInfo != null && mLastNetworkInfo != null) {
                    accessPoint.update(mLastInfo, mLastNetworkInfo);
                    accessPoint.update(mLastInfo, mLastNetworkInfo);
@@ -264,6 +271,15 @@ public class WifiTracker {
                    if (mLastInfo != null && mLastNetworkInfo != null) {
                    if (mLastInfo != null && mLastNetworkInfo != null) {
                        accessPoint.update(mLastInfo, mLastNetworkInfo);
                        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);
                    mAccessPoints.add(accessPoint);
                    apMap.put(accessPoint.getSsid(), accessPoint);
                    apMap.put(accessPoint.getSsid(), accessPoint);
                }
                }