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

Commit ee0b689e authored by Junyu Lai's avatar Junyu Lai Committed by Gerrit Code Review
Browse files

Merge "[MS44.1] Add API to query tagged UID summary"

parents aa2823a4 012a4bad
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -544,6 +544,15 @@ public final class NetworkStats implements AutoCloseable {
        mEnumerationIndex = 0;
    }

    /**
     * Collects tagged summary results and sets summary enumeration mode.
     * @throws RemoteException
     */
    void startTaggedSummaryEnumeration() throws RemoteException {
        mSummary = mSession.getTaggedSummaryForAllUid(mTemplate, mStartTimeStamp, mEndTimeStamp);
        mEnumerationIndex = 0;
    }

    /**
     * Collects history results for uid and resets history enumeration index.
     */
+34 −1
Original line number Diff line number Diff line
@@ -369,7 +369,7 @@ public class NetworkStatsManager {
     * @return Statistics which is described above.
     * @hide
     */
    @Nullable
    @NonNull
    // @SystemApi(client = MODULE_LIBRARIES)
    @WorkerThread
    public NetworkStats querySummary(@NonNull NetworkTemplate template, long startTime,
@@ -385,6 +385,39 @@ public class NetworkStatsManager {
        return null; // To make the compiler happy.
    }

    /**
     * Query tagged network usage statistics summaries.
     *
     * The results will only include tagged traffic made by UIDs belonging to the calling user
     * profile. The results are aggregated over time, so that all buckets will have the same
     * start and end timestamps as the passed arguments. Not aggregated over state, uid,
     * default network, metered, or roaming.
     * This may take a long time, and apps should avoid calling this on their main thread.
     *
     * @param template Template used to match networks. See {@link NetworkTemplate}.
     * @param startTime Start of period, in milliseconds since the Unix epoch, see
     *            {@link System#currentTimeMillis}.
     * @param endTime End of period, in milliseconds since the Unix epoch, see
     *            {@link System#currentTimeMillis}.
     * @return Statistics which is described above.
     * @hide
     */
    @NonNull
    // @SystemApi(client = MODULE_LIBRARIES)
    @WorkerThread
    public NetworkStats queryTaggedSummary(@NonNull NetworkTemplate template, long startTime,
            long endTime) throws SecurityException {
        try {
            NetworkStats result =
                    new NetworkStats(mContext, template, mFlags, startTime, endTime, mService);
            result.startTaggedSummaryEnumeration();
            return result;
        } catch (RemoteException e) {
            e.rethrowFromSystemServer();
        }
        return null; // To make the compiler happy.
    }

    /**
     * Query network usage statistics details for a given uid.
     * This may take a long time, and apps should avoid calling this on their main thread.
+4 −0
Original line number Diff line number Diff line
@@ -46,6 +46,10 @@ interface INetworkStatsSession {
     */
    @UnsupportedAppUsage
    NetworkStats getSummaryForAllUid(in NetworkTemplate template, long start, long end, boolean includeTags);

    /** Return network layer usage summary per UID for tagged traffic that matches template. */
    NetworkStats getTaggedSummaryForAllUid(in NetworkTemplate template, long start, long end);

    /** Return historical network layer stats for specific UID traffic that matches template. */
    @UnsupportedAppUsage
    NetworkStatsHistory getHistoryForUid(in NetworkTemplate template, int uid, int set, int tag, int fields);
+12 −2
Original line number Diff line number Diff line
@@ -789,8 +789,18 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
                    }
                    return stats;
                } catch (NullPointerException e) {
                    // TODO: Track down and fix the cause of this crash and remove this catch block.
                    Log.wtf(TAG, "NullPointerException in getSummaryForAllUid", e);
                    throw e;
                }
            }

            @Override
            public NetworkStats getTaggedSummaryForAllUid(
                    NetworkTemplate template, long start, long end) {
                try {
                    final NetworkStats tagStats = getUidTagComplete()
                            .getSummary(template, start, end, mAccessLevel, mCallingUid);
                    return tagStats;
                } catch (NullPointerException e) {
                    throw e;
                }
            }