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

Commit 0f4900e5 authored by Yan Yan's avatar Yan Yan
Browse files

Remove hidden API usages backed by VcnTransportInfo

VCN will be moved to a mainline module and #getWifiInfo will no longer
be accessible. Also VcnTransportInfo will be a final class. This
patch updates SystemUI to use VcnUtils to get the WifiInfo and use
a Builder to construct a VcnTransportInfo instance for testing.

Bug: 369710077
Test: atest SystemUITests:NetworkControllerWifiTest
Flag: Exempt pure refactoring
Change-Id: I66b71138fc0f2a746264aea551dfc7fef2f21526
parent 39de4cd4
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -30,9 +30,10 @@ import android.hardware.usb.flags.Flags;
import android.icu.text.NumberFormat;
import android.location.LocationManager;
import android.media.AudioManager;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.TetheringManager;
import android.net.vcn.VcnTransportInfo;
import android.net.vcn.VcnUtils;
import android.net.wifi.WifiInfo;
import android.os.BatteryManager;
import android.os.Build;
@@ -739,14 +740,9 @@ public class Utils {
     * @param networkCapabilities NetworkCapabilities of the network.
     */
    @Nullable
    public static WifiInfo tryGetWifiInfoForVcn(NetworkCapabilities networkCapabilities) {
        if (networkCapabilities.getTransportInfo() == null
                || !(networkCapabilities.getTransportInfo() instanceof VcnTransportInfo)) {
            return null;
        }
        VcnTransportInfo vcnTransportInfo =
                (VcnTransportInfo) networkCapabilities.getTransportInfo();
        return vcnTransportInfo.getWifiInfo();
    public static WifiInfo tryGetWifiInfoForVcn(
            ConnectivityManager connectivityMgr, NetworkCapabilities networkCapabilities) {
        return VcnUtils.getWifiInfoFromVcnCaps(connectivityMgr, networkCapabilities);
    }

    /** Whether there is any incompatible chargers in the current UsbPort? */
+2 −4
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.net.NetworkScoreManager;
import android.net.ScoredNetwork;
import android.net.TransportInfo;
import android.net.vcn.VcnTransportInfo;
import android.net.vcn.VcnUtils;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiNetworkScoreCache;
@@ -394,10 +395,7 @@ public class WifiStatusTracker {

        TransportInfo transportInfo = networkCapabilities.getTransportInfo();
        if (transportInfo instanceof VcnTransportInfo) {
            // This VcnTransportInfo logic is copied from
            // [com.android.settingslib.Utils.tryGetWifiInfoForVcn]. It's copied instead of
            // re-used because it makes the logic here clearer.
            return ((VcnTransportInfo) transportInfo).getWifiInfo();
            return VcnUtils.getWifiInfoFromVcnCaps(mConnectivityManager, networkCapabilities);
        } else if (transportInfo instanceof WifiInfo) {
            return (WifiInfo) transportInfo;
        } else {
+5 −2
Original line number Diff line number Diff line
@@ -596,7 +596,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
            // NetworkCapabilities, but we need to convert it into TRANSPORT_WIFI in order to
            // distinguish it from VCN over Cellular.
            if (transportTypes[i] == NetworkCapabilities.TRANSPORT_CELLULAR
                    && Utils.tryGetWifiInfoForVcn(networkCapabilities) != null) {
                    && Utils.tryGetWifiInfoForVcn(mConnectivityManager, networkCapabilities)
                            != null) {
                transportTypes[i] = NetworkCapabilities.TRANSPORT_WIFI;
                break;
            }
@@ -1112,7 +1113,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
                    continue;
                }
                if (transportType == NetworkCapabilities.TRANSPORT_CELLULAR
                        && Utils.tryGetWifiInfoForVcn(mLastDefaultNetworkCapabilities) != null) {
                        && Utils.tryGetWifiInfoForVcn(
                                        mConnectivityManager, mLastDefaultNetworkCapabilities)
                                != null) {
                    mConnectedTransports.set(NetworkCapabilities.TRANSPORT_WIFI);
                    if (mLastDefaultNetworkCapabilities.hasCapability(NET_CAPABILITY_VALIDATED)) {
                        mValidatedTransports.set(NetworkCapabilities.TRANSPORT_WIFI);
+15 −4
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ import org.mockito.MockitoSession;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class NetworkControllerBaseTest extends SysuiTestCase {
@@ -332,10 +333,15 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
    }

    public void setConnectivityViaCallbackInNetworkControllerForVcn(
            int networkType, boolean validated, boolean isConnected, VcnTransportInfo info) {
            int networkType,
            boolean validated,
            boolean isConnected,
            VcnTransportInfo info,
            Network underlyingNetwork) {
        final NetworkCapabilities.Builder builder =
                new NetworkCapabilities.Builder(mNetCapabilities);
        builder.setTransportInfo(info);
        builder.setTransportInfo(info)
                .setUnderlyingNetworks(Collections.singletonList(underlyingNetwork));
        setConnectivityCommon(builder, networkType, validated, isConnected);
        mDefaultCallbackInNetworkController.onCapabilitiesChanged(
                mock(Network.class), builder.build());
@@ -385,10 +391,15 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
    }

    public void setConnectivityViaCallbackInWifiTrackerForVcn(
            int networkType, boolean validated, boolean isConnected, VcnTransportInfo info) {
            int networkType,
            boolean validated,
            boolean isConnected,
            VcnTransportInfo info,
            Network underlyingNetwork) {
        final NetworkCapabilities.Builder builder =
                new NetworkCapabilities.Builder(mNetCapabilities);
        builder.setTransportInfo(info);
        builder.setTransportInfo(info)
                .setUnderlyingNetworks(Collections.singletonList(underlyingNetwork));
        setConnectivityCommon(builder, networkType, validated, isConnected);
        if (networkType == NetworkCapabilities.TRANSPORT_CELLULAR) {
            if (isConnected) {
+32 −8
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.connectivity;

import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;

import static junit.framework.Assert.assertEquals;

@@ -250,6 +251,17 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
        assertEquals(testSsid, mNetworkController.mWifiSignalController.mCurrentState.ssid);
    }

    private Network newWifiNetwork(WifiInfo wifiInfo) {
        final Network network = mock(Network.class);
        final NetworkCapabilities wifiCaps =
                new NetworkCapabilities.Builder()
                        .addTransportType(TRANSPORT_WIFI)
                        .setTransportInfo(wifiInfo)
                        .build();
        when(mMockCm.getNetworkCapabilities(network)).thenReturn(wifiCaps);
        return network;
    }

    @Test
    public void testVcnWithUnderlyingWifi() {
        String testSsid = "Test VCN SSID";
@@ -266,11 +278,19 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
            setWifiLevelForVcn(testLevel);

            setConnectivityViaCallbackInNetworkControllerForVcn(
                    NetworkCapabilities.TRANSPORT_CELLULAR, true, true, mVcnTransportInfo);
                    NetworkCapabilities.TRANSPORT_CELLULAR,
                    true,
                    true,
                    mVcnTransportInfo,
                    newWifiNetwork(mWifiInfo));
            verifyLastMobileDataIndicatorsForVcn(true, testLevel, TelephonyIcons.ICON_CWF, true);

            setConnectivityViaCallbackInNetworkControllerForVcn(
                    NetworkCapabilities.TRANSPORT_CELLULAR, false, true, mVcnTransportInfo);
                    NetworkCapabilities.TRANSPORT_CELLULAR,
                    false,
                    true,
                    mVcnTransportInfo,
                    newWifiNetwork(mWifiInfo));
            verifyLastMobileDataIndicatorsForVcn(true, testLevel, TelephonyIcons.ICON_CWF, false);
        }
    }
@@ -391,13 +411,15 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
    }

    protected void setWifiLevelForVcn(int level) {
        when(mVcnTransportInfo.getWifiInfo()).thenReturn(mWifiInfo);
        when(mVcnTransportInfo.makeCopy(anyLong())).thenReturn(mVcnTransportInfo);
        when(mWifiInfo.getRssi()).thenReturn(calculateRssiForLevel(level));
        when(mWifiInfo.isCarrierMerged()).thenReturn(true);
        when(mWifiInfo.getSubscriptionId()).thenReturn(1);
        setConnectivityViaCallbackInWifiTrackerForVcn(
                NetworkCapabilities.TRANSPORT_CELLULAR, false, true, mVcnTransportInfo);
                NetworkCapabilities.TRANSPORT_CELLULAR,
                false,
                true,
                mVcnTransportInfo,
                newWifiNetwork(mWifiInfo));
    }

    private int calculateRssiForLevel(int level) {
@@ -409,13 +431,15 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
    }

    protected void setWifiStateForVcn(boolean connected, String ssid) {
        when(mVcnTransportInfo.getWifiInfo()).thenReturn(mWifiInfo);
        when(mVcnTransportInfo.makeCopy(anyLong())).thenReturn(mVcnTransportInfo);
        when(mWifiInfo.getSSID()).thenReturn(ssid);
        when(mWifiInfo.isCarrierMerged()).thenReturn(true);
        when(mWifiInfo.getSubscriptionId()).thenReturn(1);
        setConnectivityViaCallbackInWifiTrackerForVcn(
                NetworkCapabilities.TRANSPORT_CELLULAR, false, connected, mVcnTransportInfo);
                NetworkCapabilities.TRANSPORT_CELLULAR,
                false,
                connected,
                mVcnTransportInfo,
                newWifiNetwork(mWifiInfo));
    }

    protected void verifyLastQsDataDirection(boolean in, boolean out) {