Snap for 4701683 from 7b7e87eeb522c18c9808e6cb03cdc6dd307d7ae2 to pi-release

Change-Id: I8eb9d412604336195a8cfa15cf62e8d753f75618
This commit is contained in:
android-build-team Robot
2018-04-05 07:23:55 +00:00
3 changed files with 43 additions and 8 deletions

View File

@@ -318,7 +318,7 @@ public final class NetworkCapabilities implements Parcelable {
/**
* Capabilities that suggest that a network is restricted.
* {@see #maybeMarkCapabilitiesRestricted}.
* {@see #maybeMarkCapabilitiesRestricted}, {@see #FORCE_RESTRICTED_CAPABILITIES}
*/
@VisibleForTesting
/* package */ static final long RESTRICTED_CAPABILITIES =
@@ -329,7 +329,13 @@ public final class NetworkCapabilities implements Parcelable {
(1 << NET_CAPABILITY_IA) |
(1 << NET_CAPABILITY_IMS) |
(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);
/**
@@ -533,16 +539,21 @@ public final class NetworkCapabilities implements Parcelable {
* @hide
*/
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
// the whole thing is unrestricted.
// the whole thing is unrestricted unless it is forced to be restricted.
final boolean hasUnrestrictedCapabilities =
((mNetworkCapabilities & UNRESTRICTED_CAPABILITIES) != 0);
(mNetworkCapabilities & UNRESTRICTED_CAPABILITIES) != 0;
// Must have at least some restricted capabilities.
final boolean hasRestrictedCapabilities =
((mNetworkCapabilities & RESTRICTED_CAPABILITIES) != 0);
(mNetworkCapabilities & RESTRICTED_CAPABILITIES) != 0;
if (hasRestrictedCapabilities && !hasUnrestrictedCapabilities) {
if (forceRestrictedCapability
|| (hasRestrictedCapabilities && !hasUnrestrictedCapabilities)) {
removeCapability(NET_CAPABILITY_NOT_RESTRICTED);
}
}

View File

@@ -172,6 +172,8 @@ public class NetworkRequest implements Parcelable {
* If the given capability was previously added to the list of unwanted capabilities
* then the capability will also be removed from the list of unwanted capabilities.
*
* @see #addUnwantedCapability(int)
*
* @param capability The capability to add.
* @return The builder to facilitate chaining
* {@code builder.addCapability(...).addCapability();}.
@@ -435,6 +437,13 @@ public class NetworkRequest implements Parcelable {
return networkCapabilities.hasCapability(capability);
}
/**
* @see Builder#addUnwantedCapability(int)
*/
public boolean hasUnwantedCapability(@NetCapability int capability) {
return networkCapabilities.hasUnwantedCapability(capability);
}
/**
* @see Builder#addTransportType(int)
*/

View File

@@ -264,14 +264,28 @@ public class NetworkCapabilitiesTest {
@Test
public void testOemPaid() {
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));
nc.maybeMarkCapabilitiesRestricted();
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_INTERNET); // Combine with unrestricted capability.
nc.maybeMarkCapabilitiesRestricted();
assertTrue(nc.hasCapability(NET_CAPABILITY_OEM_PAID));
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
@@ -286,7 +300,8 @@ public class NetworkCapabilitiesTest {
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},
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.