diff --git a/core/java/android/net/INetworkPolicyManager.aidl b/core/java/android/net/INetworkPolicyManager.aidl index 476e2f43649ff..e92302a939d8a 100644 --- a/core/java/android/net/INetworkPolicyManager.aidl +++ b/core/java/android/net/INetworkPolicyManager.aidl @@ -37,8 +37,6 @@ interface INetworkPolicyManager { int getUidPolicy(int uid); int[] getUidsWithPolicy(int policy); - boolean isUidForeground(int uid); - void registerListener(INetworkPolicyListener listener); void unregisterListener(INetworkPolicyListener listener); diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java index 2c5a021ec42ac..bf6b7e09f529c 100644 --- a/core/java/android/net/NetworkPolicyManager.java +++ b/core/java/android/net/NetworkPolicyManager.java @@ -107,6 +107,9 @@ public class NetworkPolicyManager { private static final boolean ALLOW_PLATFORM_APP_POLICY = true; + public static final int FOREGROUND_THRESHOLD_STATE = + ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE; + /** * {@link Intent} extra that indicates which {@link NetworkTemplate} rule it * applies to. @@ -331,7 +334,7 @@ public class NetworkPolicyManager { * to access network when the device is idle or in battery saver mode. Otherwise, false. */ public static boolean isProcStateAllowedWhileIdleOrPowerSaveMode(int procState) { - return procState <= ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE; + return procState <= FOREGROUND_THRESHOLD_STATE; } /** @@ -339,7 +342,7 @@ public class NetworkPolicyManager { * to access network when the device is in data saver mode. Otherwise, false. */ public static boolean isProcStateAllowedWhileOnRestrictBackground(int procState) { - return procState <= ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE; + return procState <= FOREGROUND_THRESHOLD_STATE; } public static String resolveNetworkId(WifiConfiguration config) { diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index 9a1363216ac74..594937a45dcf4 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -3218,20 +3218,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { this, in, out, err, args, callback, resultReceiver); } - @Override + @VisibleForTesting public boolean isUidForeground(int uid) { - mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG); - synchronized (mUidRulesFirstLock) { - return isUidForegroundUL(uid); + return isUidStateForeground( + mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY)); } } - private boolean isUidForegroundUL(int uid) { - return isUidStateForegroundUL( - mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY)); - } - private boolean isUidForegroundOnRestrictBackgroundUL(int uid) { final int procState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); return isProcStateAllowedWhileOnRestrictBackground(procState); @@ -3242,9 +3236,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { return isProcStateAllowedWhileIdleOrPowerSaveMode(procState); } - private boolean isUidStateForegroundUL(int state) { + private boolean isUidStateForeground(int state) { // only really in foreground when screen is also on - return state <= ActivityManager.PROCESS_STATE_TOP; + return state <= NetworkPolicyManager.FOREGROUND_THRESHOLD_STATE; } /** @@ -3271,7 +3265,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } updateRulesForPowerRestrictionsUL(uid); } - updateNetworkStats(uid, isUidStateForegroundUL(uidState)); + updateNetworkStats(uid, isUidStateForeground(uidState)); } } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK);