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

Commit fc40600e authored by Vinit Deshpande's avatar Vinit Deshpande
Browse files

Fix settings UI for passpoint networks [DO NOT MERGE]

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

Change-Id: If330baa96dedb099d5989b3df5b9778bbbcb15e3
(cherry picked from commit 597f49cd)
parent c0667853
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);
                }