Merge "Reset the dynamic set denylist after reboot the device" into main
This commit is contained in:
@@ -51,8 +51,7 @@ public final class BatterySettingsMigrateChecker extends BroadcastReceiver {
|
|||||||
context = context.getApplicationContext();
|
context = context.getApplicationContext();
|
||||||
verifySaverConfiguration(context);
|
verifySaverConfiguration(context);
|
||||||
verifyBatteryOptimizeModes(context);
|
verifyBatteryOptimizeModes(context);
|
||||||
// Initialize and sync settings into SharedPreferences for migration.
|
DynamicDenylistManager.getInstance(context).onBootComplete();
|
||||||
DynamicDenylistManager.getInstance(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Avoid users set important apps into the unexpected battery optimize modes */
|
/** Avoid users set important apps into the unexpected battery optimize modes */
|
||||||
|
@@ -139,16 +139,25 @@ public final class DynamicDenylistManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
for (int uid : mNetworkPolicyManager
|
final int[] uids = mNetworkPolicyManager
|
||||||
.getUidsWithPolicy(POLICY_REJECT_METERED_BACKGROUND)) {
|
.getUidsWithPolicy(POLICY_REJECT_METERED_BACKGROUND);
|
||||||
if (!getDenylistAllUids(getManualDenylistPref()).contains(uid)) {
|
if (uids != null && uids.length != 0) {
|
||||||
mNetworkPolicyManager.setUidPolicy(uid, POLICY_NONE);
|
for (int uid : uids) {
|
||||||
|
if (!getDenylistAllUids(getManualDenylistPref()).contains(uid)) {
|
||||||
|
mNetworkPolicyManager.setUidPolicy(uid, POLICY_NONE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
clearSharedPreferences();
|
clearSharedPreferences();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Reset the POLICY_REJECT_METERED uids when device is boot completed. */
|
||||||
|
public void onBootComplete() {
|
||||||
|
resetDenylistIfNeeded(/* packageName= */ null, /* force= */ true);
|
||||||
|
syncPolicyIfNeeded();
|
||||||
|
}
|
||||||
|
|
||||||
/** Dump the data stored in the {@link SharedPreferences}. */
|
/** Dump the data stored in the {@link SharedPreferences}. */
|
||||||
public void dump(PrintWriter writer) {
|
public void dump(PrintWriter writer) {
|
||||||
writer.println("Dump of DynamicDenylistManager:");
|
writer.println("Dump of DynamicDenylistManager:");
|
||||||
|
@@ -393,6 +393,27 @@ public class DynamicDenylistManagerTest {
|
|||||||
assertThat(dumpResults.contains("DynamicDenylist: null")).isTrue();
|
assertThat(dumpResults.contains("DynamicDenylist: null")).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBootComplete_resetIntoManualMode() {
|
||||||
|
initDynamicDenylistManager(new int[] {FAKE_UID_1_INT});
|
||||||
|
setDenylist(new ArraySet<>(List.of(FAKE_UID_2_INT)));
|
||||||
|
// Ensure the testing environment for manual denylist.
|
||||||
|
assertThat(mManualDenyListPref.getAll()).hasSize(2);
|
||||||
|
assertTrue(mManualDenyListPref.contains(PREF_KEY_MANUAL_DENYLIST_SYNCED));
|
||||||
|
assertTrue(mManualDenyListPref.contains(FAKE_UID_1));
|
||||||
|
// Ensure the testing environment for dynamic denylist.
|
||||||
|
assertThat(mDynamicDenyListPref.getAll()).hasSize(1);
|
||||||
|
|
||||||
|
mDynamicDenylistManager.onBootComplete();
|
||||||
|
|
||||||
|
// Keep the users set uids in the manual denylist.
|
||||||
|
assertThat(mManualDenyListPref.getAll()).hasSize(2);
|
||||||
|
assertTrue(mManualDenyListPref.contains(PREF_KEY_MANUAL_DENYLIST_SYNCED));
|
||||||
|
assertTrue(mManualDenyListPref.contains(FAKE_UID_1));
|
||||||
|
// Clear the uids in the dynamic denylist.
|
||||||
|
assertThat(mDynamicDenyListPref.getAll()).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
private void initDynamicDenylistManager(int[] preload) {
|
private void initDynamicDenylistManager(int[] preload) {
|
||||||
initDynamicDenylistManager(preload, preload);
|
initDynamicDenylistManager(preload, preload);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user