Merge "[MS44.1] Add API to query tagged UID summary" am: 0a0c20df11 am: 193c85f48a am: 32cfcbb0c0 am: d66d62778a

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1940814

Change-Id: I2c9ea81afa538ce704a0904c28c70ab9c98d0fa7
This commit is contained in:
Junyu Lai
2022-01-13 12:06:39 +00:00
committed by Automerger Merge Worker
4 changed files with 59 additions and 3 deletions

View File

@@ -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.
*/

View File

@@ -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.

View File

@@ -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);