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

Commit d54c3d7b authored by Yan Yan's avatar Yan Yan Committed by Gerrit Code Review
Browse files

Merge "Remove hidden API usages backed by VcnTransportInfo" into main

parents c75538c8 0f4900e5
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) {