diff options
| author | 2015-06-12 13:23:33 -0700 | |
|---|---|---|
| committer | 2015-06-12 13:23:33 -0700 | |
| commit | 06f0806bd54e907f3d6d2069d263c700bd91260c (patch) | |
| tree | 7d7fe26e7b0fbae21e81092c0bbe7aa23d18c047 | |
| parent | 816870bfd72d5d21a99ece0797c8b37382f16661 (diff) | |
Update network state of apps leaving the whitelist
Bug: 21787562
Change-Id: I9f45acc58ba0b4b6cfed08aecbf081a5f57eb217
| -rw-r--r-- | services/core/java/com/android/server/net/NetworkPolicyManagerService.java | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index 7673af44f5ac..81ef4d57d70f 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -376,8 +376,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub void updatePowerSaveTempWhitelistLocked() { try { + // Clear the states of the current whitelist + final int N = mPowerSaveTempWhitelistAppIds.size(); + for (int i = 0; i < N; i++) { + mPowerSaveTempWhitelistAppIds.setValueAt(i, false); + } + // Update the states with the new whitelist final int[] whitelist = mDeviceIdleController.getAppIdTempWhitelist(); - mPowerSaveTempWhitelistAppIds.clear(); if (whitelist != null) { for (int uid : whitelist) { mPowerSaveTempWhitelistAppIds.put(uid, true); @@ -387,6 +392,18 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub } } + /** + * Remove unnecessary entries in the temp whitelist + */ + void purgePowerSaveTempWhitelistLocked() { + final int N = mPowerSaveTempWhitelistAppIds.size(); + for (int i = N - 1; i >= 0; i--) { + if (mPowerSaveTempWhitelistAppIds.valueAt(i) == false) { + mPowerSaveTempWhitelistAppIds.removeAt(i); + } + } + } + public void systemReady() { if (!isBandwidthControlEnabled()) { Slog.w(TAG, "bandwidth controls disabled, unable to enforce policy"); @@ -521,6 +538,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub } else { updatePowerSaveTempWhitelistLocked(); updateRulesForTempWhitelistChangeLocked(); + purgePowerSaveTempWhitelistLocked(); } } } |