Merge "Update nullability annotation for NetworkStats atom queries" into main
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 9662a87..e7735d8 100644
--- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
+++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
@@ -1275,49 +1275,39 @@
case FrameworkStatsLog.WIFI_BYTES_TRANSFER: {
final NetworkStats stats = getUidNetworkStatsSnapshotForTransportLocked(
TRANSPORT_WIFI);
- if (stats != null) {
- ret.add(new NetworkStatsExt(sliceNetworkStatsByUid(stats),
- new int[]{TRANSPORT_WIFI}, /*slicedByFgbg=*/false));
- }
+ ret.add(new NetworkStatsExt(sliceNetworkStatsByUid(stats),
+ new int[]{TRANSPORT_WIFI}, /*slicedByFgbg=*/false));
break;
}
case FrameworkStatsLog.WIFI_BYTES_TRANSFER_BY_FG_BG: {
final NetworkStats stats = getUidNetworkStatsSnapshotForTransportLocked(
TRANSPORT_WIFI);
- if (stats != null) {
- ret.add(new NetworkStatsExt(sliceNetworkStatsByUidAndFgbg(stats),
- new int[]{TRANSPORT_WIFI}, /*slicedByFgbg=*/true));
- }
+ ret.add(new NetworkStatsExt(sliceNetworkStatsByUidAndFgbg(stats),
+ new int[]{TRANSPORT_WIFI}, /*slicedByFgbg=*/true));
break;
}
case FrameworkStatsLog.MOBILE_BYTES_TRANSFER: {
final NetworkStats stats =
getUidNetworkStatsSnapshotForTransportLocked(TRANSPORT_CELLULAR);
- if (stats != null) {
- ret.add(new NetworkStatsExt(sliceNetworkStatsByUid(stats),
- new int[]{TRANSPORT_CELLULAR}, /*slicedByFgbg=*/false));
- }
+ ret.add(new NetworkStatsExt(sliceNetworkStatsByUid(stats),
+ new int[]{TRANSPORT_CELLULAR}, /*slicedByFgbg=*/false));
break;
}
case FrameworkStatsLog.MOBILE_BYTES_TRANSFER_BY_FG_BG: {
final NetworkStats stats =
getUidNetworkStatsSnapshotForTransportLocked(TRANSPORT_CELLULAR);
- if (stats != null) {
- ret.add(new NetworkStatsExt(sliceNetworkStatsByUidAndFgbg(stats),
- new int[]{TRANSPORT_CELLULAR}, /*slicedByFgbg=*/true));
- }
+ ret.add(new NetworkStatsExt(sliceNetworkStatsByUidAndFgbg(stats),
+ new int[]{TRANSPORT_CELLULAR}, /*slicedByFgbg=*/true));
break;
}
case FrameworkStatsLog.PROXY_BYTES_TRANSFER_BY_FG_BG: {
final NetworkStats stats = getUidNetworkStatsSnapshotForTemplateLocked(
new NetworkTemplate.Builder(MATCH_PROXY).build(), /*includeTags=*/false);
- if (stats != null) {
- ret.add(new NetworkStatsExt(sliceNetworkStatsByUidAndFgbg(stats),
- new int[]{TRANSPORT_BLUETOOTH},
- /*slicedByFgbg=*/true, /*slicedByTag=*/false,
- /*slicedByMetered=*/false, TelephonyManager.NETWORK_TYPE_UNKNOWN,
- /*subInfo=*/null, OEM_MANAGED_ALL, /*isTypeProxy=*/true));
- }
+ ret.add(new NetworkStatsExt(sliceNetworkStatsByUidAndFgbg(stats),
+ new int[]{TRANSPORT_BLUETOOTH},
+ /*slicedByFgbg=*/true, /*slicedByTag=*/false,
+ /*slicedByMetered=*/false, TelephonyManager.NETWORK_TYPE_UNKNOWN,
+ /*subInfo=*/null, OEM_MANAGED_ALL, /*isTypeProxy=*/true));
break;
}
case FrameworkStatsLog.BYTES_TRANSFER_BY_TAG_AND_METERED: {
@@ -1326,14 +1316,12 @@
final NetworkStats cellularStats = getUidNetworkStatsSnapshotForTemplateLocked(
new NetworkTemplate.Builder(MATCH_MOBILE)
.setMeteredness(METERED_YES).build(), /*includeTags=*/true);
- if (wifiStats != null && cellularStats != null) {
- final NetworkStats stats = wifiStats.add(cellularStats);
- ret.add(new NetworkStatsExt(sliceNetworkStatsByUidTagAndMetered(stats),
- new int[]{TRANSPORT_WIFI, TRANSPORT_CELLULAR},
- /*slicedByFgbg=*/false, /*slicedByTag=*/true,
- /*slicedByMetered=*/true, TelephonyManager.NETWORK_TYPE_UNKNOWN,
- /*subInfo=*/null, OEM_MANAGED_ALL, /*isTypeProxy=*/false));
- }
+ final NetworkStats stats = wifiStats.add(cellularStats);
+ ret.add(new NetworkStatsExt(sliceNetworkStatsByUidTagAndMetered(stats),
+ new int[]{TRANSPORT_WIFI, TRANSPORT_CELLULAR},
+ /*slicedByFgbg=*/false, /*slicedByTag=*/true,
+ /*slicedByMetered=*/true, TelephonyManager.NETWORK_TYPE_UNKNOWN,
+ /*subInfo=*/null, OEM_MANAGED_ALL, /*isTypeProxy=*/false));
break;
}
case FrameworkStatsLog.DATA_USAGE_BYTES_TRANSFER: {
@@ -1519,12 +1507,10 @@
final NetworkStats stats = getUidNetworkStatsSnapshotForTemplateLocked(
template, false);
final Integer transport = ruleAndTransport.second;
- if (stats != null) {
- ret.add(new NetworkStatsExt(sliceNetworkStatsByUidAndFgbg(stats),
- new int[]{transport}, /*slicedByFgbg=*/true, /*slicedByTag=*/false,
- /*slicedByMetered=*/false, TelephonyManager.NETWORK_TYPE_UNKNOWN,
- /*subInfo=*/null, oemManaged, /*isTypeProxy=*/false));
- }
+ ret.add(new NetworkStatsExt(sliceNetworkStatsByUidAndFgbg(stats),
+ new int[]{transport}, /*slicedByFgbg=*/true, /*slicedByTag=*/false,
+ /*slicedByMetered=*/false, TelephonyManager.NETWORK_TYPE_UNKNOWN,
+ /*subInfo=*/null, oemManaged, /*isTypeProxy=*/false));
}
}
@@ -1535,7 +1521,7 @@
* Create a snapshot of NetworkStats for a given transport.
*/
@GuardedBy("mDataBytesTransferLock")
- @Nullable
+ @NonNull
private NetworkStats getUidNetworkStatsSnapshotForTransportLocked(int transport) {
NetworkTemplate template = null;
switch (transport) {
@@ -1574,7 +1560,7 @@
* some traffic before boot.
*/
@GuardedBy("mDataBytesTransferLock")
- @Nullable
+ @NonNull
private NetworkStats getUidNetworkStatsSnapshotForTemplateLocked(
@NonNull NetworkTemplate template, boolean includeTags) {
final long elapsedMillisSinceBoot = SystemClock.elapsedRealtime();
@@ -1613,7 +1599,7 @@
}
@GuardedBy("mDataBytesTransferLock")
- @Nullable
+ @NonNull
private NetworkStats getUidNetworkStatsSnapshotForTemplateLocked(
@NonNull NetworkTemplate template, boolean includeTags, long startTime, long endTime) {
final long elapsedMillisSinceBoot = SystemClock.elapsedRealtime();
@@ -1660,12 +1646,10 @@
.setMeteredness(METERED_YES).build();
final NetworkStats stats =
getUidNetworkStatsSnapshotForTemplateLocked(template, /*includeTags=*/false);
- if (stats != null) {
- ret.add(new NetworkStatsExt(sliceNetworkStatsByFgbg(stats),
- new int[]{TRANSPORT_CELLULAR}, /*slicedByFgbg=*/true,
- /*slicedByTag=*/false, /*slicedByMetered=*/false, ratType, subInfo,
- OEM_MANAGED_ALL, /*isTypeProxy=*/false));
- }
+ ret.add(new NetworkStatsExt(sliceNetworkStatsByFgbg(stats),
+ new int[]{TRANSPORT_CELLULAR}, /*slicedByFgbg=*/true,
+ /*slicedByTag=*/false, /*slicedByMetered=*/false, ratType, subInfo,
+ OEM_MANAGED_ALL, /*isTypeProxy=*/false));
}
return ret;
}
diff --git a/services/core/java/com/android/server/stats/pull/netstats/NetworkStatsAccumulator.java b/services/core/java/com/android/server/stats/pull/netstats/NetworkStatsAccumulator.java
index cc63968..e798bc4 100644
--- a/services/core/java/com/android/server/stats/pull/netstats/NetworkStatsAccumulator.java
+++ b/services/core/java/com/android/server/stats/pull/netstats/NetworkStatsAccumulator.java
@@ -17,7 +17,6 @@
package com.android.server.stats.pull.netstats;
import android.annotation.NonNull;
-import android.annotation.Nullable;
import android.net.NetworkStats;
import android.net.NetworkTemplate;
@@ -55,7 +54,7 @@
* This method method may call {@code queryFunction} more than once, which includes maintaining
* an internal cumulative stats snapshot and querying stats after the snapshot.
*/
- @Nullable
+ @NonNull
public NetworkStats queryStats(long currentTimeMillis,
@NonNull StatsQueryFunction queryFunction) {
maybeExpandSnapshot(currentTimeMillis, queryFunction);
@@ -80,23 +79,21 @@
if (newEndTimeMillis - mSnapshotEndTimeMillis > mBucketDurationMillis) {
NetworkStats extraStats = queryFunction.queryNetworkStats(mTemplate, mWithTags,
mSnapshotEndTimeMillis, newEndTimeMillis);
- if (extraStats != null) {
- mSnapshot = mSnapshot.add(extraStats);
- mSnapshotEndTimeMillis = newEndTimeMillis;
- }
+ mSnapshot = mSnapshot.add(extraStats);
+ mSnapshotEndTimeMillis = newEndTimeMillis;
}
}
/**
* Adds up stats in the internal cumulative snapshot and the stats that follow after it.
*/
- @Nullable
+ @NonNull
private NetworkStats snapshotPlusFollowingStats(long currentTimeMillis,
@NonNull StatsQueryFunction queryFunction) {
// Set end time in the future to include all stats in the active bucket.
NetworkStats extraStats = queryFunction.queryNetworkStats(mTemplate, mWithTags,
mSnapshotEndTimeMillis, currentTimeMillis + mBucketDurationMillis);
- return extraStats != null ? mSnapshot.add(extraStats) : null;
+ return mSnapshot.add(extraStats);
}
@FunctionalInterface
@@ -104,7 +101,7 @@
/**
* Returns network stats during the given time period.
*/
- @Nullable
+ @NonNull
NetworkStats queryNetworkStats(@NonNull NetworkTemplate template, boolean includeTags,
long startTime, long endTime);
}
diff --git a/services/tests/servicestests/src/com/android/server/stats/pull/netstats/NetworkStatsAccumulatorTest.kt b/services/tests/servicestests/src/com/android/server/stats/pull/netstats/NetworkStatsAccumulatorTest.kt
index 7280c69..8cf0e82 100644
--- a/services/tests/servicestests/src/com/android/server/stats/pull/netstats/NetworkStatsAccumulatorTest.kt
+++ b/services/tests/servicestests/src/com/android/server/stats/pull/netstats/NetworkStatsAccumulatorTest.kt
@@ -60,7 +60,7 @@
// Accumulator has data until 1000 (= 0), and its end-point is still in the history period.
// Current time is less than one bucket away from snapshot end-point: 1050 - 1000 < 200
- val stats = snapshot.queryStats(1050, FakeStats(500, 1050, 1))!!
+ val stats = snapshot.queryStats(1050, FakeStats(500, 1050, 1))
// After the query at 1050, accumulator should have 1 * (1050 - 1000) = 50 bytes.
assertNetworkStatsEquals(stats, networkStatsWithBytes(50))
@@ -72,7 +72,7 @@
// Accumulator has data until 1000 (= 0), and its end-point is still in the history period.
// Current time is one bucket away from snapshot end-point: 1250 - 1000 > 200
- val stats = snapshot.queryStats(1250, FakeStats(550, 1250, 2))!!
+ val stats = snapshot.queryStats(1250, FakeStats(550, 1250, 2))
// After the query at 1250, accumulator should have 2 * (1250 - 1000) = 500 bytes.
assertNetworkStatsEquals(stats, networkStatsWithBytes(500))
@@ -84,7 +84,7 @@
// Accumulator has data until 1000 (= 0), and its end-point is in the history period.
// Current time is two buckets away from snapshot end-point: 1450 - 1000 > 2*200
- val stats = snapshot.queryStats(1450, FakeStats(600, 1450, 3))!!
+ val stats = snapshot.queryStats(1450, FakeStats(600, 1450, 3))
// After the query at 1450, accumulator should have 3 * (1450 - 1000) = 1350 bytes.
assertNetworkStatsEquals(stats, networkStatsWithBytes(1350))
@@ -96,7 +96,7 @@
// Accumulator has data until 1000 (= 0), and its end-point is still in the history period.
// Current time is many buckets away from snapshot end-point
- val stats = snapshot.queryStats(6100, FakeStats(900, 6100, 1))!!
+ val stats = snapshot.queryStats(6100, FakeStats(900, 6100, 1))
// After the query at 6100, accumulator should have 1 * (6100 - 1000) = 5100 bytes.
assertNetworkStatsEquals(stats, networkStatsWithBytes(5100))
@@ -108,9 +108,9 @@
// Accumulator is queried within the history period, whose starting point stays the same.
// After each query, accumulator should contain bytes from the initial end-point until now.
- val stats1 = snapshot.queryStats(5100, FakeStats(900, 5100, 1))!!
- val stats2 = snapshot.queryStats(10100, FakeStats(900, 10100, 1))!!
- val stats3 = snapshot.queryStats(15100, FakeStats(900, 15100, 1))!!
+ val stats1 = snapshot.queryStats(5100, FakeStats(900, 5100, 1))
+ val stats2 = snapshot.queryStats(10100, FakeStats(900, 10100, 1))
+ val stats3 = snapshot.queryStats(15100, FakeStats(900, 15100, 1))
assertNetworkStatsEquals(stats1, networkStatsWithBytes(4100))
assertNetworkStatsEquals(stats2, networkStatsWithBytes(9100))
@@ -123,9 +123,9 @@
// Accumulator is queried within the history period, whose starting point is moving.
// After each query, accumulator should contain bytes from the initial end-point until now.
- val stats1 = snapshot.queryStats(5100, FakeStats(900, 5100, 1))!!
- val stats2 = snapshot.queryStats(10100, FakeStats(4000, 10100, 1))!!
- val stats3 = snapshot.queryStats(15100, FakeStats(7000, 15100, 1))!!
+ val stats1 = snapshot.queryStats(5100, FakeStats(900, 5100, 1))
+ val stats2 = snapshot.queryStats(10100, FakeStats(4000, 10100, 1))
+ val stats3 = snapshot.queryStats(15100, FakeStats(7000, 15100, 1))
assertNetworkStatsEquals(stats1, networkStatsWithBytes(4100))
assertNetworkStatsEquals(stats2, networkStatsWithBytes(9100))
@@ -138,7 +138,7 @@
// Accumulator has data until 1000 (= 0), but its end-point is not in the history period.
// After the query, accumulator should add only those bytes that are covered by the history.
- val stats = snapshot.queryStats(2700, FakeStats(2200, 2700, 1))!!
+ val stats = snapshot.queryStats(2700, FakeStats(2200, 2700, 1))
assertNetworkStatsEquals(stats, networkStatsWithBytes(500))
}