diff --git a/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java b/src/com/android/settings/fuelgauge/datasaver/DynamicDenylistManager.java index 49ed63cd3f8..b77d5eb6ddf 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.List; 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 @@ public final class DynamicDenylistManager { final ArraySet 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 0e6f6aabcd4..d642b3096e8 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 @@ public class DynamicDenylistManagerTest { @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()); }