Merge "Extend network request to query networks w/o capabilites" am: 47d4d15483 am: 334cde1ec2
am: fa04c2d802
Change-Id: I3bf776767be61577f1bca0d98d4aaf82a0e45336
This commit is contained in:
@@ -17,18 +17,24 @@
|
||||
package android.net;
|
||||
|
||||
import static android.net.NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_CBS;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_EIMS;
|
||||
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_VALIDATED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_WIFI_P2P;
|
||||
import static android.net.NetworkCapabilities.RESTRICTED_CAPABILITIES;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
||||
import static android.net.NetworkCapabilities.UNRESTRICTED_CAPABILITIES;
|
||||
|
||||
import static org.junit.Assert.assertArrayEquals;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
@@ -268,6 +274,120 @@ public class NetworkCapabilitiesTest {
|
||||
assertFalse(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnwantedCapabilities() {
|
||||
NetworkCapabilities network = new NetworkCapabilities();
|
||||
|
||||
NetworkCapabilities request = new NetworkCapabilities();
|
||||
assertTrue("Request: " + request + ", Network:" + network,
|
||||
request.satisfiedByNetworkCapabilities(network));
|
||||
|
||||
// Adding capabilities that doesn't exist in the network anyway
|
||||
request.addUnwantedCapability(NET_CAPABILITY_WIFI_P2P);
|
||||
request.addUnwantedCapability(NET_CAPABILITY_NOT_METERED);
|
||||
assertTrue(request.satisfiedByNetworkCapabilities(network));
|
||||
assertArrayEquals(new int[] {NET_CAPABILITY_WIFI_P2P, NET_CAPABILITY_NOT_METERED},
|
||||
request.getUnwantedCapabilities());
|
||||
|
||||
// This is a default capability, just want to make sure its there because we use it below.
|
||||
assertTrue(network.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
||||
|
||||
// Verify that adding unwanted capability will effectively remove it from capability list.
|
||||
request.addUnwantedCapability(NET_CAPABILITY_NOT_RESTRICTED);
|
||||
assertTrue(request.hasUnwantedCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
||||
assertFalse(request.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
||||
|
||||
|
||||
// Now this request won't be satisfied because network contains NOT_RESTRICTED.
|
||||
assertFalse(request.satisfiedByNetworkCapabilities(network));
|
||||
network.removeCapability(NET_CAPABILITY_NOT_RESTRICTED);
|
||||
assertTrue(request.satisfiedByNetworkCapabilities(network));
|
||||
|
||||
// Verify that adding capability will effectively remove it from unwanted list
|
||||
request.addCapability(NET_CAPABILITY_NOT_RESTRICTED);
|
||||
assertTrue(request.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
||||
assertFalse(request.hasUnwantedCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
||||
|
||||
assertFalse(request.satisfiedByNetworkCapabilities(network));
|
||||
network.addCapability(NET_CAPABILITY_NOT_RESTRICTED);
|
||||
assertTrue(request.satisfiedByNetworkCapabilities(network));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEqualsNetCapabilities() {
|
||||
int CAPABILITY = NET_CAPABILITY_MMS; // An arbitrary not mutable capability.
|
||||
|
||||
NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||
NetworkCapabilities nc2 = new NetworkCapabilities();
|
||||
assertTrue(nc1.equalsNetCapabilities(nc2));
|
||||
assertEquals(nc1, nc2);
|
||||
|
||||
nc1.addCapability(CAPABILITY);
|
||||
assertFalse(nc1.equalsNetCapabilities(nc2));
|
||||
assertNotEquals(nc1, nc2);
|
||||
nc2.addCapability(CAPABILITY);
|
||||
assertTrue(nc1.equalsNetCapabilities(nc2));
|
||||
assertEquals(nc1, nc2);
|
||||
|
||||
nc1.addUnwantedCapability(CAPABILITY);
|
||||
assertFalse(nc1.equalsNetCapabilities(nc2));
|
||||
nc2.addUnwantedCapability(CAPABILITY);
|
||||
assertTrue(nc1.equalsNetCapabilities(nc2));
|
||||
|
||||
nc1.removeCapability(CAPABILITY);
|
||||
assertFalse(nc1.equalsNetCapabilities(nc2));
|
||||
nc2.removeCapability(CAPABILITY);
|
||||
assertTrue(nc1.equalsNetCapabilities(nc2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCombineCapabilities() {
|
||||
NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||
NetworkCapabilities nc2 = new NetworkCapabilities();
|
||||
|
||||
nc1.addUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL);
|
||||
nc1.addCapability(NET_CAPABILITY_NOT_ROAMING);
|
||||
assertNotEquals(nc1, nc2);
|
||||
nc2.combineCapabilities(nc1);
|
||||
assertEquals(nc1, nc2);
|
||||
assertTrue(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING));
|
||||
assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL));
|
||||
|
||||
// This will effectively move NOT_ROAMING capability from required to unwanted for nc1.
|
||||
nc1.addUnwantedCapability(NET_CAPABILITY_NOT_ROAMING);
|
||||
|
||||
nc2.combineCapabilities(nc1);
|
||||
// We will get this capability in both requested and unwanted lists thus this request
|
||||
// will never be satisfied.
|
||||
assertTrue(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING));
|
||||
assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_NOT_ROAMING));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetCapabilities() {
|
||||
final int[] REQUIRED_CAPABILITIES = new int[] {
|
||||
NET_CAPABILITY_INTERNET, NET_CAPABILITY_NOT_VPN };
|
||||
final int[] UNWANTED_CAPABILITIES = new int[] {
|
||||
NET_CAPABILITY_NOT_RESTRICTED, NET_CAPABILITY_NOT_METERED
|
||||
};
|
||||
|
||||
NetworkCapabilities nc1 = new NetworkCapabilities();
|
||||
NetworkCapabilities nc2 = new NetworkCapabilities();
|
||||
|
||||
nc1.setCapabilities(REQUIRED_CAPABILITIES, UNWANTED_CAPABILITIES);
|
||||
assertArrayEquals(REQUIRED_CAPABILITIES, nc1.getCapabilities());
|
||||
|
||||
// Verify that setting and adding capabilities leads to the same object state.
|
||||
nc2.clearAll();
|
||||
for (int cap : REQUIRED_CAPABILITIES) {
|
||||
nc2.addCapability(cap);
|
||||
}
|
||||
for (int cap : UNWANTED_CAPABILITIES) {
|
||||
nc2.addUnwantedCapability(cap);
|
||||
}
|
||||
assertEquals(nc1, nc2);
|
||||
}
|
||||
|
||||
private void assertEqualsThroughMarshalling(NetworkCapabilities netCap) {
|
||||
Parcel p = Parcel.obtain();
|
||||
netCap.writeToParcel(p, /* flags */ 0);
|
||||
|
||||
Reference in New Issue
Block a user