Merge "Fix up NetworkCapabilities' toString" am: a23d640426

am: 03580e0ccd

Change-Id: I2f1578589232c49574dbf401d7f4becfa350a1c0
This commit is contained in:
Chalard Jean
2018-03-01 05:56:33 +00:00
committed by android-build-merger
2 changed files with 64 additions and 25 deletions

View File

@@ -1229,34 +1229,68 @@ public final class NetworkCapabilities implements Parcelable {
@Override
public String toString() {
// TODO: enumerate bits for transports and capabilities instead of creating arrays.
// TODO: use a StringBuilder instead of string concatenation.
int[] types = getTransportTypes();
String transports = (types.length > 0) ? " Transports: " + transportNamesOf(types) : "";
types = getCapabilities();
String capabilities = (types.length > 0 ? " Capabilities: " : "");
for (int i = 0; i < types.length; ) {
capabilities += capabilityNameOf(types[i]);
if (++i < types.length) capabilities += "&";
final StringBuilder sb = new StringBuilder("[");
if (0 != mTransportTypes) {
sb.append(" Transports: ");
appendStringRepresentationOfBitMaskToStringBuilder(sb, mTransportTypes,
NetworkCapabilities::transportNameOf, "|");
}
if (0 != mNetworkCapabilities) {
sb.append(" Capabilities: ");
appendStringRepresentationOfBitMaskToStringBuilder(sb, mNetworkCapabilities,
NetworkCapabilities::capabilityNameOf, "&");
}
if (mLinkUpBandwidthKbps > 0) {
sb.append(" LinkUpBandwidth>=").append(mLinkUpBandwidthKbps).append("Kbps");
}
if (mLinkDownBandwidthKbps > 0) {
sb.append(" LinkDnBandwidth>=").append(mLinkDownBandwidthKbps).append("Kbps");
}
if (mNetworkSpecifier != null) {
sb.append(" Specifier: <").append(mNetworkSpecifier).append(">");
}
if (hasSignalStrength()) {
sb.append(" SignalStrength: ").append(mSignalStrength);
}
String upBand = ((mLinkUpBandwidthKbps > 0) ? " LinkUpBandwidth>=" +
mLinkUpBandwidthKbps + "Kbps" : "");
String dnBand = ((mLinkDownBandwidthKbps > 0) ? " LinkDnBandwidth>=" +
mLinkDownBandwidthKbps + "Kbps" : "");
if (null != mUids) {
if ((1 == mUids.size()) && (mUids.valueAt(0).count() == 1)) {
sb.append(" Uid: ").append(mUids.valueAt(0).start);
} else {
sb.append(" Uids: <").append(mUids).append(">");
}
}
if (mEstablishingVpnAppUid != INVALID_UID) {
sb.append(" EstablishingAppUid: ").append(mEstablishingVpnAppUid);
}
String specifier = (mNetworkSpecifier == null ?
"" : " Specifier: <" + mNetworkSpecifier + ">");
sb.append("]");
return sb.toString();
}
String signalStrength = (hasSignalStrength() ? " SignalStrength: " + mSignalStrength : "");
String uids = (null != mUids ? " Uids: <" + mUids + ">" : "");
String establishingAppUid = " EstablishingAppUid: " + mEstablishingVpnAppUid;
return "[" + transports + capabilities + upBand + dnBand + specifier + signalStrength
+ uids + establishingAppUid + "]";
private interface NameOf {
String nameOf(int value);
}
/**
* @hide
*/
public static void appendStringRepresentationOfBitMaskToStringBuilder(StringBuilder sb,
long bitMask, NameOf nameFetcher, String separator) {
int bitPos = 0;
boolean firstElementAdded = false;
while (bitMask != 0) {
if ((bitMask & 1) != 0) {
if (firstElementAdded) {
sb.append(separator);
} else {
firstElementAdded = true;
}
sb.append(nameFetcher.nameOf(bitPos));
}
bitMask >>= 1;
++bitPos;
}
}
/**

View File

@@ -21,8 +21,6 @@ import static android.os.UserHandle.PER_USER_RANGE;
import android.os.Parcel;
import android.os.Parcelable;
import java.lang.IllegalArgumentException;
/**
* An inclusive range of UIDs.
*
@@ -52,6 +50,13 @@ public final class UidRange implements Parcelable {
return start <= uid && uid <= stop;
}
/**
* Returns the count of UIDs in this range.
*/
public int count() {
return 1 + stop - start;
}
/**
* @return {@code true} if this range contains every UID contained by the {@param other} range.
*/