Add OEM_PRIVATE NetworkCapability
Adding network capability to be used with networks to be only used by OEM apps. Bug: 171505922 Test: atest CtsNetTestCasesLatestSdk:NetworkCapabilitiesTest Change-Id: Ib55ebec0e178b6317d92f17e1aff060dacdfb2b1
This commit is contained in:
@@ -170,6 +170,7 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
NET_CAPABILITY_MCX,
|
||||
NET_CAPABILITY_PARTIAL_CONNECTIVITY,
|
||||
NET_CAPABILITY_TEMPORARILY_NOT_METERED,
|
||||
NET_CAPABILITY_OEM_PRIVATE,
|
||||
})
|
||||
public @interface NetCapability { }
|
||||
|
||||
@@ -345,8 +346,15 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
*/
|
||||
public static final int NET_CAPABILITY_TEMPORARILY_NOT_METERED = 25;
|
||||
|
||||
/**
|
||||
* Indicates that this network is private to the OEM and meant only for OEM use.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static final int NET_CAPABILITY_OEM_PRIVATE = 26;
|
||||
|
||||
private static final int MIN_NET_CAPABILITY = NET_CAPABILITY_MMS;
|
||||
private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_TEMPORARILY_NOT_METERED;
|
||||
private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_OEM_PRIVATE;
|
||||
|
||||
/**
|
||||
* Network capabilities that are expected to be mutable, i.e., can change while a particular
|
||||
@@ -404,7 +412,8 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
* {@see #maybeMarkCapabilitiesRestricted}.
|
||||
*/
|
||||
private static final long FORCE_RESTRICTED_CAPABILITIES =
|
||||
(1 << NET_CAPABILITY_OEM_PAID);
|
||||
(1 << NET_CAPABILITY_OEM_PAID)
|
||||
| (1 << NET_CAPABILITY_OEM_PRIVATE);
|
||||
|
||||
/**
|
||||
* Capabilities that suggest that a network is unrestricted.
|
||||
@@ -1910,6 +1919,7 @@ public final class NetworkCapabilities implements Parcelable {
|
||||
case NET_CAPABILITY_MCX: return "MCX";
|
||||
case NET_CAPABILITY_PARTIAL_CONNECTIVITY: return "PARTIAL_CONNECTIVITY";
|
||||
case NET_CAPABILITY_TEMPORARILY_NOT_METERED: return "TEMPORARILY_NOT_METERED";
|
||||
case NET_CAPABILITY_OEM_PRIVATE: return "OEM_PRIVATE";
|
||||
default: return Integer.toString(capability);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
|
||||
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_OEM_PRIVATE;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_WIFI_P2P;
|
||||
@@ -358,6 +359,33 @@ public class NetworkCapabilitiesTest {
|
||||
assertFalse(nr.satisfiedByNetworkCapabilities(new NetworkCapabilities()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOemPrivate() {
|
||||
NetworkCapabilities nc = new NetworkCapabilities();
|
||||
// By default OEM_PRIVATE is neither in the unwanted or required lists and the network is
|
||||
// not restricted.
|
||||
assertFalse(nc.hasUnwantedCapability(NET_CAPABILITY_OEM_PRIVATE));
|
||||
assertFalse(nc.hasCapability(NET_CAPABILITY_OEM_PRIVATE));
|
||||
nc.maybeMarkCapabilitiesRestricted();
|
||||
assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
||||
|
||||
// Adding OEM_PRIVATE to capability list should make network restricted.
|
||||
nc.addCapability(NET_CAPABILITY_OEM_PRIVATE);
|
||||
nc.addCapability(NET_CAPABILITY_INTERNET); // Combine with unrestricted capability.
|
||||
nc.maybeMarkCapabilitiesRestricted();
|
||||
assertTrue(nc.hasCapability(NET_CAPABILITY_OEM_PRIVATE));
|
||||
assertFalse(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
||||
|
||||
// Now let's make request for OEM_PRIVATE network.
|
||||
NetworkCapabilities nr = new NetworkCapabilities();
|
||||
nr.addCapability(NET_CAPABILITY_OEM_PRIVATE);
|
||||
nr.maybeMarkCapabilitiesRestricted();
|
||||
assertTrue(nr.satisfiedByNetworkCapabilities(nc));
|
||||
|
||||
// Request fails for network with the default capabilities.
|
||||
assertFalse(nr.satisfiedByNetworkCapabilities(new NetworkCapabilities()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnwantedCapabilities() {
|
||||
NetworkCapabilities network = new NetworkCapabilities();
|
||||
|
||||
Reference in New Issue
Block a user