Merge "IpConn metrics: use @IntDef" into nyc-mr1-dev
diff --git a/core/java/android/net/metrics/ApfProgramEvent.java b/core/java/android/net/metrics/ApfProgramEvent.java
index 3cd058c..e322dc1 100644
--- a/core/java/android/net/metrics/ApfProgramEvent.java
+++ b/core/java/android/net/metrics/ApfProgramEvent.java
@@ -16,16 +16,21 @@
package android.net.metrics;
+import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
+import android.text.TextUtils;
import android.util.SparseArray;
-import java.util.Arrays;
-import java.util.stream.Collectors;
-
import com.android.internal.util.MessageUtils;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.List;
+
/**
* An event logged when there is a change or event that requires updating the
* the APF program in place with a new APF program.
@@ -36,10 +41,14 @@
// Bitflag constants describing what an Apf program filters.
// Bits are indexeds from LSB to MSB, starting at index 0.
- // TODO: use @IntDef
public static final int FLAG_MULTICAST_FILTER_ON = 0;
public static final int FLAG_HAS_IPV4_ADDRESS = 1;
+ /** {@hide} */
+ @IntDef(flag = true, value = {FLAG_MULTICAST_FILTER_ON, FLAG_HAS_IPV4_ADDRESS})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface Flags {}
+
public final long lifetime; // Lifetime of the program in seconds
public final int filteredRas; // Number of RAs filtered by the APF program
public final int currentRas; // Total number of current RAs at generation time
@@ -48,7 +57,7 @@
/** {@hide} */
public ApfProgramEvent(
- long lifetime, int filteredRas, int currentRas, int programLength, int flags) {
+ long lifetime, int filteredRas, int currentRas, int programLength, @Flags int flags) {
this.lifetime = lifetime;
this.filteredRas = filteredRas;
this.currentRas = currentRas;
@@ -97,7 +106,7 @@
};
/** {@hide} */
- public static int flagsFor(boolean hasIPv4, boolean multicastFilterOn) {
+ public static @Flags int flagsFor(boolean hasIPv4, boolean multicastFilterOn) {
int bitfield = 0;
if (hasIPv4) {
bitfield |= (1 << FLAG_HAS_IPV4_ADDRESS);
@@ -108,25 +117,14 @@
return bitfield;
}
- // TODO: consider using java.util.BitSet
- private static int[] bitflagsOf(int bitfield) {
- int[] flags = new int[Integer.bitCount(bitfield)];
- int i = 0;
- int bitflag = 0;
- while (bitfield != 0) {
- if ((bitfield & 1) != 0) {
- flags[i++] = bitflag;
- }
- bitflag++;
- bitfield = bitfield >>> 1;
+ private static String namesOf(@Flags int bitfield) {
+ List<String> names = new ArrayList<>(Integer.bitCount(bitfield));
+ BitSet set = BitSet.valueOf(new long[]{bitfield & Integer.MAX_VALUE});
+ // Only iterate over flag bits which are set.
+ for (int bit = set.nextSetBit(0); bit >= 0; bit = set.nextSetBit(bit+1)) {
+ names.add(Decoder.constants.get(bit));
}
- return flags;
- }
-
- private static String namesOf(int bitfields) {
- return Arrays.stream(bitflagsOf(bitfields))
- .mapToObj(i -> Decoder.constants.get(i))
- .collect(Collectors.joining(", "));
+ return TextUtils.join(", ", names);
}
final static class Decoder {
diff --git a/core/java/android/net/metrics/DefaultNetworkEvent.java b/core/java/android/net/metrics/DefaultNetworkEvent.java
index b881fbb..9f0bad7 100644
--- a/core/java/android/net/metrics/DefaultNetworkEvent.java
+++ b/core/java/android/net/metrics/DefaultNetworkEvent.java
@@ -22,6 +22,7 @@
import android.os.Parcelable;
/**
+ * An event recorded by ConnectivityService when there is a change in the default network.
* {@hide}
*/
@SystemApi
@@ -55,6 +56,7 @@
this.prevIPv6 = (in.readByte() > 0);
}
+ @Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(netId);
out.writeIntArray(transportTypes);
@@ -63,6 +65,7 @@
out.writeByte(prevIPv6 ? (byte) 1 : (byte) 0);
}
+ @Override
public int describeContents() {
return 0;
}
diff --git a/core/java/android/net/metrics/DhcpErrorEvent.java b/core/java/android/net/metrics/DhcpErrorEvent.java
index 4206886..59c5fb6 100644
--- a/core/java/android/net/metrics/DhcpErrorEvent.java
+++ b/core/java/android/net/metrics/DhcpErrorEvent.java
@@ -24,7 +24,8 @@
import com.android.internal.util.MessageUtils;
/**
- * {@hide} Event class used to record error events when parsing DHCP response packets.
+ * Event class used to record error events when parsing DHCP response packets.
+ * {@hide}
*/
@SystemApi
public final class DhcpErrorEvent implements Parcelable {
@@ -72,11 +73,13 @@
this.errorCode = in.readInt();
}
+ @Override
public void writeToParcel(Parcel out, int flags) {
out.writeString(ifName);
out.writeInt(errorCode);
}
+ @Override
public int describeContents() {
return 0;
}
diff --git a/core/java/android/net/metrics/DnsEvent.java b/core/java/android/net/metrics/DnsEvent.java
index 9eb8bdb..4fc6b7a 100644
--- a/core/java/android/net/metrics/DnsEvent.java
+++ b/core/java/android/net/metrics/DnsEvent.java
@@ -21,6 +21,7 @@
import android.os.Parcelable;
/**
+ * An event recorded by DnsEventListenerService.
* {@hide}
*/
@SystemApi
@@ -60,6 +61,7 @@
out.writeIntArray(latenciesMs);
}
+ @Override
public int describeContents() {
return 0;
}
diff --git a/core/java/android/net/metrics/IpManagerEvent.java b/core/java/android/net/metrics/IpManagerEvent.java
index 8949fae..a5b4eb5 100644
--- a/core/java/android/net/metrics/IpManagerEvent.java
+++ b/core/java/android/net/metrics/IpManagerEvent.java
@@ -16,6 +16,7 @@
package android.net.metrics;
+import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -23,23 +24,32 @@
import com.android.internal.util.MessageUtils;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
+ * An event recorded by IpManager when IP provisioning completes for a network or
+ * when a network disconnects.
* {@hide}
*/
@SystemApi
public final class IpManagerEvent implements Parcelable {
- // TODO: use @IntDef
public static final int PROVISIONING_OK = 1;
public static final int PROVISIONING_FAIL = 2;
public static final int COMPLETE_LIFECYCLE = 3;
+ /** {@hide} */
+ @IntDef(value = {PROVISIONING_OK, PROVISIONING_FAIL, COMPLETE_LIFECYCLE})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface EventType {}
+
public final String ifName;
- public final int eventType;
+ public final @EventType int eventType;
public final long durationMs;
/** {@hide} */
- public IpManagerEvent(String ifName, int eventType, long duration) {
+ public IpManagerEvent(String ifName, @EventType int eventType, long duration) {
this.ifName = ifName;
this.eventType = eventType;
this.durationMs = duration;
@@ -51,12 +61,14 @@
this.durationMs = in.readLong();
}
+ @Override
public void writeToParcel(Parcel out, int flags) {
out.writeString(ifName);
out.writeInt(eventType);
out.writeLong(durationMs);
}
+ @Override
public int describeContents() {
return 0;
}
diff --git a/core/java/android/net/metrics/NetworkEvent.java b/core/java/android/net/metrics/NetworkEvent.java
index cdfe386..3b3fa69 100644
--- a/core/java/android/net/metrics/NetworkEvent.java
+++ b/core/java/android/net/metrics/NetworkEvent.java
@@ -16,6 +16,7 @@
package android.net.metrics;
+import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -23,6 +24,9 @@
import com.android.internal.util.MessageUtils;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
* {@hide}
*/
@@ -37,19 +41,32 @@
public static final int NETWORK_UNLINGER = 6;
public static final int NETWORK_DISCONNECTED = 7;
+ /** {@hide} */
+ @IntDef(value = {
+ NETWORK_CONNECTED,
+ NETWORK_VALIDATED,
+ NETWORK_VALIDATION_FAILED,
+ NETWORK_CAPTIVE_PORTAL_FOUND,
+ NETWORK_LINGER,
+ NETWORK_UNLINGER,
+ NETWORK_DISCONNECTED,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface EventType {}
+
public final int netId;
- public final int eventType;
+ public final @EventType int eventType;
public final long durationMs;
/** {@hide} */
- public NetworkEvent(int netId, int eventType, long durationMs) {
+ public NetworkEvent(int netId, @EventType int eventType, long durationMs) {
this.netId = netId;
this.eventType = eventType;
this.durationMs = durationMs;
}
/** {@hide} */
- public NetworkEvent(int netId, int eventType) {
+ public NetworkEvent(int netId, @EventType int eventType) {
this(netId, eventType, 0);
}
@@ -59,12 +76,14 @@
durationMs = in.readLong();
}
+ @Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(netId);
out.writeInt(eventType);
out.writeLong(durationMs);
}
+ @Override
public int describeContents() {
return 0;
}
diff --git a/core/java/android/net/metrics/ValidationProbeEvent.java b/core/java/android/net/metrics/ValidationProbeEvent.java
index c2d259f..331cf0c 100644
--- a/core/java/android/net/metrics/ValidationProbeEvent.java
+++ b/core/java/android/net/metrics/ValidationProbeEvent.java
@@ -16,6 +16,7 @@
package android.net.metrics;
+import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -23,13 +24,16 @@
import com.android.internal.util.MessageUtils;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
+ * An event recorded by NetworkMonitor when sending a probe for finding captive portals.
* {@hide}
*/
@SystemApi
public final class ValidationProbeEvent implements Parcelable {
- // TODO: use @IntDef
public static final int PROBE_DNS = 0;
public static final int PROBE_HTTP = 1;
public static final int PROBE_HTTPS = 2;
@@ -38,13 +42,24 @@
public static final int DNS_FAILURE = 0;
public static final int DNS_SUCCESS = 1;
+ /** {@hide} */
+ @IntDef(value = {PROBE_DNS, PROBE_HTTP, PROBE_HTTPS, PROBE_PAC})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ProbeType {}
+
+ /** {@hide} */
+ @IntDef(value = {DNS_FAILURE, DNS_SUCCESS})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ReturnCode {}
+
public final int netId;
public final long durationMs;
- public final int probeType;
- public final int returnCode;
+ public final @ProbeType int probeType;
+ public final @ReturnCode int returnCode;
/** @hide */
- public ValidationProbeEvent(int netId, long durationMs, int probeType, int returnCode) {
+ public ValidationProbeEvent(
+ int netId, long durationMs, @ProbeType int probeType, @ReturnCode int returnCode) {
this.netId = netId;
this.durationMs = durationMs;
this.probeType = probeType;
@@ -58,6 +73,7 @@
returnCode = in.readInt();
}
+ @Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(netId);
out.writeLong(durationMs);
@@ -65,6 +81,7 @@
out.writeInt(returnCode);
}
+ @Override
public int describeContents() {
return 0;
}