Introduce ensureListenableCapabilities

Renamed from ensureValid, this is an easier to understand name.
It is also a lot clearer when requestable capabilities also
have to be listenable.

Also move the 2 functions together.

Test: FrameworksNetTests
Change-Id: I685f924a3720846d740837a4a0fee3d88a26725a
This commit is contained in:
Chalard Jean
2021-12-16 23:16:02 +09:00
parent ac9ace0bbe
commit dd4219978d

View File

@@ -6148,13 +6148,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
} }
private void ensureRequestableCapabilities(NetworkCapabilities networkCapabilities) {
final String badCapability = networkCapabilities.describeFirstNonRequestableCapability();
if (badCapability != null) {
throw new IllegalArgumentException("Cannot request network with " + badCapability);
}
}
// This checks that the passed capabilities either do not request a // This checks that the passed capabilities either do not request a
// specific SSID/SignalStrength, or the calling app has permission to do so. // specific SSID/SignalStrength, or the calling app has permission to do so.
private void ensureSufficientPermissionsForRequest(NetworkCapabilities nc, private void ensureSufficientPermissionsForRequest(NetworkCapabilities nc,
@@ -6212,7 +6205,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
nai.onSignalStrengthThresholdsUpdated(thresholdsArray); nai.onSignalStrengthThresholdsUpdated(thresholdsArray);
} }
private void ensureValidNetworkSpecifier(NetworkCapabilities nc) { private static void ensureValidNetworkSpecifier(NetworkCapabilities nc) {
if (nc == null) { if (nc == null) {
return; return;
} }
@@ -6225,7 +6218,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
} }
private void ensureValid(NetworkCapabilities nc) { private static void ensureListenableCapabilities(@NonNull final NetworkCapabilities nc) {
ensureValidNetworkSpecifier(nc); ensureValidNetworkSpecifier(nc);
if (nc.isPrivateDnsBroken()) { if (nc.isPrivateDnsBroken()) {
throw new IllegalArgumentException("Can't request broken private DNS"); throw new IllegalArgumentException("Can't request broken private DNS");
@@ -6235,6 +6228,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
} }
private void ensureRequestableCapabilities(@NonNull final NetworkCapabilities nc) {
ensureListenableCapabilities(nc);
final String badCapability = nc.describeFirstNonRequestableCapability();
if (badCapability != null) {
throw new IllegalArgumentException("Cannot request network with " + badCapability);
}
}
// TODO: Set the mini sdk to 31 and remove @TargetApi annotation when b/205923322 is addressed. // TODO: Set the mini sdk to 31 and remove @TargetApi annotation when b/205923322 is addressed.
@TargetApi(Build.VERSION_CODES.S) @TargetApi(Build.VERSION_CODES.S)
private boolean isTargetSdkAtleast(int version, int callingUid, private boolean isTargetSdkAtleast(int version, int callingUid,
@@ -6327,7 +6328,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (timeoutMs < 0) { if (timeoutMs < 0) {
throw new IllegalArgumentException("Bad timeout specified"); throw new IllegalArgumentException("Bad timeout specified");
} }
ensureValid(networkCapabilities);
final NetworkRequest networkRequest = new NetworkRequest(networkCapabilities, legacyType, final NetworkRequest networkRequest = new NetworkRequest(networkCapabilities, legacyType,
nextNetworkRequestId(), reqType); nextNetworkRequestId(), reqType);
@@ -6469,7 +6469,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
Binder.getCallingPid(), callingUid, callingPackageName); Binder.getCallingPid(), callingUid, callingPackageName);
restrictRequestUidsForCallerAndSetRequestorInfo(networkCapabilities, restrictRequestUidsForCallerAndSetRequestorInfo(networkCapabilities,
callingUid, callingPackageName); callingUid, callingPackageName);
ensureValid(networkCapabilities);
NetworkRequest networkRequest = new NetworkRequest(networkCapabilities, TYPE_NONE, NetworkRequest networkRequest = new NetworkRequest(networkCapabilities, TYPE_NONE,
nextNetworkRequestId(), NetworkRequest.Type.REQUEST); nextNetworkRequestId(), NetworkRequest.Type.REQUEST);
@@ -6536,7 +6535,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// There is no need to do this for requests because an app without CHANGE_NETWORK_STATE // There is no need to do this for requests because an app without CHANGE_NETWORK_STATE
// can't request networks. // can't request networks.
restrictBackgroundRequestForCaller(nc); restrictBackgroundRequestForCaller(nc);
ensureValid(nc); ensureListenableCapabilities(nc);
NetworkRequest networkRequest = new NetworkRequest(nc, TYPE_NONE, nextNetworkRequestId(), NetworkRequest networkRequest = new NetworkRequest(nc, TYPE_NONE, nextNetworkRequestId(),
NetworkRequest.Type.LISTEN); NetworkRequest.Type.LISTEN);
@@ -6558,7 +6557,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (!hasWifiNetworkListenPermission(networkCapabilities)) { if (!hasWifiNetworkListenPermission(networkCapabilities)) {
enforceAccessPermission(); enforceAccessPermission();
} }
ensureValid(networkCapabilities); ensureListenableCapabilities(networkCapabilities);
ensureSufficientPermissionsForRequest(networkCapabilities, ensureSufficientPermissionsForRequest(networkCapabilities,
Binder.getCallingPid(), callingUid, callingPackageName); Binder.getCallingPid(), callingUid, callingPackageName);
final NetworkCapabilities nc = new NetworkCapabilities(networkCapabilities); final NetworkCapabilities nc = new NetworkCapabilities(networkCapabilities);