Merge "Mark networks with OEM_PAID always restricted"
am: dbc568ceaf
Change-Id: I4ffcf01e1f79c8a3570ea2b819688b55904939fe
This commit is contained in:
@@ -316,7 +316,7 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Capabilities that suggest that a network is restricted.
|
* Capabilities that suggest that a network is restricted.
|
||||||
* {@see #maybeMarkCapabilitiesRestricted}.
|
* {@see #maybeMarkCapabilitiesRestricted}, {@see #FORCE_RESTRICTED_CAPABILITIES}
|
||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
/* package */ static final long RESTRICTED_CAPABILITIES =
|
/* package */ static final long RESTRICTED_CAPABILITIES =
|
||||||
@@ -327,7 +327,13 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
(1 << NET_CAPABILITY_IA) |
|
(1 << NET_CAPABILITY_IA) |
|
||||||
(1 << NET_CAPABILITY_IMS) |
|
(1 << NET_CAPABILITY_IMS) |
|
||||||
(1 << NET_CAPABILITY_RCS) |
|
(1 << NET_CAPABILITY_RCS) |
|
||||||
(1 << NET_CAPABILITY_XCAP) |
|
(1 << NET_CAPABILITY_XCAP);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Capabilities that force network to be restricted.
|
||||||
|
* {@see #maybeMarkCapabilitiesRestricted}.
|
||||||
|
*/
|
||||||
|
private static final long FORCE_RESTRICTED_CAPABILITIES =
|
||||||
(1 << NET_CAPABILITY_OEM_PAID);
|
(1 << NET_CAPABILITY_OEM_PAID);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -532,16 +538,21 @@ public final class NetworkCapabilities implements Parcelable {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void maybeMarkCapabilitiesRestricted() {
|
public void maybeMarkCapabilitiesRestricted() {
|
||||||
|
// Check if we have any capability that forces the network to be restricted.
|
||||||
|
final boolean forceRestrictedCapability =
|
||||||
|
(mNetworkCapabilities & FORCE_RESTRICTED_CAPABILITIES) != 0;
|
||||||
|
|
||||||
// Verify there aren't any unrestricted capabilities. If there are we say
|
// Verify there aren't any unrestricted capabilities. If there are we say
|
||||||
// the whole thing is unrestricted.
|
// the whole thing is unrestricted unless it is forced to be restricted.
|
||||||
final boolean hasUnrestrictedCapabilities =
|
final boolean hasUnrestrictedCapabilities =
|
||||||
((mNetworkCapabilities & UNRESTRICTED_CAPABILITIES) != 0);
|
(mNetworkCapabilities & UNRESTRICTED_CAPABILITIES) != 0;
|
||||||
|
|
||||||
// Must have at least some restricted capabilities.
|
// Must have at least some restricted capabilities.
|
||||||
final boolean hasRestrictedCapabilities =
|
final boolean hasRestrictedCapabilities =
|
||||||
((mNetworkCapabilities & RESTRICTED_CAPABILITIES) != 0);
|
(mNetworkCapabilities & RESTRICTED_CAPABILITIES) != 0;
|
||||||
|
|
||||||
if (hasRestrictedCapabilities && !hasUnrestrictedCapabilities) {
|
if (forceRestrictedCapability
|
||||||
|
|| (hasRestrictedCapabilities && !hasUnrestrictedCapabilities)) {
|
||||||
removeCapability(NET_CAPABILITY_NOT_RESTRICTED);
|
removeCapability(NET_CAPABILITY_NOT_RESTRICTED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -273,14 +273,28 @@ public class NetworkCapabilitiesTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testOemPaid() {
|
public void testOemPaid() {
|
||||||
NetworkCapabilities nc = new NetworkCapabilities();
|
NetworkCapabilities nc = new NetworkCapabilities();
|
||||||
nc.maybeMarkCapabilitiesRestricted();
|
// By default OEM_PAID is neither in the unwanted or required lists and the network is not
|
||||||
|
// restricted.
|
||||||
|
assertFalse(nc.hasUnwantedCapability(NET_CAPABILITY_OEM_PAID));
|
||||||
assertFalse(nc.hasCapability(NET_CAPABILITY_OEM_PAID));
|
assertFalse(nc.hasCapability(NET_CAPABILITY_OEM_PAID));
|
||||||
|
nc.maybeMarkCapabilitiesRestricted();
|
||||||
assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
||||||
|
|
||||||
|
// Adding OEM_PAID to capability list should make network restricted.
|
||||||
nc.addCapability(NET_CAPABILITY_OEM_PAID);
|
nc.addCapability(NET_CAPABILITY_OEM_PAID);
|
||||||
|
nc.addCapability(NET_CAPABILITY_INTERNET); // Combine with unrestricted capability.
|
||||||
nc.maybeMarkCapabilitiesRestricted();
|
nc.maybeMarkCapabilitiesRestricted();
|
||||||
assertTrue(nc.hasCapability(NET_CAPABILITY_OEM_PAID));
|
assertTrue(nc.hasCapability(NET_CAPABILITY_OEM_PAID));
|
||||||
assertFalse(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
assertFalse(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED));
|
||||||
|
|
||||||
|
// Now let's make request for OEM_PAID network.
|
||||||
|
NetworkCapabilities nr = new NetworkCapabilities();
|
||||||
|
nr.addCapability(NET_CAPABILITY_OEM_PAID);
|
||||||
|
nr.maybeMarkCapabilitiesRestricted();
|
||||||
|
assertTrue(nr.satisfiedByNetworkCapabilities(nc));
|
||||||
|
|
||||||
|
// Request fails for network with the default capabilities.
|
||||||
|
assertFalse(nr.satisfiedByNetworkCapabilities(new NetworkCapabilities()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -295,7 +309,8 @@ public class NetworkCapabilitiesTest {
|
|||||||
request.addUnwantedCapability(NET_CAPABILITY_WIFI_P2P);
|
request.addUnwantedCapability(NET_CAPABILITY_WIFI_P2P);
|
||||||
request.addUnwantedCapability(NET_CAPABILITY_NOT_METERED);
|
request.addUnwantedCapability(NET_CAPABILITY_NOT_METERED);
|
||||||
assertTrue(request.satisfiedByNetworkCapabilities(network));
|
assertTrue(request.satisfiedByNetworkCapabilities(network));
|
||||||
assertArrayEquals(new int[] {NET_CAPABILITY_WIFI_P2P, NET_CAPABILITY_NOT_METERED},
|
assertArrayEquals(new int[] {NET_CAPABILITY_WIFI_P2P,
|
||||||
|
NET_CAPABILITY_NOT_METERED},
|
||||||
request.getUnwantedCapabilities());
|
request.getUnwantedCapabilities());
|
||||||
|
|
||||||
// This is a default capability, just want to make sure its there because we use it below.
|
// This is a default capability, just want to make sure its there because we use it below.
|
||||||
|
|||||||
Reference in New Issue
Block a user