From 60586e649344dbf649238afa346086b5822096df Mon Sep 17 00:00:00 2001 From: Aaron Huang Date: Wed, 26 Jan 2022 20:32:55 +0800 Subject: [PATCH] Remove NetworkStats hidden API dependencies from StatsPullAtomService This patch removes the following dependencies, - Reimplement removeEmptyEntries. - Remove NetworkStats.Entry() constructor. - Remove size() and use hasNext() to check if the stats contains any entry. Bug: 210073043 Test: BytesTransferredTest Change-Id: Ib2a4b38e4412cbeb6b18e5ed50bc6a7c1ca79b00 --- .../stats/pull/StatsPullAtomService.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java index 758877b3f2660..907e23f28e2d8 100644 --- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java @@ -1168,13 +1168,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: @@ -1193,6 +1194,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 ret, @NonNull NetworkStatsExt statsExt) { for (NetworkStats.Entry entry : statsExt.stats) { @@ -1444,12 +1456,8 @@ public class StatsPullAtomService extends SystemService { @NonNull private NetworkStats sliceNetworkStats(@NonNull NetworkStats stats, @NonNull Function 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; }