diff options
| author | 2016-04-15 18:22:11 +0000 | |
|---|---|---|
| committer | 2016-04-15 18:22:13 +0000 | |
| commit | db0f3a708acdb4640e00cce848294d6f7dc88fa3 (patch) | |
| tree | 956f30533cdb6c744ebadc5ad843f7ef1231b062 | |
| parent | fc465bf6bf456f5be1790b2ba60ea3da9c671d71 (diff) | |
| parent | 3646cbdfe77ff37475259b39171aa49686c5501a (diff) | |
Merge "Update interface quota on the handler" into nyc-dev
| -rw-r--r-- | services/core/java/com/android/server/net/NetworkPolicyManagerService.java | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index c24860886d72..3fb786bc599e 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -260,6 +260,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private static final int MSG_ADVISE_PERSIST_THRESHOLD = 7; private static final int MSG_SCREEN_ON_CHANGED = 8; private static final int MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED = 9; + private static final int MSG_UPDATE_INTERFACE_QUOTA = 10; + private static final int MSG_REMOVE_INTERFACE_QUOTA = 11; private final Context mContext; private final IActivityManager mActivityManager; @@ -1275,8 +1277,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } for (String iface : ifaces) { - removeInterfaceQuota(iface); - setInterfaceQuota(iface, quotaBytes); + // long quotaBytes split up into two ints to fit in message + mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA, + (int) (quotaBytes >> 32), (int) (quotaBytes & 0xFFFFFFFF), iface) + .sendToTarget(); newMeteredIfaces.add(iface); } } @@ -1292,8 +1296,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { for (int i = connIfaces.size()-1; i >= 0; i--) { String iface = connIfaces.valueAt(i); - removeInterfaceQuota(iface); - setInterfaceQuota(iface, Long.MAX_VALUE); + // long quotaBytes split up into two ints to fit in message + mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA, + (int) (Long.MAX_VALUE >> 32), (int) (Long.MAX_VALUE & 0xFFFFFFFF), iface) + .sendToTarget(); newMeteredIfaces.add(iface); } @@ -1303,7 +1309,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { for (int i = mMeteredIfaces.size() - 1; i >= 0; i--) { final String iface = mMeteredIfaces.valueAt(i); if (!newMeteredIfaces.contains(iface)) { - removeInterfaceQuota(iface); + mHandler.obtainMessage(MSG_REMOVE_INTERFACE_QUOTA, iface) + .sendToTarget(); } } mMeteredIfaces = newMeteredIfaces; @@ -2950,6 +2957,17 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { updateScreenOn(); return true; } + case MSG_UPDATE_INTERFACE_QUOTA: { + removeInterfaceQuota((String) msg.obj); + // int params need to be stitched back into a long + setInterfaceQuota((String) msg.obj, + ((long) msg.arg1 << 32) | (msg.arg2 & 0xFFFFFFFFL)); + return true; + } + case MSG_REMOVE_INTERFACE_QUOTA: { + removeInterfaceQuota((String) msg.obj); + return true; + } default: { return false; } |