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_MCX,
|
||||||
NET_CAPABILITY_PARTIAL_CONNECTIVITY,
|
NET_CAPABILITY_PARTIAL_CONNECTIVITY,
|
||||||
NET_CAPABILITY_TEMPORARILY_NOT_METERED,
|
NET_CAPABILITY_TEMPORARILY_NOT_METERED,
|
||||||
|
NET_CAPABILITY_OEM_PRIVATE,
|
||||||
})
|
})
|
||||||
public @interface NetCapability { }
|
public @interface NetCapability { }
|
||||||
|
|
||||||
@@ -345,8 +346,15 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
public static final int NET_CAPABILITY_TEMPORARILY_NOT_METERED = 25;
|
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 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
|
* 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}.
|
* {@see #maybeMarkCapabilitiesRestricted}.
|
||||||
*/
|
*/
|
||||||
private static final long FORCE_RESTRICTED_CAPABILITIES =
|
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.
|
* 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_MCX: return "MCX";
|
||||||
case NET_CAPABILITY_PARTIAL_CONNECTIVITY: return "PARTIAL_CONNECTIVITY";
|
case NET_CAPABILITY_PARTIAL_CONNECTIVITY: return "PARTIAL_CONNECTIVITY";
|
||||||
case NET_CAPABILITY_TEMPORARILY_NOT_METERED: return "TEMPORARILY_NOT_METERED";
|
case NET_CAPABILITY_TEMPORARILY_NOT_METERED: return "TEMPORARILY_NOT_METERED";
|
||||||
|
case NET_CAPABILITY_OEM_PRIVATE: return "OEM_PRIVATE";
|
||||||
default: return Integer.toString(capability);
|
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_ROAMING;
|
||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
|
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_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_PARTIAL_CONNECTIVITY;
|
||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_WIFI_P2P;
|
import static android.net.NetworkCapabilities.NET_CAPABILITY_WIFI_P2P;
|
||||||
@@ -358,6 +359,33 @@ public class NetworkCapabilitiesTest {
|
|||||||
assertFalse(nr.satisfiedByNetworkCapabilities(new NetworkCapabilities()));
|
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
|
@Test
|
||||||
public void testUnwantedCapabilities() {
|
public void testUnwantedCapabilities() {
|
||||||
NetworkCapabilities network = new NetworkCapabilities();
|
NetworkCapabilities network = new NetworkCapabilities();
|
||||||
|
|||||||
Reference in New Issue
Block a user