summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorAaron Huang <huangaaron@google.com>2021-03-30 17:20:14 +0800
committerAaron Huang <huangaaron@google.com>2021-03-31 17:31:00 +0800
commite22a3970315d3838d193d1277075a00357d30eb0 (patch)
tree13264d3ed34751165212aea5b43efd6d1768e162 /common
parentc146cf63ec9982e192969f7643cd13145ef33326 (diff)
downloadnet-e22a3970315d3838d193d1277075a00357d30eb0.tar.gz
Reimplement inferRestrictedCapability without new exposed API
Method inferRestrictedCapability() was moved from frameworks/base to libs/net and it is using an API NetworkCapabilities.getCapabilities() which is a new exposed API in S. However, the change of moving the method will downstream to the branches without the new exposed API. Thus, reimplement this method without new exposed API. (cherry-picked from ag/14029492) Bug: 178777253 Bug: 130869457 Test: NetworkStaticLibTests Merged-In: Ib88fe2b831e968513f221443ed62a09c02150882 Change-Id: Ib88fe2b831e968513f221443ed62a09c02150882
Diffstat (limited to 'common')
-rw-r--r--common/framework/com/android/net/module/util/NetworkCapabilitiesUtils.java28
1 files changed, 18 insertions, 10 deletions
diff --git a/common/framework/com/android/net/module/util/NetworkCapabilitiesUtils.java b/common/framework/com/android/net/module/util/NetworkCapabilitiesUtils.java
index 28214cd8..7bf8fc12 100644
--- a/common/framework/com/android/net/module/util/NetworkCapabilitiesUtils.java
+++ b/common/framework/com/android/net/module/util/NetworkCapabilitiesUtils.java
@@ -89,7 +89,7 @@ public final class NetworkCapabilitiesUtils {
public static final int NET_CAPABILITY_NOT_VCN_MANAGED = 28;
/**
- * @See android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED
+ * @See android.net.NetworkCapabilities.NET_CAPABILITY_ENTERPRISE
* TODO: Use API constant when all downstream branches are S-based
*/
public static final int NET_CAPABILITY_ENTERPRISE = 29;
@@ -181,22 +181,30 @@ public final class NetworkCapabilitiesUtils {
*
* @return {@code true} if the network should be restricted.
*/
+ // TODO: Use packBits(nc.getCapabilities()) to check more easily using bit masks.
public static boolean inferRestrictedCapability(NetworkCapabilities nc) {
- final long capabilities = packBits(nc.getCapabilities());
// Check if we have any capability that forces the network to be restricted.
- final boolean forceRestrictedCapability =
- (capabilities & FORCE_RESTRICTED_CAPABILITIES) != 0;
+ for (int capability : unpackBits(FORCE_RESTRICTED_CAPABILITIES)) {
+ if (nc.hasCapability(capability)) {
+ return true;
+ }
+ }
// Verify there aren't any unrestricted capabilities. If there are we say
// the whole thing is unrestricted unless it is forced to be restricted.
- final boolean hasUnrestrictedCapabilities =
- (capabilities & UNRESTRICTED_CAPABILITIES) != 0;
+ for (int capability : unpackBits(UNRESTRICTED_CAPABILITIES)) {
+ if (nc.hasCapability(capability)) {
+ return false;
+ }
+ }
// Must have at least some restricted capabilities.
- final boolean hasRestrictedCapabilities = (capabilities & RESTRICTED_CAPABILITIES) != 0;
-
- return forceRestrictedCapability
- || (hasRestrictedCapabilities && !hasUnrestrictedCapabilities);
+ for (int capability : unpackBits(RESTRICTED_CAPABILITIES)) {
+ if (nc.hasCapability(capability)) {
+ return true;
+ }
+ }
+ return false;
}
/**