Loading services/core/java/com/android/server/net/NetworkPolicyManagerService.java +21 −5 Original line number Original line Diff line number Diff line Loading @@ -2301,7 +2301,12 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final int state = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); final int state = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); fout.print(" state="); fout.print(" state="); fout.print(state); fout.print(state); fout.print(state <= ActivityManager.PROCESS_STATE_TOP ? " (fg)" : " (bg)"); if (state <= ActivityManager.PROCESS_STATE_TOP) { fout.print(" (fg)"); } else { fout.print(state <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE ? " (fg svc)" : " (bg)"); } final int rule = mUidRules.get(uid, RULE_UNKNOWN); final int rule = mUidRules.get(uid, RULE_UNKNOWN); fout.print(" rule="); fout.print(" rule="); Loading Loading @@ -2338,6 +2343,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY)); mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY)); } } private boolean isUidForegroundOnRestrictBackgroundLocked(int uid) { final int procState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); return isProcStateAllowedWhileOnRestrictBackgroundLocked(procState); } private boolean isUidStateForegroundLocked(int state) { private boolean isUidStateForegroundLocked(int state) { // only really in foreground when screen is also on // only really in foreground when screen is also on return mScreenOn && state <= ActivityManager.PROCESS_STATE_TOP; return mScreenOn && state <= ActivityManager.PROCESS_STATE_TOP; Loading Loading @@ -2396,8 +2406,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private void updateRestrictBackgroundRulesOnUidStatusChangedLocked(int uid, int oldUidState, private void updateRestrictBackgroundRulesOnUidStatusChangedLocked(int uid, int oldUidState, int newUidState) { int newUidState) { final boolean oldForeground = oldUidState <= ActivityManager.PROCESS_STATE_TOP; final boolean oldForeground = final boolean newForeground = newUidState <= ActivityManager.PROCESS_STATE_TOP; isProcStateAllowedWhileOnRestrictBackgroundLocked(oldUidState); final boolean newForeground = isProcStateAllowedWhileOnRestrictBackgroundLocked(newUidState); if (oldForeground != newForeground) { if (oldForeground != newForeground) { updateRuleForRestrictBackgroundLocked(uid); updateRuleForRestrictBackgroundLocked(uid); } } Loading @@ -2421,7 +2433,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // only update rules for anyone with foreground activities // only update rules for anyone with foreground activities final int size = mUidState.size(); final int size = mUidState.size(); for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) { if (mUidState.valueAt(i) <= ActivityManager.PROCESS_STATE_TOP) { if (mUidState.valueAt(i) <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) { final int uid = mUidState.keyAt(i); final int uid = mUidState.keyAt(i); updateRestrictionRulesForUidLocked(uid); updateRestrictionRulesForUidLocked(uid); } } Loading @@ -2432,6 +2444,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { return procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE; return procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE; } } static boolean isProcStateAllowedWhileOnRestrictBackgroundLocked(int procState) { return procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE; } void updateRulesForRestrictPowerLocked() { void updateRulesForRestrictPowerLocked() { updateRulesForWhitelistedPowerSaveLocked(mRestrictPower, FIREWALL_CHAIN_POWERSAVE, updateRulesForWhitelistedPowerSaveLocked(mRestrictPower, FIREWALL_CHAIN_POWERSAVE, mUidFirewallPowerSaveRules); mUidFirewallPowerSaveRules); Loading Loading @@ -2715,7 +2731,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } final int uidPolicy = mUidPolicy.get(uid, POLICY_NONE); final int uidPolicy = mUidPolicy.get(uid, POLICY_NONE); final boolean isForeground = isUidForegroundLocked(uid); final boolean isForeground = isUidForegroundOnRestrictBackgroundLocked(uid); final boolean isBlacklisted = (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0; final boolean isBlacklisted = (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0; final boolean isWhitelisted = mRestrictBackgroundWhitelistUids.get(uid); final boolean isWhitelisted = mRestrictBackgroundWhitelistUids.get(uid); Loading Loading
services/core/java/com/android/server/net/NetworkPolicyManagerService.java +21 −5 Original line number Original line Diff line number Diff line Loading @@ -2301,7 +2301,12 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final int state = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); final int state = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); fout.print(" state="); fout.print(" state="); fout.print(state); fout.print(state); fout.print(state <= ActivityManager.PROCESS_STATE_TOP ? " (fg)" : " (bg)"); if (state <= ActivityManager.PROCESS_STATE_TOP) { fout.print(" (fg)"); } else { fout.print(state <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE ? " (fg svc)" : " (bg)"); } final int rule = mUidRules.get(uid, RULE_UNKNOWN); final int rule = mUidRules.get(uid, RULE_UNKNOWN); fout.print(" rule="); fout.print(" rule="); Loading Loading @@ -2338,6 +2343,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY)); mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY)); } } private boolean isUidForegroundOnRestrictBackgroundLocked(int uid) { final int procState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); return isProcStateAllowedWhileOnRestrictBackgroundLocked(procState); } private boolean isUidStateForegroundLocked(int state) { private boolean isUidStateForegroundLocked(int state) { // only really in foreground when screen is also on // only really in foreground when screen is also on return mScreenOn && state <= ActivityManager.PROCESS_STATE_TOP; return mScreenOn && state <= ActivityManager.PROCESS_STATE_TOP; Loading Loading @@ -2396,8 +2406,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private void updateRestrictBackgroundRulesOnUidStatusChangedLocked(int uid, int oldUidState, private void updateRestrictBackgroundRulesOnUidStatusChangedLocked(int uid, int oldUidState, int newUidState) { int newUidState) { final boolean oldForeground = oldUidState <= ActivityManager.PROCESS_STATE_TOP; final boolean oldForeground = final boolean newForeground = newUidState <= ActivityManager.PROCESS_STATE_TOP; isProcStateAllowedWhileOnRestrictBackgroundLocked(oldUidState); final boolean newForeground = isProcStateAllowedWhileOnRestrictBackgroundLocked(newUidState); if (oldForeground != newForeground) { if (oldForeground != newForeground) { updateRuleForRestrictBackgroundLocked(uid); updateRuleForRestrictBackgroundLocked(uid); } } Loading @@ -2421,7 +2433,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // only update rules for anyone with foreground activities // only update rules for anyone with foreground activities final int size = mUidState.size(); final int size = mUidState.size(); for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) { if (mUidState.valueAt(i) <= ActivityManager.PROCESS_STATE_TOP) { if (mUidState.valueAt(i) <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) { final int uid = mUidState.keyAt(i); final int uid = mUidState.keyAt(i); updateRestrictionRulesForUidLocked(uid); updateRestrictionRulesForUidLocked(uid); } } Loading @@ -2432,6 +2444,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { return procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE; return procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE; } } static boolean isProcStateAllowedWhileOnRestrictBackgroundLocked(int procState) { return procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE; } void updateRulesForRestrictPowerLocked() { void updateRulesForRestrictPowerLocked() { updateRulesForWhitelistedPowerSaveLocked(mRestrictPower, FIREWALL_CHAIN_POWERSAVE, updateRulesForWhitelistedPowerSaveLocked(mRestrictPower, FIREWALL_CHAIN_POWERSAVE, mUidFirewallPowerSaveRules); mUidFirewallPowerSaveRules); Loading Loading @@ -2715,7 +2731,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } final int uidPolicy = mUidPolicy.get(uid, POLICY_NONE); final int uidPolicy = mUidPolicy.get(uid, POLICY_NONE); final boolean isForeground = isUidForegroundLocked(uid); final boolean isForeground = isUidForegroundOnRestrictBackgroundLocked(uid); final boolean isBlacklisted = (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0; final boolean isBlacklisted = (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0; final boolean isWhitelisted = mRestrictBackgroundWhitelistUids.get(uid); final boolean isWhitelisted = mRestrictBackgroundWhitelistUids.get(uid); Loading