[CS] Add a generic transport-specific information API
Add a generic transport-specific information container interface and access methods. These can be used by a network factory to pass transport (bearer)-specific network parameters to the app. Bug: 117605977 Test: atest frameworks/base/tests/net/java/android/net (+new unit tests) Change-Id: Ib7c83b677e1c02a2212265719813e648b0c9cc1b
This commit is contained in:
@@ -24,9 +24,9 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_MMS;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PAID;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PAID;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_WIFI_P2P;
|
||||
import static android.net.NetworkCapabilities.RESTRICTED_CAPABILITIES;
|
||||
@@ -46,7 +46,6 @@ import android.support.test.runner.AndroidJUnit4;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
import android.util.ArraySet;
|
||||
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -457,6 +456,62 @@ public class NetworkCapabilitiesTest {
|
||||
assertEquals(nc1, nc2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetNetworkSpecifierOnMultiTransportNc() {
|
||||
// Sequence 1: Transport + Transport + NetworkSpecifier
|
||||
NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||
nc1.addTransportType(TRANSPORT_CELLULAR).addTransportType(TRANSPORT_WIFI);
|
||||
try {
|
||||
nc1.setNetworkSpecifier(new StringNetworkSpecifier("specs"));
|
||||
fail("Cannot set NetworkSpecifier on a NetworkCapability with multiple transports!");
|
||||
} catch (IllegalStateException expected) {
|
||||
// empty
|
||||
}
|
||||
|
||||
// Sequence 2: Transport + NetworkSpecifier + Transport
|
||||
NetworkCapabilities nc2 = new NetworkCapabilities();
|
||||
nc2.addTransportType(TRANSPORT_CELLULAR).setNetworkSpecifier(
|
||||
new StringNetworkSpecifier("specs"));
|
||||
try {
|
||||
nc2.addTransportType(TRANSPORT_WIFI);
|
||||
fail("Cannot set NetworkSpecifier on a NetworkCapability with multiple transports!");
|
||||
} catch (IllegalStateException expected) {
|
||||
// empty
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetTransportInfoOnMultiTransportNc() {
|
||||
// Sequence 1: Transport + Transport + TransportInfo
|
||||
NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||
nc1.addTransportType(TRANSPORT_CELLULAR).addTransportType(TRANSPORT_WIFI)
|
||||
.setTransportInfo(new TransportInfo() {});
|
||||
|
||||
// Sequence 2: Transport + NetworkSpecifier + Transport
|
||||
NetworkCapabilities nc2 = new NetworkCapabilities();
|
||||
nc2.addTransportType(TRANSPORT_CELLULAR).setTransportInfo(new TransportInfo() {})
|
||||
.addTransportType(TRANSPORT_WIFI);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCombineTransportInfo() {
|
||||
NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||
nc1.setTransportInfo(new TransportInfo() {
|
||||
// empty
|
||||
});
|
||||
NetworkCapabilities nc2 = new NetworkCapabilities();
|
||||
nc2.setTransportInfo(new TransportInfo() {
|
||||
// empty
|
||||
});
|
||||
|
||||
try {
|
||||
nc1.combineCapabilities(nc2);
|
||||
fail("Should not be able to combine NetworkCaabilities which contain TransportInfos");
|
||||
} catch (IllegalStateException expected) {
|
||||
// empty
|
||||
}
|
||||
}
|
||||
|
||||
private void assertEqualsThroughMarshalling(NetworkCapabilities netCap) {
|
||||
Parcel p = Parcel.obtain();
|
||||
netCap.writeToParcel(p, /* flags */ 0);
|
||||
|
||||
Reference in New Issue
Block a user