NetworkStats.Bucket API polish.

-Add @IntDef constants for STATE_ and ROAMING_.
-Expand docs for ROAMING_ constants.
-Use ROAMING_NO/YES instead of ROAMING_DEFAULT/ROAMING.

Bug: 27531260
Change-Id: I54ecfb4148caa549214df0bee9983036ffa4cb55
This commit is contained in:
Jeff Davidson
2016-03-10 13:21:38 -08:00
parent 27c8a07be6
commit 082ceb1679
3 changed files with 49 additions and 26 deletions

View File

@@ -16,6 +16,7 @@
package android.app.usage; package android.app.usage;
import android.annotation.IntDef;
import android.content.Context; import android.content.Context;
import android.net.INetworkStatsService; import android.net.INetworkStatsService;
import android.net.INetworkStatsSession; import android.net.INetworkStatsSession;
@@ -29,6 +30,9 @@ import android.util.Log;
import dalvik.system.CloseGuard; import dalvik.system.CloseGuard;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/** /**
* Class providing enumeration over buckets of network usage statistics. {@link NetworkStats} objects * Class providing enumeration over buckets of network usage statistics. {@link NetworkStats} objects
* are returned as results to various queries in {@link NetworkStatsManager}. * are returned as results to various queries in {@link NetworkStatsManager}.
@@ -119,6 +123,11 @@ public final class NetworkStats implements AutoCloseable {
* aggregated (e.g. time or state) some values may be equal across all buckets. * aggregated (e.g. time or state) some values may be equal across all buckets.
*/ */
public static class Bucket { public static class Bucket {
/** @hide */
@IntDef({STATE_ALL, STATE_DEFAULT, STATE_FOREGROUND})
@Retention(RetentionPolicy.SOURCE)
public @interface State {}
/** /**
* Combined usage across all states. * Combined usage across all states.
*/ */
@@ -149,20 +158,34 @@ public final class NetworkStats implements AutoCloseable {
*/ */
public static final int UID_TETHERING = TrafficStats.UID_TETHERING; public static final int UID_TETHERING = TrafficStats.UID_TETHERING;
/** @hide */
@IntDef({ROAMING_ALL, ROAMING_NO, ROAMING_YES})
@Retention(RetentionPolicy.SOURCE)
public @interface Roaming {}
/** /**
* Combined usage across all roaming states. * Combined usage across all roaming states. Covers both roaming and non-roaming usage.
*/ */
public static final int ROAMING_ALL = -1; public static final int ROAMING_ALL = -1;
/** /**
* Usage not accounted for in any other roaming state. * Usage that occurs on a home, non-roaming network.
*
* <p>Any cellular usage in this bucket was incurred while the device was connected to a
* tower owned or operated by the user's wireless carrier, or a tower that the user's
* wireless carrier has indicated should be treated as a home network regardless.
*
* <p>This is also the default value for network types that do not support roaming.
*/ */
public static final int ROAMING_DEFAULT = 0x1; public static final int ROAMING_NO = 0x1;
/** /**
* Roaming usage. * Usage that occurs on a roaming network.
*
* <p>Any cellular usage in this bucket as incurred while the device was roaming on another
* carrier's network, for which additional charges may apply.
*/ */
public static final int ROAMING_ROAMING = 0x2; public static final int ROAMING_YES = 0x2;
/** /**
* Special TAG value matching any tag. * Special TAG value matching any tag.
@@ -185,7 +208,7 @@ public final class NetworkStats implements AutoCloseable {
private long mTxBytes; private long mTxBytes;
private long mTxPackets; private long mTxPackets;
private static int convertState(int networkStatsSet) { private static @State int convertState(int networkStatsSet) {
switch (networkStatsSet) { switch (networkStatsSet) {
case android.net.NetworkStats.SET_ALL : return STATE_ALL; case android.net.NetworkStats.SET_ALL : return STATE_ALL;
case android.net.NetworkStats.SET_DEFAULT : return STATE_DEFAULT; case android.net.NetworkStats.SET_DEFAULT : return STATE_DEFAULT;
@@ -210,11 +233,11 @@ public final class NetworkStats implements AutoCloseable {
return tag; return tag;
} }
private static int convertRoaming(int roaming) { private static @Roaming int convertRoaming(int roaming) {
switch (roaming) { switch (roaming) {
case android.net.NetworkStats.ROAMING_ALL : return ROAMING_ALL; case android.net.NetworkStats.ROAMING_ALL : return ROAMING_ALL;
case android.net.NetworkStats.ROAMING_DEFAULT : return ROAMING_DEFAULT; case android.net.NetworkStats.ROAMING_NO: return ROAMING_NO;
case android.net.NetworkStats.ROAMING_ROAMING : return ROAMING_ROAMING; case android.net.NetworkStats.ROAMING_YES: return ROAMING_YES;
} }
return 0; return 0;
} }
@@ -252,7 +275,7 @@ public final class NetworkStats implements AutoCloseable {
* </ul> * </ul>
* @return Usage state. * @return Usage state.
*/ */
public int getState() { public @State int getState() {
return mState; return mState;
} }
@@ -260,11 +283,11 @@ public final class NetworkStats implements AutoCloseable {
* Roaming state. One of the following values:<p/> * Roaming state. One of the following values:<p/>
* <ul> * <ul>
* <li>{@link #ROAMING_ALL}</li> * <li>{@link #ROAMING_ALL}</li>
* <li>{@link #ROAMING_DEFAULT}</li> * <li>{@link #ROAMING_NO}</li>
* <li>{@link #ROAMING_ROAMING}</li> * <li>{@link #ROAMING_YES}</li>
* </ul> * </ul>
*/ */
public int getRoaming() { public @Roaming int getRoaming() {
return mRoaming; return mRoaming;
} }

View File

@@ -71,9 +71,9 @@ public class NetworkStats implements Parcelable {
/** {@link #set} value for all roaming values. */ /** {@link #set} value for all roaming values. */
public static final int ROAMING_ALL = -1; public static final int ROAMING_ALL = -1;
/** {@link #set} value where native, non-roaming data is accounted. */ /** {@link #set} value where native, non-roaming data is accounted. */
public static final int ROAMING_DEFAULT = 0; public static final int ROAMING_NO = 0;
/** {@link #set} value where roaming data is accounted. */ /** {@link #set} value where roaming data is accounted. */
public static final int ROAMING_ROAMING = 1; public static final int ROAMING_YES = 1;
// TODO: move fields to "mVariable" notation // TODO: move fields to "mVariable" notation
@@ -123,7 +123,7 @@ public class NetworkStats implements Parcelable {
public Entry(String iface, int uid, int set, int tag, long rxBytes, long rxPackets, public Entry(String iface, int uid, int set, int tag, long rxBytes, long rxPackets,
long txBytes, long txPackets, long operations) { long txBytes, long txPackets, long operations) {
this(iface, uid, set, tag, ROAMING_DEFAULT, rxBytes, rxPackets, txBytes, txPackets, this(iface, uid, set, tag, ROAMING_NO, rxBytes, rxPackets, txBytes, txPackets,
operations); operations);
} }
@@ -836,10 +836,10 @@ public class NetworkStats implements Parcelable {
switch (roaming) { switch (roaming) {
case ROAMING_ALL: case ROAMING_ALL:
return "ALL"; return "ALL";
case ROAMING_DEFAULT: case ROAMING_NO:
return "DEFAULT"; return "NO";
case ROAMING_ROAMING: case ROAMING_YES:
return "ROAMING"; return "YES";
default: default:
return "UNKNOWN"; return "UNKNOWN";
} }
@@ -1019,18 +1019,18 @@ public class NetworkStats implements Parcelable {
// Caveat: if the vpn software uses tag, the total tagged traffic may be greater than // Caveat: if the vpn software uses tag, the total tagged traffic may be greater than
// the TAG_NONE traffic. // the TAG_NONE traffic.
// //
// Relies on the fact that the underlying traffic only has state ROAMING_DEFAULT, which // Relies on the fact that the underlying traffic only has state ROAMING_NO, which
// should be the case as it comes directly from the /proc file. We only blend in the // should be the case as it comes directly from the /proc file. We only blend in the
// roaming data after applying these adjustments, by checking the NetworkIdentity of the // roaming data after applying these adjustments, by checking the NetworkIdentity of the
// underlying iface. // underlying iface.
int idxVpnBackground = findIndex(underlyingIface, tunUid, SET_DEFAULT, TAG_NONE, int idxVpnBackground = findIndex(underlyingIface, tunUid, SET_DEFAULT, TAG_NONE,
ROAMING_DEFAULT); ROAMING_NO);
if (idxVpnBackground != -1) { if (idxVpnBackground != -1) {
tunSubtract(idxVpnBackground, this, moved); tunSubtract(idxVpnBackground, this, moved);
} }
int idxVpnForeground = findIndex(underlyingIface, tunUid, SET_FOREGROUND, TAG_NONE, int idxVpnForeground = findIndex(underlyingIface, tunUid, SET_FOREGROUND, TAG_NONE,
ROAMING_DEFAULT); ROAMING_NO);
if (idxVpnForeground != -1) { if (idxVpnForeground != -1) {
tunSubtract(idxVpnForeground, this, moved); tunSubtract(idxVpnForeground, this, moved);
} }

View File

@@ -17,8 +17,8 @@
package com.android.server.net; package com.android.server.net;
import static android.net.NetworkStats.IFACE_ALL; import static android.net.NetworkStats.IFACE_ALL;
import static android.net.NetworkStats.ROAMING_DEFAULT; import static android.net.NetworkStats.ROAMING_NO;
import static android.net.NetworkStats.ROAMING_ROAMING; import static android.net.NetworkStats.ROAMING_YES;
import static android.net.NetworkStats.SET_ALL; import static android.net.NetworkStats.SET_ALL;
import static android.net.NetworkStats.SET_DEFAULT; import static android.net.NetworkStats.SET_DEFAULT;
import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.TAG_NONE;
@@ -242,7 +242,7 @@ public class NetworkStatsCollection implements FileRotator.Reader {
entry.uid = key.uid; entry.uid = key.uid;
entry.set = key.set; entry.set = key.set;
entry.tag = key.tag; entry.tag = key.tag;
entry.roaming = key.ident.isAnyMemberRoaming() ? ROAMING_ROAMING : ROAMING_DEFAULT; entry.roaming = key.ident.isAnyMemberRoaming() ? ROAMING_YES : ROAMING_NO;
entry.rxBytes = historyEntry.rxBytes; entry.rxBytes = historyEntry.rxBytes;
entry.rxPackets = historyEntry.rxPackets; entry.rxPackets = historyEntry.rxPackets;
entry.txBytes = historyEntry.txBytes; entry.txBytes = historyEntry.txBytes;