Add a protection for the null UID corner case
Test: atest SettingsRoboTests:com.android.settings.fuelgauge.datasaver Fix: 324571889 Change-Id: Ia5a63dc360d4b518f2b86315b40bc2db12f007ed
This commit is contained in:
@@ -37,13 +37,14 @@ import java.util.List;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/** A class to dynamically manage per apps {@link NetworkPolicyManager} POLICY_ flags. */
|
/** 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 TAG = "DynamicDenylistManager";
|
||||||
private static final String PREF_KEY_MANUAL_DENY = "manual_denylist_preference";
|
private static final String PREF_KEY_MANUAL_DENY = "manual_denylist_preference";
|
||||||
private static final String PREF_KEY_DYNAMIC_DENY = "dynamic_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 Context mContext;
|
||||||
private final NetworkPolicyManager mNetworkPolicyManager;
|
private final NetworkPolicyManager mNetworkPolicyManager;
|
||||||
@@ -115,7 +116,11 @@ public final class DynamicDenylistManager {
|
|||||||
final ArraySet<Integer> failedUids = new ArraySet<>();
|
final ArraySet<Integer> failedUids = new ArraySet<>();
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
// Set new added UIDs into REJECT policy.
|
// 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)) {
|
if (!lastDynamicDenylistUids.contains(uid)) {
|
||||||
try {
|
try {
|
||||||
mNetworkPolicyManager.setUidPolicy(uid, POLICY_REJECT_METERED_BACKGROUND);
|
mNetworkPolicyManager.setUidPolicy(uid, POLICY_REJECT_METERED_BACKGROUND);
|
||||||
|
@@ -177,8 +177,11 @@ public class DynamicDenylistManagerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void setDenylist_uidDeniedAlready_doNothing() {
|
public void setDenylist_uidDeniedAlready_doNothing() {
|
||||||
initDynamicDenylistManager(new int[] {FAKE_UID_1_INT});
|
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());
|
verify(mNetworkPolicyManager, never()).setUidPolicy(anyInt(), anyInt());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user