Merge "Remove NetworkStats hidden API dependencies from StatsPullAtomService" am: 3f9910630b am: 9570d3f1fa am: 16856ba3fd am: c39849d986

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

Change-Id: Ic45e6b3a5697ce9d31ccc477805e980c6ab795cb
This commit is contained in:
Aaron Huang
2022-01-27 09:29:11 +00:00
committed by Automerger Merge Worker

View File

@@ -1190,13 +1190,14 @@ public class StatsPullAtomService extends SystemService {
Slog.e(TAG, "baseline is null for " + atomTag + ", return.");
return StatsManager.PULL_SKIP;
}
final NetworkStatsExt diff = new NetworkStatsExt(
item.stats.subtract(baseline.stats).removeEmptyEntries(), item.transports,
removeEmptyEntries(item.stats.subtract(baseline.stats)), item.transports,
item.slicedByFgbg, item.slicedByTag, item.slicedByMetered, item.ratType,
item.subInfo, item.oemManaged);
// If no diff, skip.
if (diff.stats.size() == 0) continue;
if (!diff.stats.iterator().hasNext()) continue;
switch (atomTag) {
case FrameworkStatsLog.BYTES_TRANSFER_BY_TAG_AND_METERED:
@@ -1215,6 +1216,17 @@ public class StatsPullAtomService extends SystemService {
return StatsManager.PULL_SUCCESS;
}
@NonNull private static NetworkStats removeEmptyEntries(NetworkStats stats) {
NetworkStats ret = new NetworkStats(0, 1);
for (NetworkStats.Entry e : stats) {
if (e.getRxBytes() != 0 || e.getRxPackets() != 0 || e.getTxBytes() != 0
|| e.getTxPackets() != 0 || e.getOperations() != 0) {
ret = ret.addEntry(e);
}
}
return ret;
}
private void addNetworkStats(int atomTag, @NonNull List<StatsEvent> ret,
@NonNull NetworkStatsExt statsExt) {
for (NetworkStats.Entry entry : statsExt.stats) {
@@ -1472,12 +1484,8 @@ public class StatsPullAtomService extends SystemService {
@NonNull private NetworkStats sliceNetworkStats(@NonNull NetworkStats stats,
@NonNull Function<NetworkStats.Entry, NetworkStats.Entry> slicer) {
NetworkStats ret = new NetworkStats(0, 1);
NetworkStats.Entry entry = new NetworkStats.Entry();
for (NetworkStats.Entry e : stats) {
if (slicer != null) {
entry = slicer.apply(e);
}
ret = ret.addEntry(entry);
ret = ret.addEntry(slicer.apply(e));
}
return ret;
}