summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2015-06-12 20:26:41 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-12 20:26:43 +0000
commitbc9b1024535a21ce8d73fa1ca7deb86ea4d1338b (patch)
treed8d61b06b5c9cc1d450e2b69740f1cc8d4186b08
parent1c24a8cd312cf86f1a0a59008933e4ec5579e26d (diff)
parent06f0806bd54e907f3d6d2069d263c700bd91260c (diff)
downloadframeworks_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.java20
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();
}
}
}