Merge "Replace the usage of UidRange"

This commit is contained in:
Chiachang Wang
2021-03-18 13:36:39 +00:00
committed by Gerrit Code Review

View File

@@ -39,17 +39,20 @@ import android.net.MatchAllNetworkSpecifier;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.NetworkRequest; import android.net.NetworkRequest;
import android.net.NetworkSpecifier; import android.net.NetworkSpecifier;
import android.net.UidRange;
import android.net.wifi.WifiNetworkSpecifier; import android.net.wifi.WifiNetworkSpecifier;
import android.os.Build; import android.os.Build;
import android.os.PatternMatcher; import android.os.PatternMatcher;
import android.os.Process; import android.os.Process;
import android.util.ArraySet; import android.util.ArraySet;
import android.util.Range;
import androidx.test.runner.AndroidJUnit4; import androidx.test.runner.AndroidJUnit4;
import com.android.modules.utils.build.SdkLevel; import com.android.modules.utils.build.SdkLevel;
import com.android.networkstack.apishim.ConstantsShim; import com.android.networkstack.apishim.ConstantsShim;
import com.android.networkstack.apishim.NetworkRequestShimImpl;
import com.android.networkstack.apishim.common.NetworkRequestShim;
import com.android.networkstack.apishim.common.UnsupportedApiLevelException;
import com.android.testutils.DevSdkIgnoreRule; import com.android.testutils.DevSdkIgnoreRule;
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo; import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
@@ -57,6 +60,8 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import java.util.Set;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class NetworkRequestTest { public class NetworkRequestTest {
@Rule @Rule
@@ -225,6 +230,14 @@ public class NetworkRequestTest {
assertTrue(requestCellularInternet.canBeSatisfiedBy(capCellularVpnMmsInternet)); assertTrue(requestCellularInternet.canBeSatisfiedBy(capCellularVpnMmsInternet));
} }
private void setUids(NetworkRequest.Builder builder, Set<Range<Integer>> ranges)
throws UnsupportedApiLevelException {
if (SdkLevel.isAtLeastS()) {
final NetworkRequestShim networkRequestShim = NetworkRequestShimImpl.newInstance();
networkRequestShim.setUids(builder, ranges);
}
}
@Test @Test
@IgnoreUpTo(Build.VERSION_CODES.Q) @IgnoreUpTo(Build.VERSION_CODES.Q)
public void testInvariantInCanBeSatisfiedBy() { public void testInvariantInCanBeSatisfiedBy() {
@@ -232,15 +245,26 @@ public class NetworkRequestTest {
// NetworkCapabilities.satisfiedByNetworkCapabilities(). // NetworkCapabilities.satisfiedByNetworkCapabilities().
final LocalNetworkSpecifier specifier1 = new LocalNetworkSpecifier(1234 /* id */); final LocalNetworkSpecifier specifier1 = new LocalNetworkSpecifier(1234 /* id */);
final int uid = Process.myUid(); final int uid = Process.myUid();
final ArraySet<UidRange> ranges = new ArraySet<>(); final NetworkRequest.Builder nrBuilder = new NetworkRequest.Builder()
ranges.add(new UidRange(uid, uid));
final NetworkRequest requestCombination = new NetworkRequest.Builder()
.addTransportType(TRANSPORT_CELLULAR) .addTransportType(TRANSPORT_CELLULAR)
.addCapability(NET_CAPABILITY_INTERNET) .addCapability(NET_CAPABILITY_INTERNET)
.setLinkUpstreamBandwidthKbps(1000) .setLinkUpstreamBandwidthKbps(1000)
.setNetworkSpecifier(specifier1) .setNetworkSpecifier(specifier1)
.setSignalStrength(-123) .setSignalStrength(-123);
.setUids(ranges).build();
// The uid ranges should be set into the request, but setUids() takes a set of UidRange
// that is hidden and inaccessible from shims. Before, S setUids will be a no-op. But
// because NetworkRequest.Builder sets the UID of the request to the current UID, the
// request contains the current UID both on S and before S.
final Set<Range<Integer>> ranges = new ArraySet<>();
ranges.add(new Range<Integer>(uid, uid));
try {
setUids(nrBuilder, ranges);
} catch (UnsupportedApiLevelException e) {
// Not supported before API31.
}
final NetworkRequest requestCombination = nrBuilder.build();
final NetworkCapabilities capCell = new NetworkCapabilities.Builder() final NetworkCapabilities capCell = new NetworkCapabilities.Builder()
.addTransportType(TRANSPORT_CELLULAR).build(); .addTransportType(TRANSPORT_CELLULAR).build();
assertCorrectlySatisfies(false, requestCombination, capCell); assertCorrectlySatisfies(false, requestCombination, capCell);