diff options
| author | Lorenzo Colitti <lorenzo@google.com> | 2018-03-30 07:00:54 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-03-30 07:00:54 +0000 |
| commit | 8e338f7dae163fbd0b2ad5a91e38cbccff659366 (patch) | |
| tree | 158ad55eb4d0615397888993bb85cf9cba7bc835 /core/java/android | |
| parent | b8a1509d6856dbf1362351d28b44dd737414dc8a (diff) | |
| parent | 4af9107d6cb81a00525ba8c311f0ef7ebe8f7bd3 (diff) | |
Merge "Mark networks with OEM_PAID always restricted"
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/net/NetworkCapabilities.java | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java index 22cffcc377f2..19f0c90e32bc 100644 --- a/core/java/android/net/NetworkCapabilities.java +++ b/core/java/android/net/NetworkCapabilities.java @@ -315,7 +315,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 = @@ -326,7 +326,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); /** @@ -531,16 +537,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); } } |
