Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55a3a233 authored by Zoltan Szatmary-Ban's avatar Zoltan Szatmary-Ban Committed by Android Git Automerger
Browse files

am 5bc85aa8: am d426cf73: am 30871415: am 89592760: Merge "Expose...

am 5bc85aa8: am d426cf73: am 30871415: am 89592760: Merge "Expose time-interval detail query on INetworkStatsSession" into mnc-dev

* commit '5bc85aa8':
  Expose time-interval detail query on INetworkStatsSession
parents 1d34b1ec 5bc85aa8
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -309,12 +309,10 @@ public final class NetworkStats implements AutoCloseable {

    /**
     * Collects device summary results into a Bucket.
     * @param startTime
     * @param endTime
     * @throws RemoteException
     */
    Bucket getDeviceSummaryForNetwork(long startTime, long endTime) throws RemoteException {
        mSummary = mSession.getDeviceSummaryForNetwork(mTemplate, startTime, endTime);
    Bucket getDeviceSummaryForNetwork() throws RemoteException {
        mSummary = mSession.getDeviceSummaryForNetwork(mTemplate, mStartTimeStamp, mEndTimeStamp);

        // Setting enumeration index beyond end to avoid accidental enumeration over data that does
        // not belong to the calling user.
@@ -325,12 +323,10 @@ public final class NetworkStats implements AutoCloseable {

    /**
     * Collects summary results and sets summary enumeration mode.
     * @param startTime
     * @param endTime
     * @throws RemoteException
     */
    void startSummaryEnumeration(long startTime, long endTime) throws RemoteException {
        mSummary = mSession.getSummaryForAllUid(mTemplate, startTime, endTime, false);
    void startSummaryEnumeration() throws RemoteException {
        mSummary = mSession.getSummaryForAllUid(mTemplate, mStartTimeStamp, mEndTimeStamp, false);

        mEnumerationIndex = 0;
    }
@@ -341,8 +337,9 @@ public final class NetworkStats implements AutoCloseable {
    void startHistoryEnumeration(int uid) {
        mHistory = null;
        try {
            mHistory = mSession.getHistoryForUid(mTemplate, uid, android.net.NetworkStats.SET_ALL,
                    android.net.NetworkStats.TAG_NONE, NetworkStatsHistory.FIELD_ALL);
            mHistory = mSession.getHistoryIntervalForUid(mTemplate, uid,
                    android.net.NetworkStats.SET_ALL, android.net.NetworkStats.TAG_NONE,
                    NetworkStatsHistory.FIELD_ALL, mStartTimeStamp, mEndTimeStamp);
            setSingleUid(uid);
        } catch (RemoteException e) {
            Log.w(TAG, e);
@@ -368,9 +365,9 @@ public final class NetworkStats implements AutoCloseable {
            stepUid();
            mHistory = null;
            try {
                mHistory = mSession.getHistoryForUid(mTemplate, getUid(),
                mHistory = mSession.getHistoryIntervalForUid(mTemplate, getUid(),
                        android.net.NetworkStats.SET_ALL, android.net.NetworkStats.TAG_NONE,
                        NetworkStatsHistory.FIELD_ALL);
                        NetworkStatsHistory.FIELD_ALL, mStartTimeStamp, mEndTimeStamp);
            } catch (RemoteException e) {
                Log.w(TAG, e);
                // Leaving mHistory null
+11 −5
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ public class NetworkStatsManager {

        Bucket bucket = null;
        NetworkStats stats = new NetworkStats(mContext, template, startTime, endTime);
        bucket = stats.getDeviceSummaryForNetwork(startTime, endTime);
        bucket = stats.getDeviceSummaryForNetwork();

        stats.close();
        return bucket;
@@ -130,7 +130,7 @@ public class NetworkStatsManager {

        NetworkStats stats;
        stats = new NetworkStats(mContext, template, startTime, endTime);
        stats.startSummaryEnumeration(startTime, endTime);
        stats.startSummaryEnumeration();

        stats.close();
        return stats.getSummaryAggregate();
@@ -163,7 +163,7 @@ public class NetworkStatsManager {

        NetworkStats result;
        result = new NetworkStats(mContext, template, startTime, endTime);
        result.startSummaryEnumeration(startTime, endTime);
        result.startSummaryEnumeration();

        return result;
    }
@@ -173,6 +173,9 @@ public class NetworkStatsManager {
     * Result is aggregated over state but not aggregated over time. This means buckets' start and
     * end timestamps are going to be between 'startTime' and 'endTime' parameters, state is going
     * to be {@link NetworkStats.Bucket#STATE_ALL} and uid the same as the 'uid' parameter.
     * <p>Only includes buckets that atomically occur in the inclusive time range. Doesn't
     * interpolate across partial buckets. Since bucket length is in the order of hours, this
     * method cannot be used to measure data usage on a fine grained time scale.
     *
     * @param networkType As defined in {@link ConnectivityManager}, e.g.
     *            {@link ConnectivityManager#TYPE_MOBILE}, {@link ConnectivityManager#TYPE_WIFI}
@@ -205,6 +208,9 @@ public class NetworkStatsManager {
     * calling user. Result is aggregated over state but not aggregated over time or uid. This means
     * buckets' start and end timestamps are going to be between 'startTime' and 'endTime'
     * parameters, state is going to be {@link NetworkStats.Bucket#STATE_ALL} and uid will vary.
     * <p>Only includes buckets that atomically occur in the inclusive time range. Doesn't
     * interpolate across partial buckets. Since bucket length is in the order of hours, this
     * method cannot be used to measure data usage on a fine grained time scale.
     *
     * @param networkType As defined in {@link ConnectivityManager}, e.g.
     *            {@link ConnectivityManager#TYPE_MOBILE}, {@link ConnectivityManager#TYPE_WIFI}
+2 −0
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@ interface INetworkStatsSession {
    NetworkStats getSummaryForAllUid(in NetworkTemplate template, long start, long end, boolean includeTags);
    /** Return historical network layer stats for specific UID traffic that matches template. */
    NetworkStatsHistory getHistoryForUid(in NetworkTemplate template, int uid, int set, int tag, int fields);
    /** Return historical network layer stats for specific UID traffic that matches template. */
    NetworkStatsHistory getHistoryIntervalForUid(in NetworkTemplate template, int uid, int set, int tag, int fields, long start, long end);

    /** Return array of uids that have stats and are accessible to the calling user */
    int[] getRelevantUids();
+27 −1
Original line number Diff line number Diff line
@@ -436,13 +436,26 @@ public class NetworkStatsService extends INetworkStatsService.Stub {

    @Override
    public INetworkStatsSession openSession() {
        return openSessionForUsageStats(null);
        return createSession(null, /* poll on create */ false);
    }

    @Override
    public INetworkStatsSession openSessionForUsageStats(final String callingPackage) {
        return createSession(callingPackage, /* poll on create */ true);
    }

    private INetworkStatsSession createSession(final String callingPackage, boolean pollOnCreate) {
        assertBandwidthControlEnabled();

        if (pollOnCreate) {
            final long ident = Binder.clearCallingIdentity();
            try {
                performPoll(FLAG_PERSIST_ALL);
            } finally {
                Binder.restoreCallingIdentity(ident);
            }
        }

        // return an IBinder which holds strong references to any loaded stats
        // for its lifetime; when caller closes only weak references remain.

@@ -525,6 +538,19 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
                }
            }

            @Override
            public NetworkStatsHistory getHistoryIntervalForUid(
                    NetworkTemplate template, int uid, int set, int tag, int fields,
                    long start, long end) {
                enforcePermissionForManagedAdmin(mCallingPackage);
                if (tag == TAG_NONE) {
                    return getUidComplete().getHistory(template, uid, set, tag, fields, start, end);
                } else {
                    return getUidTagComplete().getHistory(template, uid, set, tag, fields,
                            start, end);
                }
            }

            @Override
            public void close() {
                mUidComplete = null;