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());
     }