Merge "Add a protection for the null UID corner case" into main
diff --git a/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java b/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java
index 49ed63c..b77d5eb 100644
--- a/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java
+++ b/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java
@@ -37,13 +37,14 @@
import java.util.Set;
/** A class to dynamically manage per apps {@link NetworkPolicyManager} POLICY_ flags. */
-public final class DynamicDenylistManager {
+public class DynamicDenylistManager {
private static final String TAG = "DynamicDenylistManager";
private static final String PREF_KEY_MANUAL_DENY = "manual_denylist_preference";
private static final String PREF_KEY_DYNAMIC_DENY = "dynamic_denylist_preference";
- private static DynamicDenylistManager sInstance;
+ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+ public static DynamicDenylistManager sInstance = null;
private final Context mContext;
private final NetworkPolicyManager mNetworkPolicyManager;
@@ -115,7 +116,11 @@
final ArraySet<Integer> failedUids = new ArraySet<>();
synchronized (mLock) {
// Set new added UIDs into REJECT policy.
- for (int uid : denylistTargetUids) {
+ for (Integer uidInteger : denylistTargetUids) {
+ if (uidInteger == null) {
+ continue;
+ }
+ final int uid = uidInteger.intValue();
if (!lastDynamicDenylistUids.contains(uid)) {
try {
mNetworkPolicyManager.setUidPolicy(uid, POLICY_REJECT_METERED_BACKGROUND);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManagerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManagerTest.java
index 0e6f6aa..d642b30 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManagerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManagerTest.java
@@ -177,8 +177,11 @@
@Test
public void setDenylist_uidDeniedAlready_doNothing() {
initDynamicDenylistManager(new int[] {FAKE_UID_1_INT});
+ final ArraySet uids = new ArraySet<>();
+ uids.add(FAKE_UID_1_INT);
+ uids.add(null);
- setDenylist(new ArraySet<>(List.of(FAKE_UID_1_INT)));
+ setDenylist(uids);
verify(mNetworkPolicyManager, never()).setUidPolicy(anyInt(), anyInt());
}