Add new APIs in NetworkCapabilities to set and get underlying networks
Previously, the caller can only know about the transport type of the underlying network. The information might not be enough if the device support WiFi STA+STA. Thus, provide an API for the caller to get the correct underlying network. Bug: 191918368 Test: atest FrameworksNetTests:NetworkCapabilitiesTest Change-Id: I7752b2356770f4572f6ca4cbaecaa45c09d6d72f
This commit is contained in:
parent
301d6bdfa6
commit
8b2dfa7c02
1 changed files with 137 additions and 6 deletions
|
|
@ -50,6 +50,7 @@ import static android.os.Process.INVALID_UID;
|
|||
|
||||
import static com.android.modules.utils.build.SdkLevel.isAtLeastR;
|
||||
import static com.android.modules.utils.build.SdkLevel.isAtLeastS;
|
||||
import static com.android.modules.utils.build.SdkLevel.isAtLeastT;
|
||||
import static com.android.testutils.MiscAsserts.assertEmpty;
|
||||
import static com.android.testutils.MiscAsserts.assertThrows;
|
||||
import static com.android.testutils.ParcelUtils.assertParcelSane;
|
||||
|
|
@ -84,7 +85,9 @@ import org.junit.Test;
|
|||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
|
|
@ -342,7 +345,9 @@ public class NetworkCapabilitiesTest {
|
|||
}
|
||||
|
||||
private void testParcelSane(NetworkCapabilities cap) {
|
||||
if (isAtLeastS()) {
|
||||
if (isAtLeastT()) {
|
||||
assertParcelSane(cap, 17);
|
||||
} else if (isAtLeastS()) {
|
||||
assertParcelSane(cap, 16);
|
||||
} else if (isAtLeastR()) {
|
||||
assertParcelSane(cap, 15);
|
||||
|
|
@ -711,6 +716,47 @@ public class NetworkCapabilitiesTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnderlyingNetworks() {
|
||||
assumeTrue(isAtLeastT());
|
||||
final NetworkCapabilities nc = new NetworkCapabilities();
|
||||
final Network network1 = new Network(100);
|
||||
final Network network2 = new Network(101);
|
||||
final ArrayList<Network> inputNetworks = new ArrayList<>();
|
||||
inputNetworks.add(network1);
|
||||
inputNetworks.add(network2);
|
||||
nc.setUnderlyingNetworks(inputNetworks);
|
||||
final ArrayList<Network> outputNetworks = new ArrayList<>(nc.getUnderlyingNetworks());
|
||||
assertEquals(network1, outputNetworks.get(0));
|
||||
assertEquals(network2, outputNetworks.get(1));
|
||||
nc.setUnderlyingNetworks(null);
|
||||
assertNull(nc.getUnderlyingNetworks());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEqualsForUnderlyingNetworks() {
|
||||
assumeTrue(isAtLeastT());
|
||||
final NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||
final NetworkCapabilities nc2 = new NetworkCapabilities();
|
||||
assertEquals(nc1, nc2);
|
||||
final Network network = new Network(100);
|
||||
final ArrayList<Network> inputNetworks = new ArrayList<>();
|
||||
final ArrayList<Network> emptyList = new ArrayList<>();
|
||||
inputNetworks.add(network);
|
||||
nc1.setUnderlyingNetworks(inputNetworks);
|
||||
assertNotEquals(nc1, nc2);
|
||||
nc2.setUnderlyingNetworks(inputNetworks);
|
||||
assertEquals(nc1, nc2);
|
||||
nc1.setUnderlyingNetworks(emptyList);
|
||||
assertNotEquals(nc1, nc2);
|
||||
nc2.setUnderlyingNetworks(emptyList);
|
||||
assertEquals(nc1, nc2);
|
||||
nc1.setUnderlyingNetworks(null);
|
||||
assertNotEquals(nc1, nc2);
|
||||
nc2.setUnderlyingNetworks(null);
|
||||
assertEquals(nc1, nc2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetNetworkSpecifierOnMultiTransportNc() {
|
||||
// Sequence 1: Transport + Transport + NetworkSpecifier
|
||||
|
|
@ -1109,7 +1155,7 @@ public class NetworkCapabilitiesTest {
|
|||
final TransportInfo transportInfo = new TransportInfo() {};
|
||||
final String ssid = "TEST_SSID";
|
||||
final String packageName = "com.google.test.networkcapabilities";
|
||||
final NetworkCapabilities nc = new NetworkCapabilities.Builder()
|
||||
final NetworkCapabilities.Builder capBuilder = new NetworkCapabilities.Builder()
|
||||
.addTransportType(TRANSPORT_WIFI)
|
||||
.addTransportType(TRANSPORT_CELLULAR)
|
||||
.removeTransportType(TRANSPORT_CELLULAR)
|
||||
|
|
@ -1125,8 +1171,14 @@ public class NetworkCapabilitiesTest {
|
|||
.setSignalStrength(signalStrength)
|
||||
.setSsid(ssid)
|
||||
.setRequestorUid(requestUid)
|
||||
.setRequestorPackageName(packageName)
|
||||
.build();
|
||||
.setRequestorPackageName(packageName);
|
||||
final Network network1 = new Network(100);
|
||||
final Network network2 = new Network(101);
|
||||
final List<Network> inputNetworks = List.of(network1, network2);
|
||||
if (isAtLeastT()) {
|
||||
capBuilder.setUnderlyingNetworks(inputNetworks);
|
||||
}
|
||||
final NetworkCapabilities nc = capBuilder.build();
|
||||
assertEquals(1, nc.getTransportTypes().length);
|
||||
assertEquals(TRANSPORT_WIFI, nc.getTransportTypes()[0]);
|
||||
assertTrue(nc.hasCapability(NET_CAPABILITY_EIMS));
|
||||
|
|
@ -1144,6 +1196,11 @@ public class NetworkCapabilitiesTest {
|
|||
assertEquals(ssid, nc.getSsid());
|
||||
assertEquals(requestUid, nc.getRequestorUid());
|
||||
assertEquals(packageName, nc.getRequestorPackageName());
|
||||
if (isAtLeastT()) {
|
||||
final List<Network> outputNetworks = nc.getUnderlyingNetworks();
|
||||
assertEquals(network1, outputNetworks.get(0));
|
||||
assertEquals(network2, outputNetworks.get(1));
|
||||
}
|
||||
// Cannot assign null into NetworkCapabilities.Builder
|
||||
try {
|
||||
final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder(null);
|
||||
|
|
|
|||
Loading…
Reference in a new issue