Revert^2 "Replace the usage of UidRange"
5b7aad6995
UidRange is used in a shared way between ConnectivityService
and VPN through the use of NetworkCapabilities. UidRange will
be part of the ConnectivityService mainline but Vpn.java will
stay in the framework. We need a way to replace the APIs using
UidRange, or to make UidRange system API. The only really
relevant surface here is NetworkCapabilities#{setUids, getUids}.
The need for UidRange could be replaced by an integer Range, so
replace the usage of UidRange by a integer Range in
NetworkCapabilities#{setUids, getUids} and update the relevant
callers.
Bug: 172183305
Test: atest FrameworksNetTests CtsNetTestCasesLatestSdk
Change-Id: I0f679fb5fb8f4fe26461ca4912ca1fdfe7f43c9e
Merged-In: I4e5aec6ef1ea02e038fcd7ed117a3b67b69c5cb9
This commit is contained in:
@@ -266,6 +266,7 @@ import android.text.TextUtils;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.util.Range;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import androidx.test.InstrumentationRegistry;
|
||||
@@ -1158,7 +1159,7 @@ public class ConnectivityServiceTest {
|
||||
}
|
||||
|
||||
public void setUids(Set<UidRange> uids) {
|
||||
mNetworkCapabilities.setUids(uids);
|
||||
mNetworkCapabilities.setUids(UidRange.toIntRanges(uids));
|
||||
if (mAgentRegistered) {
|
||||
mMockNetworkAgent.setNetworkCapabilities(mNetworkCapabilities, true);
|
||||
}
|
||||
@@ -1463,6 +1464,8 @@ public class ConnectivityServiceTest {
|
||||
}
|
||||
|
||||
private static final int PRIMARY_USER = 0;
|
||||
private static final UidRange PRIMARY_UIDRANGE =
|
||||
UidRange.createForUser(UserHandle.of(PRIMARY_USER));
|
||||
private static final int APP1_UID = UserHandle.getUid(PRIMARY_USER, 10100);
|
||||
private static final int APP2_UID = UserHandle.getUid(PRIMARY_USER, 10101);
|
||||
private static final int VPN_UID = UserHandle.getUid(PRIMARY_USER, 10043);
|
||||
@@ -6944,7 +6947,7 @@ public class ConnectivityServiceTest {
|
||||
final int uid = Process.myUid();
|
||||
NetworkCapabilities nc = mCm.getNetworkCapabilities(mMockVpn.getNetwork());
|
||||
assertNotNull("nc=" + nc, nc.getUids());
|
||||
assertEquals(nc.getUids(), uidRangesForUids(uid));
|
||||
assertEquals(nc.getUids(), UidRange.toIntRanges(uidRangesForUids(uid)));
|
||||
assertVpnTransportInfo(nc, VpnManager.TYPE_VPN_SERVICE);
|
||||
|
||||
// Set an underlying network and expect to see the VPN transports change.
|
||||
@@ -6969,10 +6972,13 @@ public class ConnectivityServiceTest {
|
||||
|
||||
// Expect that the VPN UID ranges contain both |uid| and the UID range for the newly-added
|
||||
// restricted user.
|
||||
final UidRange rRange = UidRange.createForUser(UserHandle.of(RESTRICTED_USER));
|
||||
final Range<Integer> restrictUidRange = new Range<Integer>(rRange.start, rRange.stop);
|
||||
final Range<Integer> singleUidRange = new Range<Integer>(uid, uid);
|
||||
callback.expectCapabilitiesThat(mMockVpn, (caps)
|
||||
-> caps.getUids().size() == 2
|
||||
&& caps.getUids().contains(new UidRange(uid, uid))
|
||||
&& caps.getUids().contains(createUidRange(RESTRICTED_USER))
|
||||
&& caps.getUids().contains(singleUidRange)
|
||||
&& caps.getUids().contains(restrictUidRange)
|
||||
&& caps.hasTransport(TRANSPORT_VPN)
|
||||
&& caps.hasTransport(TRANSPORT_WIFI));
|
||||
|
||||
@@ -6981,8 +6987,8 @@ public class ConnectivityServiceTest {
|
||||
callback.expectCallback(CallbackEntry.LOST, mWiFiNetworkAgent);
|
||||
callback.expectCapabilitiesThat(mMockVpn, (caps)
|
||||
-> caps.getUids().size() == 2
|
||||
&& caps.getUids().contains(new UidRange(uid, uid))
|
||||
&& caps.getUids().contains(createUidRange(RESTRICTED_USER))
|
||||
&& caps.getUids().contains(singleUidRange)
|
||||
&& caps.getUids().contains(restrictUidRange)
|
||||
&& caps.hasTransport(TRANSPORT_VPN)
|
||||
&& !caps.hasTransport(TRANSPORT_WIFI));
|
||||
|
||||
@@ -6996,7 +7002,7 @@ public class ConnectivityServiceTest {
|
||||
// change made just before that (i.e., loss of TRANSPORT_WIFI) is preserved.
|
||||
callback.expectCapabilitiesThat(mMockVpn, (caps)
|
||||
-> caps.getUids().size() == 1
|
||||
&& caps.getUids().contains(new UidRange(uid, uid))
|
||||
&& caps.getUids().contains(singleUidRange)
|
||||
&& caps.hasTransport(TRANSPORT_VPN)
|
||||
&& !caps.hasTransport(TRANSPORT_WIFI));
|
||||
}
|
||||
@@ -7654,7 +7660,7 @@ public class ConnectivityServiceTest {
|
||||
assertNotNull(underlying);
|
||||
mMockVpn.setVpnType(VpnManager.TYPE_VPN_LEGACY);
|
||||
// The legacy lockdown VPN only supports userId 0.
|
||||
final Set<UidRange> ranges = Collections.singleton(createUidRange(PRIMARY_USER));
|
||||
final Set<UidRange> ranges = Collections.singleton(PRIMARY_UIDRANGE);
|
||||
mMockVpn.registerAgent(ranges);
|
||||
mMockVpn.setUnderlyingNetworks(new Network[]{underlying});
|
||||
mMockVpn.connect(true);
|
||||
@@ -8616,7 +8622,7 @@ public class ConnectivityServiceTest {
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0), null));
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), RTN_UNREACHABLE));
|
||||
// The uid range needs to cover the test app so the network is visible to it.
|
||||
final Set<UidRange> vpnRange = Collections.singleton(createUidRange(PRIMARY_USER));
|
||||
final Set<UidRange> vpnRange = Collections.singleton(PRIMARY_UIDRANGE);
|
||||
mMockVpn.establish(lp, VPN_UID, vpnRange);
|
||||
assertVpnUidRangesUpdated(true, vpnRange, VPN_UID);
|
||||
|
||||
@@ -8644,7 +8650,7 @@ public class ConnectivityServiceTest {
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), null));
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0), null));
|
||||
// The uid range needs to cover the test app so the network is visible to it.
|
||||
final Set<UidRange> vpnRange = Collections.singleton(createUidRange(PRIMARY_USER));
|
||||
final Set<UidRange> vpnRange = Collections.singleton(PRIMARY_UIDRANGE);
|
||||
mMockVpn.establish(lp, Process.SYSTEM_UID, vpnRange);
|
||||
assertVpnUidRangesUpdated(true, vpnRange, Process.SYSTEM_UID);
|
||||
|
||||
@@ -8660,7 +8666,7 @@ public class ConnectivityServiceTest {
|
||||
lp.addRoute(new RouteInfo(new IpPrefix("192.0.2.0/24"), null, "tun0"));
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), RTN_UNREACHABLE));
|
||||
// The uid range needs to cover the test app so the network is visible to it.
|
||||
final Set<UidRange> vpnRange = Collections.singleton(createUidRange(PRIMARY_USER));
|
||||
final Set<UidRange> vpnRange = Collections.singleton(PRIMARY_UIDRANGE);
|
||||
mMockVpn.establish(lp, Process.SYSTEM_UID, vpnRange);
|
||||
assertVpnUidRangesUpdated(true, vpnRange, Process.SYSTEM_UID);
|
||||
|
||||
@@ -8675,7 +8681,7 @@ public class ConnectivityServiceTest {
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0), null));
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), null));
|
||||
// The uid range needs to cover the test app so the network is visible to it.
|
||||
final Set<UidRange> vpnRange = Collections.singleton(createUidRange(PRIMARY_USER));
|
||||
final Set<UidRange> vpnRange = Collections.singleton(PRIMARY_UIDRANGE);
|
||||
mMockVpn.establish(lp, VPN_UID, vpnRange);
|
||||
assertVpnUidRangesUpdated(true, vpnRange, VPN_UID);
|
||||
|
||||
@@ -8727,7 +8733,7 @@ public class ConnectivityServiceTest {
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0), RTN_UNREACHABLE));
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), null));
|
||||
// The uid range needs to cover the test app so the network is visible to it.
|
||||
final UidRange vpnRange = createUidRange(PRIMARY_USER);
|
||||
final UidRange vpnRange = PRIMARY_UIDRANGE;
|
||||
final Set<UidRange> vpnRanges = Collections.singleton(vpnRange);
|
||||
mMockVpn.establish(lp, VPN_UID, vpnRanges);
|
||||
assertVpnUidRangesUpdated(true, vpnRanges, VPN_UID);
|
||||
@@ -9008,7 +9014,7 @@ public class ConnectivityServiceTest {
|
||||
|
||||
private void setupConnectionOwnerUid(int vpnOwnerUid, @VpnManager.VpnType int vpnType)
|
||||
throws Exception {
|
||||
final Set<UidRange> vpnRange = Collections.singleton(createUidRange(PRIMARY_USER));
|
||||
final Set<UidRange> vpnRange = Collections.singleton(PRIMARY_UIDRANGE);
|
||||
mMockVpn.setVpnType(vpnType);
|
||||
mMockVpn.establish(new LinkProperties(), vpnOwnerUid, vpnRange);
|
||||
assertVpnUidRangesUpdated(true, vpnRange, vpnOwnerUid);
|
||||
@@ -9568,7 +9574,7 @@ public class ConnectivityServiceTest {
|
||||
lp.setInterfaceName("tun0");
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0), null));
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), null));
|
||||
final UidRange vpnRange = createUidRange(PRIMARY_USER);
|
||||
final UidRange vpnRange = PRIMARY_UIDRANGE;
|
||||
Set<UidRange> vpnRanges = Collections.singleton(vpnRange);
|
||||
mMockVpn.establish(lp, VPN_UID, vpnRanges);
|
||||
assertVpnUidRangesUpdated(true, vpnRanges, VPN_UID);
|
||||
@@ -9766,7 +9772,7 @@ public class ConnectivityServiceTest {
|
||||
.thenReturn(hasFeature);
|
||||
}
|
||||
|
||||
private UidRange getNriFirstUidRange(
|
||||
private Range<Integer> getNriFirstUidRange(
|
||||
@NonNull final ConnectivityService.NetworkRequestInfo nri) {
|
||||
return nri.mRequests.get(0).networkCapabilities.getUids().iterator().next();
|
||||
}
|
||||
@@ -9949,11 +9955,11 @@ public class ConnectivityServiceTest {
|
||||
pref));
|
||||
|
||||
// Sort by uid to access nris by index
|
||||
nris.sort(Comparator.comparingInt(nri -> getNriFirstUidRange(nri).start));
|
||||
assertEquals(TEST_PACKAGE_UID, getNriFirstUidRange(nris.get(0)).start);
|
||||
assertEquals(TEST_PACKAGE_UID, getNriFirstUidRange(nris.get(0)).stop);
|
||||
assertEquals(testPackageNameUid2, getNriFirstUidRange(nris.get(1)).start);
|
||||
assertEquals(testPackageNameUid2, getNriFirstUidRange(nris.get(1)).stop);
|
||||
nris.sort(Comparator.comparingInt(nri -> getNriFirstUidRange(nri).getLower()));
|
||||
assertEquals(TEST_PACKAGE_UID, (int) getNriFirstUidRange(nris.get(0)).getLower());
|
||||
assertEquals(TEST_PACKAGE_UID, (int) getNriFirstUidRange(nris.get(0)).getUpper());
|
||||
assertEquals(testPackageNameUid2, (int) getNriFirstUidRange(nris.get(1)).getLower());
|
||||
assertEquals(testPackageNameUid2, (int) getNriFirstUidRange(nris.get(1)).getUpper());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -9983,17 +9989,17 @@ public class ConnectivityServiceTest {
|
||||
// UIDs for all users and all managed packages should be present.
|
||||
// Two users each with two packages.
|
||||
final int expectedUidSize = 2;
|
||||
final List<UidRange> uids =
|
||||
final List<Range<Integer>> uids =
|
||||
new ArrayList<>(nris.get(0).mRequests.get(0).networkCapabilities.getUids());
|
||||
assertEquals(expectedUidSize, uids.size());
|
||||
|
||||
// Sort by uid to access nris by index
|
||||
uids.sort(Comparator.comparingInt(uid -> uid.start));
|
||||
uids.sort(Comparator.comparingInt(uid -> uid.getLower()));
|
||||
final int secondUserTestPackageUid = UserHandle.getUid(secondUser, TEST_PACKAGE_UID);
|
||||
assertEquals(TEST_PACKAGE_UID, uids.get(0).start);
|
||||
assertEquals(TEST_PACKAGE_UID, uids.get(0).stop);
|
||||
assertEquals(secondUserTestPackageUid, uids.get(1).start);
|
||||
assertEquals(secondUserTestPackageUid, uids.get(1).stop);
|
||||
assertEquals(TEST_PACKAGE_UID, (int) uids.get(0).getLower());
|
||||
assertEquals(TEST_PACKAGE_UID, (int) uids.get(0).getUpper());
|
||||
assertEquals(secondUserTestPackageUid, (int) uids.get(1).getLower());
|
||||
assertEquals(secondUserTestPackageUid, (int) uids.get(1).getUpper());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user