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

Commit 4cb473d3 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fetch the WiFiInfo from NetworkCapabilities" am: f8652f42 am: eba7b941

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1659161

Change-Id: I739d76da77be587e1e01417c163a55a408cd3233
parents f73591b4 eba7b941
Loading
Loading
Loading
Loading
+44 −45
Original line number Diff line number Diff line
@@ -66,6 +66,15 @@ public class WifiStatusTracker {
        @Override
        public void onCapabilitiesChanged(
                Network network, NetworkCapabilities networkCapabilities) {
            WifiInfo wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();
            updateWifiInfo(wifiInfo);
            updateStatusLabel();
            mCallback.run();
        }

        @Override
        public void onLost(Network network) {
            updateWifiInfo(null);
            updateStatusLabel();
            mCallback.run();
        }
@@ -170,15 +179,14 @@ public class WifiStatusTracker {
        String action = intent.getAction();
        if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
            updateWifiState();
        } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
        }
    }

    private void updateWifiInfo(WifiInfo wifiInfo) {
        updateWifiState();
            final NetworkInfo networkInfo =
                    intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
            connected = networkInfo != null && networkInfo.isConnected();
            mWifiInfo = null;
        connected = wifiInfo != null;
        mWifiInfo = wifiInfo;
        ssid = null;
            if (connected) {
                mWifiInfo = mWifiManager.getConnectionInfo();
        if (mWifiInfo != null) {
            if (mWifiInfo.isPasspointAp() || mWifiInfo.isOsuAp()) {
                ssid = mWifiInfo.getPasspointProviderFriendlyName();
@@ -189,15 +197,6 @@ public class WifiStatusTracker {
            maybeRequestNetworkScore();
        }
    }
            updateStatusLabel();
            mCallback.run();
        } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) {
            // Default to -200 as its below WifiManager.MIN_RSSI.
            updateRssi(intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200));
            updateStatusLabel();
            mCallback.run();
        }
    }

    private void updateWifiState() {
        state = mWifiManager.getWifiState();
+0 −2
Original line number Diff line number Diff line
@@ -344,8 +344,6 @@ public class NetworkControllerImpl extends BroadcastReceiver

        // broadcasts
        IntentFilter filter = new IntentFilter();
        filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
        filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
        filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        filter.addAction(Intent.ACTION_SIM_STATE_CHANGED);
        filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
+11 −14
Original line number Diff line number Diff line
@@ -101,11 +101,7 @@ public class WifiSignalController extends
                wifiDesc, mCurrentState.isTransient, mCurrentState.statusLabel);
    }

    /**
     * Fetches wifi initial state replacing the initial sticky broadcast.
     */
    public void fetchInitialState() {
        mWifiTracker.fetchInitialState();
    private void copyWifiStates() {
        mCurrentState.enabled = mWifiTracker.enabled;
        mCurrentState.isDefault = mWifiTracker.isDefaultNetwork;
        mCurrentState.connected = mWifiTracker.connected;
@@ -113,6 +109,14 @@ public class WifiSignalController extends
        mCurrentState.rssi = mWifiTracker.rssi;
        mCurrentState.level = mWifiTracker.level;
        mCurrentState.statusLabel = mWifiTracker.statusLabel;
    }

    /**
     * Fetches wifi initial state replacing the initial sticky broadcast.
     */
    public void fetchInitialState() {
        mWifiTracker.fetchInitialState();
        copyWifiStates();
        notifyListenersIfNecessary();
    }

@@ -121,19 +125,12 @@ public class WifiSignalController extends
     */
    public void handleBroadcast(Intent intent) {
        mWifiTracker.handleBroadcast(intent);
        mCurrentState.enabled = mWifiTracker.enabled;
        mCurrentState.isDefault = mWifiTracker.isDefaultNetwork;
        mCurrentState.connected = mWifiTracker.connected;
        mCurrentState.ssid = mWifiTracker.ssid;
        mCurrentState.rssi = mWifiTracker.rssi;
        mCurrentState.level = mWifiTracker.level;
        mCurrentState.statusLabel = mWifiTracker.statusLabel;
        copyWifiStates();
        notifyListenersIfNecessary();
    }

    private void handleStatusUpdated() {
        mCurrentState.statusLabel = mWifiTracker.statusLabel;
        mCurrentState.isDefault = mWifiTracker.isDefaultNetwork;
        copyWifiStates();
        notifyListenersIfNecessary();
    }

+18 −3
Original line number Diff line number Diff line
@@ -40,7 +40,9 @@ import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.net.NetworkScoreManager;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Handler;
import android.provider.Settings;
@@ -51,7 +53,6 @@ import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyDisplayInfo;
import android.telephony.TelephonyManager;
import android.testing.TestableLooper;
@@ -115,6 +116,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
    protected int mSubId;

    private NetworkCapabilities mNetCapabilities;
    private ConnectivityManager.NetworkCallback mDefaultNetworkCallback;
    private ConnectivityManager.NetworkCallback mNetworkCallback;

    @Rule
@@ -214,6 +216,10 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
            ArgumentCaptor.forClass(ConnectivityManager.NetworkCallback.class);
        verify(mMockCm, atLeastOnce())
            .registerDefaultNetworkCallback(callbackArg.capture(), isA(Handler.class));
        mDefaultNetworkCallback = callbackArg.getValue();
        assertNotNull(mDefaultNetworkCallback);
        verify(mMockCm, atLeastOnce()).registerNetworkCallback(
                isA(NetworkRequest.class), callbackArg.capture(), isA(Handler.class));
        mNetworkCallback = callbackArg.getValue();
        assertNotNull(mNetworkCallback);
    }
@@ -270,10 +276,19 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
    }

    public void setConnectivityViaCallback(
        int networkType, boolean validated, boolean isConnected){
            int networkType, boolean validated, boolean isConnected, WifiInfo wifiInfo) {
        mNetCapabilities.setTransportInfo(wifiInfo);
        setConnectivityCommon(networkType, validated, isConnected);
        mDefaultNetworkCallback.onCapabilitiesChanged(
            mock(Network.class), new NetworkCapabilities(mNetCapabilities));
        if (networkType == NetworkCapabilities.TRANSPORT_WIFI) {
            if (isConnected) {
                mNetworkCallback.onCapabilitiesChanged(
                        mock(Network.class), new NetworkCapabilities(mNetCapabilities));
            } else {
                mNetworkCallback.onLost(mock(Network.class));
            }
        }
    }

    private void setConnectivityCommon(
+20 −19
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
    // These match the constants in WifiManager and need to be kept up to date.
    private static final int MIN_RSSI = -100;
    private static final int MAX_RSSI = -55;
    private WifiInfo mWifiInfo = mock(WifiInfo.class);

    @Test
    public void testWifiIcon() {
@@ -41,15 +42,16 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {

        setWifiState(true, testSsid);
        setWifiLevel(0);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, false, true, mWifiInfo);
        // Connected, but still not validated - does not show
        verifyLastWifiIcon(false, WifiIcons.WIFI_SIGNAL_STRENGTH[0][0]);

        for (int testLevel = 0; testLevel < WifiIcons.WIFI_LEVEL_COUNT; testLevel++) {
            setWifiLevel(testLevel);

            setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_WIFI, true, true);
            setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, true, true, mWifiInfo);
            verifyLastWifiIcon(true, WifiIcons.WIFI_SIGNAL_STRENGTH[1][testLevel]);
            setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_WIFI, false, true);
            setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, false, true, mWifiInfo);
            // Icon does not show if not validated
            verifyLastWifiIcon(false, WifiIcons.WIFI_SIGNAL_STRENGTH[0][testLevel]);
        }
@@ -69,10 +71,10 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
        for (int testLevel = 0; testLevel < WifiIcons.WIFI_LEVEL_COUNT; testLevel++) {
            setWifiLevel(testLevel);

            setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_WIFI, true, true);
            setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, true, true, mWifiInfo);
            verifyLastQsWifiIcon(true, true, WifiIcons.QS_WIFI_SIGNAL_STRENGTH[1][testLevel],
                    testSsid);
            setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_WIFI, false, true);
            setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, false, true, mWifiInfo);
            verifyLastQsWifiIcon(true, true, WifiIcons.QS_WIFI_SIGNAL_STRENGTH[0][testLevel],
                    testSsid);
        }
@@ -86,7 +88,7 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
        setWifiEnabled(true);
        setWifiState(true, testSsid);
        setWifiLevel(testLevel);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_WIFI, true, true);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, true, true, mWifiInfo);
        verifyLastQsWifiIcon(true, true,
                WifiIcons.QS_WIFI_SIGNAL_STRENGTH[1][testLevel], testSsid);

@@ -111,14 +113,14 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
        setWifiEnabled(true);
        setWifiState(true, testSsid);
        setWifiLevel(testLevel);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_WIFI, true, true);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, true, true, mWifiInfo);
        verifyLastWifiIcon(true, WifiIcons.WIFI_SIGNAL_STRENGTH[1][testLevel]);

        setupDefaultSignal();
        setGsmRoaming(true);
        // Still be on wifi though.
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_WIFI, true, true);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, true, true, mWifiInfo);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_CELLULAR, false, false, mWifiInfo);
        verifyLastMobileDataIndicators(true,
                DEFAULT_LEVEL,
                0, true);
@@ -132,10 +134,10 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
        setWifiEnabled(true);
        setWifiState(true, testSsid);
        setWifiLevel(testLevel);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_WIFI, true, true);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, true, true, mWifiInfo);
        verifyLastWifiIcon(true, WifiIcons.WIFI_SIGNAL_STRENGTH[1][testLevel]);

        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, false, true);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, false, true, mWifiInfo);
        verifyLastWifiIcon(false, WifiIcons.WIFI_SIGNAL_STRENGTH[0][testLevel]);
    }

@@ -147,11 +149,11 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
        setWifiEnabled(true);
        setWifiState(true, testSsid);
        setWifiLevel(testLevel);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_WIFI, true, true);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, true, true, mWifiInfo);
        verifyLastWifiIcon(true, WifiIcons.WIFI_SIGNAL_STRENGTH[1][testLevel]);

        setWifiState(false, testSsid);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, false, false);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, false, false, mWifiInfo);
        verifyLastWifiIcon(false, WifiIcons.WIFI_NO_NETWORK);
    }

@@ -162,14 +164,14 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
        setWifiEnabled(true);
        verifyLastWifiIcon(false, WifiIcons.WIFI_NO_NETWORK);

        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_VPN, false, true);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_VPN, true, true);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_VPN, false, true, mWifiInfo);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_VPN, true, true, mWifiInfo);
        verifyLastWifiIcon(false, WifiIcons.WIFI_NO_NETWORK);

        // Mock calling setUnderlyingNetworks.
        setWifiState(true, testSsid);
        setWifiLevel(testLevel);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, true, true);
        setConnectivityViaCallback(NetworkCapabilities.TRANSPORT_WIFI, true, true, mWifiInfo);
        verifyLastWifiIcon(true, WifiIcons.WIFI_SIGNAL_STRENGTH[1][testLevel]);
    }

@@ -209,6 +211,7 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
        int rssi = (int)(MIN_RSSI + level * amountPerLevel);
        // Put RSSI in the middle of the range.
        rssi += amountPerLevel / 2;
        when(mWifiInfo.getRssi()).thenReturn(rssi);
        Intent i = new Intent(WifiManager.RSSI_CHANGED_ACTION);
        i.putExtra(WifiManager.EXTRA_NEW_RSSI, rssi);
        mNetworkController.onReceive(mContext, i);
@@ -224,10 +227,8 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
        Intent i = new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        NetworkInfo networkInfo = mock(NetworkInfo.class);
        when(networkInfo.isConnected()).thenReturn(connected);

        WifiInfo wifiInfo = mock(WifiInfo.class);
        when(wifiInfo.getSSID()).thenReturn(ssid);
        when(mMockWm.getConnectionInfo()).thenReturn(wifiInfo);
        when(mWifiInfo.getSSID()).thenReturn(ssid);
        when(mMockWm.getConnectionInfo()).thenReturn(mWifiInfo);

        i.putExtra(WifiManager.EXTRA_NETWORK_INFO, networkInfo);
        mNetworkController.onReceive(mContext, i);