Merge "Fix up NetworkCapabilities' toString"

This commit is contained in:
Chalard Jean
2018-03-01 04:01:16 +00:00
committed by Gerrit Code Review
2 changed files with 64 additions and 25 deletions

View File

@@ -1228,34 +1228,68 @@ public final class NetworkCapabilities implements Parcelable {
@Override @Override
public String toString() { public String toString() {
// TODO: enumerate bits for transports and capabilities instead of creating arrays. final StringBuilder sb = new StringBuilder("[");
// TODO: use a StringBuilder instead of string concatenation. if (0 != mTransportTypes) {
int[] types = getTransportTypes(); sb.append(" Transports: ");
String transports = (types.length > 0) ? " Transports: " + transportNamesOf(types) : ""; appendStringRepresentationOfBitMaskToStringBuilder(sb, mTransportTypes,
NetworkCapabilities::transportNameOf, "|");
types = getCapabilities(); }
String capabilities = (types.length > 0 ? " Capabilities: " : ""); if (0 != mNetworkCapabilities) {
for (int i = 0; i < types.length; ) { sb.append(" Capabilities: ");
capabilities += capabilityNameOf(types[i]); appendStringRepresentationOfBitMaskToStringBuilder(sb, mNetworkCapabilities,
if (++i < types.length) capabilities += "&"; 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>=" + if (null != mUids) {
mLinkUpBandwidthKbps + "Kbps" : ""); if ((1 == mUids.size()) && (mUids.valueAt(0).count() == 1)) {
String dnBand = ((mLinkDownBandwidthKbps > 0) ? " LinkDnBandwidth>=" + sb.append(" Uid: ").append(mUids.valueAt(0).start);
mLinkDownBandwidthKbps + "Kbps" : ""); } else {
sb.append(" Uids: <").append(mUids).append(">");
}
}
if (mEstablishingVpnAppUid != INVALID_UID) {
sb.append(" EstablishingAppUid: ").append(mEstablishingVpnAppUid);
}
String specifier = (mNetworkSpecifier == null ? sb.append("]");
"" : " Specifier: <" + mNetworkSpecifier + ">"); return sb.toString();
}
String signalStrength = (hasSignalStrength() ? " SignalStrength: " + mSignalStrength : "");
String uids = (null != mUids ? " Uids: <" + mUids + ">" : ""); private interface NameOf {
String nameOf(int value);
String establishingAppUid = " EstablishingAppUid: " + mEstablishingVpnAppUid; }
/**
return "[" + transports + capabilities + upBand + dnBand + specifier + signalStrength * @hide
+ uids + establishingAppUid + "]"; */
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.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import java.lang.IllegalArgumentException;
/** /**
* An inclusive range of UIDs. * An inclusive range of UIDs.
* *
@@ -52,6 +50,13 @@ public final class UidRange implements Parcelable {
return start <= uid && uid <= stop; 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. * @return {@code true} if this range contains every UID contained by the {@param other} range.
*/ */