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

Commit 8c4e6fd3 authored by yinxu's avatar yinxu
Browse files

Only monitor primary WIFi in the SysUI

Bug: 182224965
Test: Unit tests
Change-Id: I5654f549a9a40666244306d493da74861f3e168f
parent be6088d1
Loading
Loading
Loading
Loading
+28 −23
Original line number Diff line number Diff line
@@ -80,24 +80,18 @@ public class WifiStatusTracker {
        @Override
        public void onCapabilitiesChanged(
                Network network, NetworkCapabilities networkCapabilities) {
            if (!mNetworks.contains(network.getNetId())) {
                // New network
                boolean isVcnOverWifi =
                        networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                                && (Utils.tryGetWifiInfoForVcn(networkCapabilities) != null);
                boolean isWifi =
                        networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
                if (isVcnOverWifi || isWifi) {
                    mNetworks.add(network.getNetId());
                }
            }

            boolean isVcnOverWifi = false;
            boolean isWifi = false;
            WifiInfo wifiInfo = null;
            if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                wifiInfo = Utils.tryGetWifiInfoForVcn(networkCapabilities);
                isVcnOverWifi = (wifiInfo != null);
            } else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();
                isWifi = true;
            }
            // As long as it is a WiFi network, we will log it in the dumpsys for debugging.
            if (isVcnOverWifi || isWifi) {
                String log = new StringBuilder()
                        .append(SSDF.format(System.currentTimeMillis())).append(",")
                        .append("onCapabilitiesChanged: ")
@@ -105,12 +99,23 @@ public class WifiStatusTracker {
                        .append("networkCapabilities=").append(networkCapabilities)
                        .toString();
                recordLastWifiNetwork(log);
            if (wifiInfo != null) {
            }
            // Ignore the WiFi network if it doesn't contain any valid WifiInfo, or it is not the
            // primary WiFi.
            if (wifiInfo == null || !wifiInfo.isPrimary()) {
                // Remove the network from the tracking list once it becomes non-primary.
                if (mNetworks.contains(network.getNetId())) {
                    mNetworks.remove(network.getNetId());
                }
                return;
            }
            if (!mNetworks.contains(network.getNetId())) {
                mNetworks.add(network.getNetId());
            }
            updateWifiInfo(wifiInfo);
            updateStatusLabel();
            mCallback.run();
        }
        }

        @Override
        public void onLost(Network network) {
+15 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
    public void setUp() throws Exception {
        super.setUp();
        when(mWifiInfo.makeCopy(anyLong())).thenReturn(mWifiInfo);
        when(mWifiInfo.isPrimary()).thenReturn(true);
    }

    @Test
@@ -277,6 +278,20 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
        }
    }

    @Test
    public void testNonPrimaryWiFi() {
        String testSsid = "Test SSID";
        setWifiEnabled(true);
        setWifiState(true, testSsid);
        // Set the ImsType to be IMS_TYPE_WLAN
        setImsType(2);
        setWifiLevel(1);
        verifyLastCallStrength(TelephonyIcons.WIFI_CALL_STRENGTH_ICONS[1]);
        when(mWifiInfo.isPrimary()).thenReturn(false);
        setWifiLevel(3);
        verifyLastCallStrength(TelephonyIcons.WIFI_CALL_STRENGTH_ICONS[1]);
    }

    protected void setWifiActivity(int activity) {
        // TODO: Not this, because this variable probably isn't sticking around.
        mNetworkController.mWifiSignalController.setActivity(activity);