Loading services/core/java/com/android/server/net/NetworkPolicyManagerService.java +27 −3 Original line number Diff line number Diff line Loading @@ -1619,7 +1619,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { try { final int oldPolicy = mUidPolicy.get(uid, POLICY_NONE); if (oldPolicy != policy) { setUidPolicyUncheckedLocked(uid, policy, true); setUidPolicyUncheckedLocked(uid, oldPolicy, policy, true); } } finally { Binder.restoreCallingIdentity(token); Loading @@ -1639,7 +1639,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final int oldPolicy = mUidPolicy.get(uid, POLICY_NONE); policy |= oldPolicy; if (oldPolicy != policy) { setUidPolicyUncheckedLocked(uid, policy, true); setUidPolicyUncheckedLocked(uid, oldPolicy, policy, true); } } } Loading @@ -1656,11 +1656,22 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final int oldPolicy = mUidPolicy.get(uid, POLICY_NONE); policy = oldPolicy & ~policy; if (oldPolicy != policy) { setUidPolicyUncheckedLocked(uid, policy, true); setUidPolicyUncheckedLocked(uid, oldPolicy, policy, true); } } } private void setUidPolicyUncheckedLocked(int uid, int oldPolicy, int policy, boolean persist) { setUidPolicyUncheckedLocked(uid, policy, persist); // Checks if app was added or removed to the blacklist. if ((oldPolicy == POLICY_NONE && policy == POLICY_REJECT_METERED_BACKGROUND) || (oldPolicy == POLICY_REJECT_METERED_BACKGROUND && policy == POLICY_NONE)) { mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid, 0) .sendToTarget(); } } private void setUidPolicyUncheckedLocked(int uid, int policy, boolean persist) { mUidPolicy.put(uid, policy); Loading Loading @@ -1988,7 +1999,20 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { public int getRestrictBackgroundByCaller() { mContext.enforceCallingOrSelfPermission(ACCESS_NETWORK_STATE, TAG); final int uid = Binder.getCallingUid(); synchronized (mRulesLock) { // Must clear identity because getUidPolicy() is restricted to system. final long token = Binder.clearCallingIdentity(); final int policy; try { policy = getUidPolicy(uid); } finally { Binder.restoreCallingIdentity(token); } if (policy == POLICY_REJECT_METERED_BACKGROUND) { // App is blacklisted. return RESTRICT_BACKGROUND_STATUS_ENABLED; } if (!mRestrictBackground) { return RESTRICT_BACKGROUND_STATUS_DISABLED; } Loading Loading
services/core/java/com/android/server/net/NetworkPolicyManagerService.java +27 −3 Original line number Diff line number Diff line Loading @@ -1619,7 +1619,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { try { final int oldPolicy = mUidPolicy.get(uid, POLICY_NONE); if (oldPolicy != policy) { setUidPolicyUncheckedLocked(uid, policy, true); setUidPolicyUncheckedLocked(uid, oldPolicy, policy, true); } } finally { Binder.restoreCallingIdentity(token); Loading @@ -1639,7 +1639,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final int oldPolicy = mUidPolicy.get(uid, POLICY_NONE); policy |= oldPolicy; if (oldPolicy != policy) { setUidPolicyUncheckedLocked(uid, policy, true); setUidPolicyUncheckedLocked(uid, oldPolicy, policy, true); } } } Loading @@ -1656,11 +1656,22 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final int oldPolicy = mUidPolicy.get(uid, POLICY_NONE); policy = oldPolicy & ~policy; if (oldPolicy != policy) { setUidPolicyUncheckedLocked(uid, policy, true); setUidPolicyUncheckedLocked(uid, oldPolicy, policy, true); } } } private void setUidPolicyUncheckedLocked(int uid, int oldPolicy, int policy, boolean persist) { setUidPolicyUncheckedLocked(uid, policy, persist); // Checks if app was added or removed to the blacklist. if ((oldPolicy == POLICY_NONE && policy == POLICY_REJECT_METERED_BACKGROUND) || (oldPolicy == POLICY_REJECT_METERED_BACKGROUND && policy == POLICY_NONE)) { mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid, 0) .sendToTarget(); } } private void setUidPolicyUncheckedLocked(int uid, int policy, boolean persist) { mUidPolicy.put(uid, policy); Loading Loading @@ -1988,7 +1999,20 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { public int getRestrictBackgroundByCaller() { mContext.enforceCallingOrSelfPermission(ACCESS_NETWORK_STATE, TAG); final int uid = Binder.getCallingUid(); synchronized (mRulesLock) { // Must clear identity because getUidPolicy() is restricted to system. final long token = Binder.clearCallingIdentity(); final int policy; try { policy = getUidPolicy(uid); } finally { Binder.restoreCallingIdentity(token); } if (policy == POLICY_REJECT_METERED_BACKGROUND) { // App is blacklisted. return RESTRICT_BACKGROUND_STATUS_ENABLED; } if (!mRestrictBackground) { return RESTRICT_BACKGROUND_STATUS_DISABLED; } Loading