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

Commit ed813ed7 authored by junyulai's avatar junyulai
Browse files

[FUI07] Stop making NetworkState with NetworkInfo from external callers

Follow-up from previous patch. This change stop accessing the
constructor that needs NetworkInfo to create NetworkState, which
is no longer accessible after ConnectivityService become
mainline module. Instead, pass a legacy network type which is
dedicated for the need of the type.

Test: atest FrameworksNetTests NetworkPolicyManagerServiceTest
Bug: 174123988
Change-Id: I24157bc33e5a5819eccd6a3111d2049f531c1d43
parent 7514e1b8
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.net;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.os.Parcel;
@@ -53,17 +54,32 @@ public class NetworkState implements Parcelable {
        legacyNetworkType = 0;
    }

    public NetworkState(int legacyNetworkType, @NonNull LinkProperties linkProperties,
            @NonNull NetworkCapabilities networkCapabilities, @NonNull Network network,
            @Nullable String subscriberId, @Nullable String networkId) {
        this(legacyNetworkType, new NetworkInfo(legacyNetworkType, 0, null, null), linkProperties,
                networkCapabilities, network, subscriberId, networkId);
    }

    // Constructor that used internally in ConnectivityService mainline module.
    public NetworkState(@NonNull NetworkInfo networkInfo, @NonNull LinkProperties linkProperties,
            @NonNull NetworkCapabilities networkCapabilities, @NonNull Network network,
            String subscriberId, String networkId) {
        this(networkInfo.getType(), networkInfo, linkProperties,
                networkCapabilities, network, subscriberId, networkId);
    }

    public NetworkState(int legacyNetworkType, @NonNull NetworkInfo networkInfo,
            @NonNull LinkProperties linkProperties,
            @NonNull NetworkCapabilities networkCapabilities, @NonNull Network network,
            String subscriberId, String networkId) {
        this.networkInfo = networkInfo;
        this.linkProperties = linkProperties;
        this.networkCapabilities = networkCapabilities;
        this.network = network;
        this.subscriberId = subscriberId;
        this.networkId = networkId;
        // TODO: Pass legacyNetworkType directly from parameters and remove NetworkInfo.
        this.legacyNetworkType = this.networkInfo.getType();
        this.legacyNetworkType = legacyNetworkType;

        // This object is an atomic view of a network, so the various components
        // should always agree on roaming state.
+3 −13
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server.net;
import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
import static android.Manifest.permission.NETWORK_STACK;
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
import static android.net.ConnectivityManager.TYPE_MOBILE;
import static android.net.ConnectivityManager.TYPE_WIFI;
import static android.net.INetd.FIREWALL_CHAIN_RESTRICTED;
import static android.net.INetd.FIREWALL_RULE_ALLOW;
@@ -113,8 +114,6 @@ import android.net.INetworkPolicyListener;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState;
import android.net.NetworkPolicy;
import android.net.NetworkPolicyManager;
import android.net.NetworkState;
@@ -1987,13 +1986,6 @@ public class NetworkPolicyManagerServiceTest {
        return users;
    }

    private NetworkInfo buildNetworkInfo() {
        final NetworkInfo ni = new NetworkInfo(ConnectivityManager.TYPE_MOBILE,
                TelephonyManager.NETWORK_TYPE_LTE, null, null);
        ni.setDetailedState(NetworkInfo.DetailedState.CONNECTED, null, null);
        return ni;
    }

    private LinkProperties buildLinkProperties(String iface) {
        final LinkProperties lp = new LinkProperties();
        lp.setInterfaceName(iface);
@@ -2047,14 +2039,12 @@ public class NetworkPolicyManagerServiceTest {
    }

    private static NetworkState buildWifi() {
        final NetworkInfo info = new NetworkInfo(TYPE_WIFI, 0, null, null);
        info.setDetailedState(DetailedState.CONNECTED, null, null);
        final LinkProperties prop = new LinkProperties();
        prop.setInterfaceName(TEST_IFACE);
        final NetworkCapabilities networkCapabilities = new NetworkCapabilities();
        networkCapabilities.addTransportType(TRANSPORT_WIFI);
        networkCapabilities.setSSID(TEST_SSID);
        return new NetworkState(info, prop, networkCapabilities, null, null, TEST_SSID);
        return new NetworkState(TYPE_WIFI, prop, networkCapabilities, null, null, TEST_SSID);
    }

    private void expectHasInternetPermission(int uid, boolean hasIt) throws Exception {
@@ -2075,7 +2065,7 @@ public class NetworkPolicyManagerServiceTest {
        when(mCarrierConfigManager.getConfigForSubId(eq(TEST_SUB_ID)))
                .thenReturn(mCarrierConfig);
        when(mConnManager.getAllNetworkState()).thenReturn(new NetworkState[] {
                new NetworkState(buildNetworkInfo(),
                new NetworkState(TYPE_MOBILE,
                        buildLinkProperties(TEST_IFACE),
                        buildNetworkCapabilities(TEST_SUB_ID, roaming),
                        new Network(TEST_NET_ID), TEST_IMSI, null)
+1 −4
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mockito.doReturn
import org.mockito.Mockito.mock
import org.mockito.MockitoAnnotations
import kotlin.test.assertFalse
@@ -60,15 +59,13 @@ class NetworkTemplateTest {
        subscriberId: String? = null,
        ssid: String? = null
    ): NetworkState {
        val info = mock(NetworkInfo::class.java)
        doReturn(type).`when`(info).type
        val lp = LinkProperties()
        val caps = NetworkCapabilities().apply {
            setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, false)
            setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true)
            setSSID(ssid)
        }
        return NetworkState(info, lp, caps, mock(Network::class.java), subscriberId, ssid)
        return NetworkState(type, lp, caps, mock(Network::class.java), subscriberId, ssid)
    }

    private fun NetworkTemplate.assertMatches(ident: NetworkIdentity) =
+4 −13
Original line number Diff line number Diff line
@@ -80,8 +80,6 @@ import android.net.INetworkStatsSession;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState;
import android.net.NetworkState;
import android.net.NetworkStats;
import android.net.NetworkStatsHistory;
@@ -1456,8 +1454,6 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
    }

    private static NetworkState buildWifiState(boolean isMetered, @NonNull String iface) {
        final NetworkInfo info = new NetworkInfo(TYPE_WIFI, 0, null, null);
        info.setDetailedState(DetailedState.CONNECTED, null, null);
        final LinkProperties prop = new LinkProperties();
        prop.setInterfaceName(iface);
        final NetworkCapabilities capabilities = new NetworkCapabilities();
@@ -1465,7 +1461,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
        capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true);
        capabilities.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
        capabilities.setSSID(TEST_SSID);
        return new NetworkState(info, prop, capabilities, WIFI_NETWORK, null, TEST_SSID);
        return new NetworkState(TYPE_WIFI, prop, capabilities, WIFI_NETWORK, null, TEST_SSID);
    }

    private static NetworkState buildMobile3gState(String subscriberId) {
@@ -1473,17 +1469,14 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
    }

    private static NetworkState buildMobile3gState(String subscriberId, boolean isRoaming) {
        final NetworkInfo info = new NetworkInfo(
                TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UMTS, null, null);
        info.setDetailedState(DetailedState.CONNECTED, null, null);
        info.setRoaming(isRoaming);
        final LinkProperties prop = new LinkProperties();
        prop.setInterfaceName(TEST_IFACE);
        final NetworkCapabilities capabilities = new NetworkCapabilities();
        capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, false);
        capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, !isRoaming);
        capabilities.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
        return new NetworkState(info, prop, capabilities, MOBILE_NETWORK, subscriberId, null);
        return new NetworkState(
                TYPE_MOBILE, prop, capabilities, MOBILE_NETWORK, subscriberId, null);
    }

    private NetworkStats buildEmptyStats() {
@@ -1491,11 +1484,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
    }

    private static NetworkState buildVpnState() {
        final NetworkInfo info = new NetworkInfo(TYPE_VPN, 0, null, null);
        info.setDetailedState(DetailedState.CONNECTED, null, null);
        final LinkProperties prop = new LinkProperties();
        prop.setInterfaceName(TUN_IFACE);
        return new NetworkState(info, prop, new NetworkCapabilities(), VPN_NETWORK, null, null);
        return new NetworkState(TYPE_VPN, prop, new NetworkCapabilities(), VPN_NETWORK, null, null);
    }

    private long getElapsedRealtime() {