diff options
| author | 2015-06-12 20:26:41 +0000 | |
|---|---|---|
| committer | 2015-06-12 20:26:43 +0000 | |
| commit | bc9b1024535a21ce8d73fa1ca7deb86ea4d1338b (patch) | |
| tree | d8d61b06b5c9cc1d450e2b69740f1cc8d4186b08 | |
| parent | 1c24a8cd312cf86f1a0a59008933e4ec5579e26d (diff) | |
| parent | 06f0806bd54e907f3d6d2069d263c700bd91260c (diff) | |
Merge "Update network state of apps leaving the whitelist" into mnc-dev
| -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(); } } } |