Merge "Udpate setNetworkSpecifier to support Satellite Transport." into main
This commit is contained in:
commit
8c0f67820d
2 changed files with 48 additions and 2 deletions
|
|
@ -1770,9 +1770,13 @@ public final class NetworkCapabilities implements Parcelable {
|
|||
public @NonNull NetworkCapabilities setNetworkSpecifier(
|
||||
@NonNull NetworkSpecifier networkSpecifier) {
|
||||
if (networkSpecifier != null
|
||||
// Transport can be test, or test + a single other transport
|
||||
// Transport can be test, or test + a single other transport or cellular + satellite
|
||||
// transport. Note: cellular + satellite combination is allowed since both transport
|
||||
// use the same specifier, TelephonyNetworkSpecifier.
|
||||
&& mTransportTypes != (1L << TRANSPORT_TEST)
|
||||
&& Long.bitCount(mTransportTypes & ~(1L << TRANSPORT_TEST)) != 1) {
|
||||
&& Long.bitCount(mTransportTypes & ~(1L << TRANSPORT_TEST)) != 1
|
||||
&& (mTransportTypes & ~(1L << TRANSPORT_TEST))
|
||||
!= (1 << TRANSPORT_CELLULAR | 1 << TRANSPORT_SATELLITE)) {
|
||||
throw new IllegalStateException("Must have a single non-test transport specified to "
|
||||
+ "use setNetworkSpecifier");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
Loading…
Reference in a new issue