Udpate setNetworkSpecifier to support Satellite Transport.

- Allow adding two non test transports i.e. satellite and cellular
  at setNetworkSpecifier, to receive network requests related to
  satellite transport capabilities

Bug: 324347502
Test: atest FrameworksNetTests
Change-Id: I03a3d701e214792184bacfe5b5b59cdef61d555e
This commit is contained in:
Nagendra Prasad Nagarle Basavaraju 2024-02-20 19:09:30 +00:00
commit a8a74e2ccc

View file

@ -54,6 +54,7 @@ import static android.net.NetworkCapabilities.REDACT_FOR_NETWORK_SETTINGS;
import static android.net.NetworkCapabilities.SIGNAL_STRENGTH_UNSPECIFIED;
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET;
import static android.net.NetworkCapabilities.TRANSPORT_SATELLITE;
import static android.net.NetworkCapabilities.TRANSPORT_TEST;
import static android.net.NetworkCapabilities.TRANSPORT_USB;
import static android.net.NetworkCapabilities.TRANSPORT_VPN;
@ -760,6 +761,47 @@ public class NetworkCapabilitiesTest {
() -> nc2.addTransportType(TRANSPORT_WIFI));
}
@Test
public void testSetNetworkSpecifierWithCellularAndSatelliteMultiTransportNc() {
final TelephonyNetworkSpecifier specifier = new TelephonyNetworkSpecifier(1);
NetworkCapabilities nc = new NetworkCapabilities.Builder()
.addTransportType(TRANSPORT_CELLULAR)
.addTransportType(TRANSPORT_SATELLITE)
.setNetworkSpecifier(specifier)
.build();
// Adding a specifier did not crash with 2 transports if it is cellular + satellite
assertEquals(specifier, nc.getNetworkSpecifier());
}
@Test
public void testSetNetworkSpecifierWithWifiAndSatelliteMultiTransportNc() {
final TelephonyNetworkSpecifier specifier = new TelephonyNetworkSpecifier(1);
NetworkCapabilities.Builder nc1 = new NetworkCapabilities.Builder();
nc1.addTransportType(TRANSPORT_SATELLITE).addTransportType(TRANSPORT_WIFI);
// Adding multiple transports specifier to crash, apart from cellular + satellite
// combination
assertThrows("Cannot set NetworkSpecifier on a NetworkCapability with multiple transports!",
IllegalStateException.class,
() -> nc1.build().setNetworkSpecifier(specifier));
assertThrows("Cannot set NetworkSpecifier on a NetworkCapability with multiple transports!",
IllegalStateException.class,
() -> nc1.setNetworkSpecifier(specifier));
}
@Test
public void testSetNetworkSpecifierOnTestWithCellularAndSatelliteMultiTransportNc() {
final TelephonyNetworkSpecifier specifier = new TelephonyNetworkSpecifier(1);
NetworkCapabilities nc = new NetworkCapabilities.Builder()
.addTransportType(TRANSPORT_TEST)
.addTransportType(TRANSPORT_CELLULAR)
.addTransportType(TRANSPORT_SATELLITE)
.setNetworkSpecifier(specifier)
.build();
// Adding a specifier did not crash with 3 transports , TEST + CELLULAR + SATELLITE and if
// one is test
assertEquals(specifier, nc.getNetworkSpecifier());
}
@Test
public void testSetNetworkSpecifierOnTestMultiTransportNc() {
final NetworkSpecifier specifier = CompatUtil.makeEthernetNetworkSpecifier("eth0");