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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user