diff options
author | Amith Yamasani <yamasani@google.com> | 2015-06-12 20:26:41 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-12 20:26:43 +0000 |
commit | bc9b1024535a21ce8d73fa1ca7deb86ea4d1338b (patch) | |
tree | d8d61b06b5c9cc1d450e2b69740f1cc8d4186b08 | |
parent | 1c24a8cd312cf86f1a0a59008933e4ec5579e26d (diff) | |
parent | 06f0806bd54e907f3d6d2069d263c700bd91260c (diff) | |
download | frameworks_base-bc9b1024535a21ce8d73fa1ca7deb86ea4d1338b.zip frameworks_base-bc9b1024535a21ce8d73fa1ca7deb86ea4d1338b.tar.gz frameworks_base-bc9b1024535a21ce8d73fa1ca7deb86ea4d1338b.tar.bz2 |
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 7673af4..81ef4d5 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(); } } } |