Remove ArrayUtils usage in connectivity classes
Instead, use CollectionUtils from frameworks/libs/net. Bug: 174541037 Test: atest FrameworksNetTests Change-Id: I71b574f67fc9a88063925bc75f7c1441e585b815
This commit is contained in:
@@ -185,12 +185,13 @@ import com.android.internal.annotations.GuardedBy;
|
|||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.internal.app.IBatteryStats;
|
import com.android.internal.app.IBatteryStats;
|
||||||
import com.android.internal.logging.MetricsLogger;
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.internal.util.ArrayUtils;
|
|
||||||
import com.android.internal.util.AsyncChannel;
|
import com.android.internal.util.AsyncChannel;
|
||||||
|
import com.android.internal.util.BitUtils;
|
||||||
import com.android.internal.util.IndentingPrintWriter;
|
import com.android.internal.util.IndentingPrintWriter;
|
||||||
import com.android.internal.util.LocationPermissionChecker;
|
import com.android.internal.util.LocationPermissionChecker;
|
||||||
import com.android.internal.util.MessageUtils;
|
import com.android.internal.util.MessageUtils;
|
||||||
import com.android.modules.utils.BasicShellCommandHandler;
|
import com.android.modules.utils.BasicShellCommandHandler;
|
||||||
|
import com.android.net.module.util.CollectionUtils;
|
||||||
import com.android.net.module.util.LinkPropertiesUtils.CompareOrUpdateResult;
|
import com.android.net.module.util.LinkPropertiesUtils.CompareOrUpdateResult;
|
||||||
import com.android.net.module.util.LinkPropertiesUtils.CompareResult;
|
import com.android.net.module.util.LinkPropertiesUtils.CompareResult;
|
||||||
import com.android.server.am.BatteryStatsService;
|
import com.android.server.am.BatteryStatsService;
|
||||||
@@ -2558,13 +2559,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
if (!checkDumpPermission(mContext, TAG, pw)) return;
|
if (!checkDumpPermission(mContext, TAG, pw)) return;
|
||||||
if (asProto) return;
|
if (asProto) return;
|
||||||
|
|
||||||
if (ArrayUtils.contains(args, DIAG_ARG)) {
|
if (CollectionUtils.contains(args, DIAG_ARG)) {
|
||||||
dumpNetworkDiagnostics(pw);
|
dumpNetworkDiagnostics(pw);
|
||||||
return;
|
return;
|
||||||
} else if (ArrayUtils.contains(args, NETWORK_ARG)) {
|
} else if (CollectionUtils.contains(args, NETWORK_ARG)) {
|
||||||
dumpNetworks(pw);
|
dumpNetworks(pw);
|
||||||
return;
|
return;
|
||||||
} else if (ArrayUtils.contains(args, REQUEST_ARG)) {
|
} else if (CollectionUtils.contains(args, REQUEST_ARG)) {
|
||||||
dumpNetworkRequests(pw);
|
dumpNetworkRequests(pw);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2635,7 +2636,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
|
|
||||||
pw.println();
|
pw.println();
|
||||||
|
|
||||||
if (ArrayUtils.contains(args, SHORT_ARG) == false) {
|
if (!CollectionUtils.contains(args, SHORT_ARG)) {
|
||||||
pw.println();
|
pw.println();
|
||||||
pw.println("mNetworkRequestInfoLogs (most recent first):");
|
pw.println("mNetworkRequestInfoLogs (most recent first):");
|
||||||
pw.increaseIndent();
|
pw.increaseIndent();
|
||||||
@@ -4788,7 +4789,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArrayUtils.isEmpty(underlyingNetworks)) return null;
|
if (CollectionUtils.isEmpty(underlyingNetworks)) return null;
|
||||||
|
|
||||||
List<String> interfaces = new ArrayList<>();
|
List<String> interfaces = new ArrayList<>();
|
||||||
for (Network network : underlyingNetworks) {
|
for (Network network : underlyingNetworks) {
|
||||||
@@ -4832,7 +4833,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
if (!nai.supportsUnderlyingNetworks()) return false;
|
if (!nai.supportsUnderlyingNetworks()) return false;
|
||||||
final Network[] underlying = underlyingNetworksOrDefault(
|
final Network[] underlying = underlyingNetworksOrDefault(
|
||||||
nai.networkCapabilities.getOwnerUid(), nai.declaredUnderlyingNetworks);
|
nai.networkCapabilities.getOwnerUid(), nai.declaredUnderlyingNetworks);
|
||||||
return ArrayUtils.contains(underlying, network);
|
return CollectionUtils.contains(underlying, network);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -5296,8 +5297,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: use NetworkStackUtils.convertToIntArray after moving it
|
return CollectionUtils.toIntArray(new ArrayList<>(thresholds));
|
||||||
return ArrayUtils.convertToIntArray(new ArrayList<>(thresholds));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateSignalStrengthThresholds(
|
private void updateSignalStrengthThresholds(
|
||||||
@@ -6416,7 +6416,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
@NonNull NetworkCapabilities agentCaps, @NonNull NetworkCapabilities newNc) {
|
@NonNull NetworkCapabilities agentCaps, @NonNull NetworkCapabilities newNc) {
|
||||||
underlyingNetworks = underlyingNetworksOrDefault(
|
underlyingNetworks = underlyingNetworksOrDefault(
|
||||||
agentCaps.getOwnerUid(), underlyingNetworks);
|
agentCaps.getOwnerUid(), underlyingNetworks);
|
||||||
int[] transportTypes = agentCaps.getTransportTypes();
|
long transportTypes = BitUtils.packBits(agentCaps.getTransportTypes());
|
||||||
int downKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
|
int downKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
|
||||||
int upKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
|
int upKbps = NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED;
|
||||||
// metered if any underlying is metered, or originally declared metered by the agent.
|
// metered if any underlying is metered, or originally declared metered by the agent.
|
||||||
@@ -6435,7 +6435,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
final NetworkCapabilities underlyingCaps = underlying.networkCapabilities;
|
final NetworkCapabilities underlyingCaps = underlying.networkCapabilities;
|
||||||
hadUnderlyingNetworks = true;
|
hadUnderlyingNetworks = true;
|
||||||
for (int underlyingType : underlyingCaps.getTransportTypes()) {
|
for (int underlyingType : underlyingCaps.getTransportTypes()) {
|
||||||
transportTypes = ArrayUtils.appendInt(transportTypes, underlyingType);
|
transportTypes |= 1L << underlyingType;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Merge capabilities of this underlying network. For bandwidth, assume the
|
// Merge capabilities of this underlying network. For bandwidth, assume the
|
||||||
@@ -6466,7 +6466,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
suspended = false;
|
suspended = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
newNc.setTransportTypes(transportTypes);
|
newNc.setTransportTypes(BitUtils.unpackBits(transportTypes));
|
||||||
newNc.setLinkDownstreamBandwidthKbps(downKbps);
|
newNc.setLinkDownstreamBandwidthKbps(downKbps);
|
||||||
newNc.setLinkUpstreamBandwidthKbps(upKbps);
|
newNc.setLinkUpstreamBandwidthKbps(upKbps);
|
||||||
newNc.setCapability(NET_CAPABILITY_NOT_METERED, !metered);
|
newNc.setCapability(NET_CAPABILITY_NOT_METERED, !metered);
|
||||||
@@ -8531,14 +8531,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
for (NetworkAgentInfo virtual : mNetworkAgentInfos) {
|
for (NetworkAgentInfo virtual : mNetworkAgentInfos) {
|
||||||
if (virtual.supportsUnderlyingNetworks()
|
if (virtual.supportsUnderlyingNetworks()
|
||||||
&& virtual.networkCapabilities.getOwnerUid() == callbackUid
|
&& virtual.networkCapabilities.getOwnerUid() == callbackUid
|
||||||
&& ArrayUtils.contains(virtual.declaredUnderlyingNetworks, nai.network)) {
|
&& CollectionUtils.contains(virtual.declaredUnderlyingNetworks, nai.network)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Administrator UIDs also contains the Owner UID
|
// Administrator UIDs also contains the Owner UID
|
||||||
final int[] administratorUids = nai.networkCapabilities.getAdministratorUids();
|
final int[] administratorUids = nai.networkCapabilities.getAdministratorUids();
|
||||||
return ArrayUtils.contains(administratorUids, callbackUid);
|
return CollectionUtils.contains(administratorUids, callbackUid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.server.connectivity;
|
package com.android.server.connectivity;
|
||||||
|
|
||||||
|
import static com.android.net.module.util.CollectionUtils.contains;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.IDnsResolver;
|
import android.net.IDnsResolver;
|
||||||
@@ -33,7 +35,6 @@ import android.os.ServiceSpecificException;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.internal.util.ArrayUtils;
|
|
||||||
import com.android.net.module.util.NetworkStackConstants;
|
import com.android.net.module.util.NetworkStackConstants;
|
||||||
import com.android.server.net.BaseNetworkObserver;
|
import com.android.server.net.BaseNetworkObserver;
|
||||||
|
|
||||||
@@ -117,8 +118,8 @@ public class Nat464Xlat extends BaseNetworkObserver {
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected static boolean requiresClat(NetworkAgentInfo nai) {
|
protected static boolean requiresClat(NetworkAgentInfo nai) {
|
||||||
// TODO: migrate to NetworkCapabilities.TRANSPORT_*.
|
// TODO: migrate to NetworkCapabilities.TRANSPORT_*.
|
||||||
final boolean supported = ArrayUtils.contains(NETWORK_TYPES, nai.networkInfo.getType());
|
final boolean supported = contains(NETWORK_TYPES, nai.networkInfo.getType());
|
||||||
final boolean connected = ArrayUtils.contains(NETWORK_STATES, nai.networkInfo.getState());
|
final boolean connected = contains(NETWORK_STATES, nai.networkInfo.getState());
|
||||||
|
|
||||||
// Only run clat on networks that have a global IPv6 address and don't have a native IPv4
|
// Only run clat on networks that have a global IPv6 address and don't have a native IPv4
|
||||||
// address.
|
// address.
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
|
|||||||
import static android.os.Process.INVALID_UID;
|
import static android.os.Process.INVALID_UID;
|
||||||
import static android.os.Process.SYSTEM_UID;
|
import static android.os.Process.SYSTEM_UID;
|
||||||
|
|
||||||
|
import static com.android.net.module.util.CollectionUtils.toIntArray;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
@@ -50,13 +52,12 @@ import android.util.SparseIntArray;
|
|||||||
|
|
||||||
import com.android.internal.annotations.GuardedBy;
|
import com.android.internal.annotations.GuardedBy;
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.internal.util.ArrayUtils;
|
|
||||||
import com.android.internal.util.IndentingPrintWriter;
|
import com.android.internal.util.IndentingPrintWriter;
|
||||||
|
import com.android.net.module.util.CollectionUtils;
|
||||||
import com.android.server.LocalServices;
|
import com.android.server.LocalServices;
|
||||||
import com.android.server.SystemConfig;
|
import com.android.server.SystemConfig;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -204,7 +205,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
|
|||||||
if (app.requestedPermissions == null || app.requestedPermissionsFlags == null) {
|
if (app.requestedPermissions == null || app.requestedPermissionsFlags == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final int index = ArrayUtils.indexOf(app.requestedPermissions, permission);
|
final int index = CollectionUtils.indexOf(app.requestedPermissions, permission);
|
||||||
if (index < 0 || index >= app.requestedPermissionsFlags.length) return false;
|
if (index < 0 || index >= app.requestedPermissionsFlags.length) return false;
|
||||||
return (app.requestedPermissionsFlags[index] & REQUESTED_PERMISSION_GRANTED) != 0;
|
return (app.requestedPermissionsFlags[index] & REQUESTED_PERMISSION_GRANTED) != 0;
|
||||||
}
|
}
|
||||||
@@ -246,15 +247,6 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
|
|||||||
return mApps.containsKey(uid);
|
return mApps.containsKey(uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int[] toIntArray(Collection<Integer> list) {
|
|
||||||
int[] array = new int[list.size()];
|
|
||||||
int i = 0;
|
|
||||||
for (Integer item : list) {
|
|
||||||
array[i++] = item;
|
|
||||||
}
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void update(Set<UserHandle> users, Map<Integer, Boolean> apps, boolean add) {
|
private void update(Set<UserHandle> users, Map<Integer, Boolean> apps, boolean add) {
|
||||||
List<Integer> network = new ArrayList<>();
|
List<Integer> network = new ArrayList<>();
|
||||||
List<Integer> system = new ArrayList<>();
|
List<Integer> system = new ArrayList<>();
|
||||||
@@ -662,23 +654,23 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
|
|||||||
if (allPermissionAppIds.size() != 0) {
|
if (allPermissionAppIds.size() != 0) {
|
||||||
mNetd.trafficSetNetPermForUids(
|
mNetd.trafficSetNetPermForUids(
|
||||||
INetd.PERMISSION_INTERNET | INetd.PERMISSION_UPDATE_DEVICE_STATS,
|
INetd.PERMISSION_INTERNET | INetd.PERMISSION_UPDATE_DEVICE_STATS,
|
||||||
ArrayUtils.convertToIntArray(allPermissionAppIds));
|
toIntArray(allPermissionAppIds));
|
||||||
}
|
}
|
||||||
if (internetPermissionAppIds.size() != 0) {
|
if (internetPermissionAppIds.size() != 0) {
|
||||||
mNetd.trafficSetNetPermForUids(INetd.PERMISSION_INTERNET,
|
mNetd.trafficSetNetPermForUids(INetd.PERMISSION_INTERNET,
|
||||||
ArrayUtils.convertToIntArray(internetPermissionAppIds));
|
toIntArray(internetPermissionAppIds));
|
||||||
}
|
}
|
||||||
if (updateStatsPermissionAppIds.size() != 0) {
|
if (updateStatsPermissionAppIds.size() != 0) {
|
||||||
mNetd.trafficSetNetPermForUids(INetd.PERMISSION_UPDATE_DEVICE_STATS,
|
mNetd.trafficSetNetPermForUids(INetd.PERMISSION_UPDATE_DEVICE_STATS,
|
||||||
ArrayUtils.convertToIntArray(updateStatsPermissionAppIds));
|
toIntArray(updateStatsPermissionAppIds));
|
||||||
}
|
}
|
||||||
if (noPermissionAppIds.size() != 0) {
|
if (noPermissionAppIds.size() != 0) {
|
||||||
mNetd.trafficSetNetPermForUids(INetd.PERMISSION_NONE,
|
mNetd.trafficSetNetPermForUids(INetd.PERMISSION_NONE,
|
||||||
ArrayUtils.convertToIntArray(noPermissionAppIds));
|
toIntArray(noPermissionAppIds));
|
||||||
}
|
}
|
||||||
if (uninstalledAppIds.size() != 0) {
|
if (uninstalledAppIds.size() != 0) {
|
||||||
mNetd.trafficSetNetPermForUids(INetd.PERMISSION_UNINSTALLED,
|
mNetd.trafficSetNetPermForUids(INetd.PERMISSION_UNINSTALLED,
|
||||||
ArrayUtils.convertToIntArray(uninstalledAppIds));
|
toIntArray(uninstalledAppIds));
|
||||||
}
|
}
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.e(TAG, "Pass appId list of special permission failed." + e);
|
Log.e(TAG, "Pass appId list of special permission failed." + e);
|
||||||
|
|||||||
Reference in New Issue
Block a user