Loading core/java/android/app/ActivityManager.java +4 −4 Original line number Diff line number Diff line Loading @@ -630,7 +630,7 @@ public class ActivityManager { PROCESS_CAPABILITY_FOREGROUND_LOCATION, PROCESS_CAPABILITY_FOREGROUND_CAMERA, PROCESS_CAPABILITY_FOREGROUND_MICROPHONE, PROCESS_CAPABILITY_NETWORK, PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK, PROCESS_CAPABILITY_BFSL, }) @Retention(RetentionPolicy.SOURCE) Loading Loading @@ -791,7 +791,7 @@ public class ActivityManager { public static final int PROCESS_CAPABILITY_ALL = PROCESS_CAPABILITY_FOREGROUND_LOCATION | PROCESS_CAPABILITY_FOREGROUND_CAMERA | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE | PROCESS_CAPABILITY_NETWORK | PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK | PROCESS_CAPABILITY_BFSL; /** Loading @@ -810,7 +810,7 @@ public class ActivityManager { pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0 ? 'L' : '-'); pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-'); pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0 ? 'M' : '-'); pw.print((caps & PROCESS_CAPABILITY_NETWORK) != 0 ? 'N' : '-'); pw.print((caps & PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0 ? 'N' : '-'); pw.print((caps & PROCESS_CAPABILITY_BFSL) != 0 ? 'F' : '-'); } Loading @@ -819,7 +819,7 @@ public class ActivityManager { sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0 ? 'L' : '-'); sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-'); sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0 ? 'M' : '-'); sb.append((caps & PROCESS_CAPABILITY_NETWORK) != 0 ? 'N' : '-'); sb.append((caps & PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0 ? 'N' : '-'); sb.append((caps & PROCESS_CAPABILITY_BFSL) != 0 ? 'F' : '-'); } Loading core/java/android/content/Context.java +1 −1 Original line number Diff line number Diff line Loading @@ -528,7 +528,7 @@ public abstract class Context { /** * Flag for {@link #bindService}: allow the process hosting the target service to gain * {@link ActivityManager#PROCESS_CAPABILITY_NETWORK}, which allows it be able * {@link ActivityManager#PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK}, which allows it be able * to access network regardless of any power saving restrictions. * * @hide Loading core/java/android/net/NetworkPolicyManager.java +25 −3 Original line number Diff line number Diff line Loading @@ -475,8 +475,8 @@ public class NetworkPolicyManager { * * @param uid The UID whose status needs to be checked. * @return {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED}, * {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_ENABLED}, * or {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote * {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_ENABLED}, * or {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote * the current status of the UID. * @hide */ Loading Loading @@ -768,6 +768,28 @@ public class NetworkPolicyManager { return string.toString(); } /** * Returns the default network capabilities * ({@link ActivityManager#PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK * ActivityManager.PROCESS_CAPABILITY_*}) of the specified process state. * This <b>DOES NOT</b> return all default process capabilities for a proc state. * @hide */ public static int getDefaultProcessNetworkCapabilities(int procState) { switch (procState) { case ActivityManager.PROCESS_STATE_PERSISTENT: case ActivityManager.PROCESS_STATE_PERSISTENT_UI: case ActivityManager.PROCESS_STATE_TOP: return ActivityManager.PROCESS_CAPABILITY_ALL; case ActivityManager.PROCESS_STATE_BOUND_TOP: case ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE: case ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE: return ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; default: return ActivityManager.PROCESS_CAPABILITY_NONE; } } /** * Returns true if {@param procState} is considered foreground and as such will be allowed * to access network when the device is idle or in battery saver mode. Otherwise, false. Loading @@ -784,7 +806,7 @@ public class NetworkPolicyManager { public static boolean isProcStateAllowedWhileIdleOrPowerSaveMode( int procState, @ProcessCapability int capability) { return procState <= FOREGROUND_THRESHOLD_STATE || (capability & ActivityManager.PROCESS_CAPABILITY_NETWORK) != 0; || (capability & ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0; } /** @hide */ Loading services/core/java/com/android/server/am/ActivityManagerShellCommand.java +2 −2 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package com.android.server.am; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; import static android.app.ActivityManager.PROCESS_CAPABILITY_NETWORK; import static android.app.ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; import static android.app.ActivityManagerInternal.ALLOW_NON_FULL; import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM; Loading Loading @@ -2014,7 +2014,7 @@ final class ActivityManagerShellCommand extends ShellCommand { int mask = PROCESS_CAPABILITY_FOREGROUND_LOCATION | PROCESS_CAPABILITY_FOREGROUND_CAMERA | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE | PROCESS_CAPABILITY_NETWORK; | PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; while ((opt=getNextOption()) != null) { if (opt.equals("--oom")) { Loading services/core/java/com/android/server/am/OomAdjuster.java +19 −11 Original line number Diff line number Diff line Loading @@ -22,8 +22,8 @@ import static android.app.ActivityManager.PROCESS_CAPABILITY_BFSL; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; import static android.app.ActivityManager.PROCESS_CAPABILITY_NETWORK; import static android.app.ActivityManager.PROCESS_CAPABILITY_NONE; import static android.app.ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; import static android.app.ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE; import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP; import static android.app.ActivityManager.PROCESS_STATE_CACHED_ACTIVITY; Loading Loading @@ -117,6 +117,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.ServiceInfo; import android.net.NetworkPolicyManager; import android.os.Handler; import android.os.IBinder; import android.os.PowerManagerInternal; Loading Loading @@ -2280,14 +2281,15 @@ public class OomAdjuster { // elevated to a high enough procstate anyway to get network unless they // request otherwise, so don't propagate the network capability by default // in this case unless they explicitly request it. if ((cstate.getCurCapability() & PROCESS_CAPABILITY_NETWORK) != 0) { if ((cstate.getCurCapability() & PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0) { if (clientProcState <= PROCESS_STATE_BOUND_FOREGROUND_SERVICE) { // This is used to grant network access to Expedited Jobs. if (cr.hasFlag(Context.BIND_BYPASS_POWER_NETWORK_RESTRICTIONS)) { capability |= PROCESS_CAPABILITY_NETWORK; capability |= PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; } } else { capability |= PROCESS_CAPABILITY_NETWORK; capability |= PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; } } Loading Loading @@ -2798,27 +2800,33 @@ public class OomAdjuster { } private int getDefaultCapability(ProcessRecord app, int procState) { final int networkCapabilities = NetworkPolicyManager.getDefaultProcessNetworkCapabilities(procState); final int baseCapabilities; switch (procState) { case PROCESS_STATE_PERSISTENT: case PROCESS_STATE_PERSISTENT_UI: case PROCESS_STATE_TOP: return PROCESS_CAPABILITY_ALL; // BFSL allowed baseCapabilities = PROCESS_CAPABILITY_ALL; // BFSL allowed break; case PROCESS_STATE_BOUND_TOP: return PROCESS_CAPABILITY_NETWORK | PROCESS_CAPABILITY_BFSL; baseCapabilities = PROCESS_CAPABILITY_BFSL; break; case PROCESS_STATE_FOREGROUND_SERVICE: if (app.getActiveInstrumentation() != null) { return PROCESS_CAPABILITY_ALL_IMPLICIT | PROCESS_CAPABILITY_NETWORK ; baseCapabilities = PROCESS_CAPABILITY_ALL_IMPLICIT; } else { // Capability from foreground service is conditional depending on // foregroundServiceType in the manifest file and the // mAllowWhileInUsePermissionInFgs flag. return PROCESS_CAPABILITY_NETWORK; baseCapabilities = PROCESS_CAPABILITY_NONE; } case PROCESS_STATE_BOUND_FOREGROUND_SERVICE: return PROCESS_CAPABILITY_NETWORK; break; default: return PROCESS_CAPABILITY_NONE; baseCapabilities = PROCESS_CAPABILITY_NONE; break; } return baseCapabilities | networkCapabilities; } /** Loading Loading
core/java/android/app/ActivityManager.java +4 −4 Original line number Diff line number Diff line Loading @@ -630,7 +630,7 @@ public class ActivityManager { PROCESS_CAPABILITY_FOREGROUND_LOCATION, PROCESS_CAPABILITY_FOREGROUND_CAMERA, PROCESS_CAPABILITY_FOREGROUND_MICROPHONE, PROCESS_CAPABILITY_NETWORK, PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK, PROCESS_CAPABILITY_BFSL, }) @Retention(RetentionPolicy.SOURCE) Loading Loading @@ -791,7 +791,7 @@ public class ActivityManager { public static final int PROCESS_CAPABILITY_ALL = PROCESS_CAPABILITY_FOREGROUND_LOCATION | PROCESS_CAPABILITY_FOREGROUND_CAMERA | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE | PROCESS_CAPABILITY_NETWORK | PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK | PROCESS_CAPABILITY_BFSL; /** Loading @@ -810,7 +810,7 @@ public class ActivityManager { pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0 ? 'L' : '-'); pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-'); pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0 ? 'M' : '-'); pw.print((caps & PROCESS_CAPABILITY_NETWORK) != 0 ? 'N' : '-'); pw.print((caps & PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0 ? 'N' : '-'); pw.print((caps & PROCESS_CAPABILITY_BFSL) != 0 ? 'F' : '-'); } Loading @@ -819,7 +819,7 @@ public class ActivityManager { sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0 ? 'L' : '-'); sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-'); sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0 ? 'M' : '-'); sb.append((caps & PROCESS_CAPABILITY_NETWORK) != 0 ? 'N' : '-'); sb.append((caps & PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0 ? 'N' : '-'); sb.append((caps & PROCESS_CAPABILITY_BFSL) != 0 ? 'F' : '-'); } Loading
core/java/android/content/Context.java +1 −1 Original line number Diff line number Diff line Loading @@ -528,7 +528,7 @@ public abstract class Context { /** * Flag for {@link #bindService}: allow the process hosting the target service to gain * {@link ActivityManager#PROCESS_CAPABILITY_NETWORK}, which allows it be able * {@link ActivityManager#PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK}, which allows it be able * to access network regardless of any power saving restrictions. * * @hide Loading
core/java/android/net/NetworkPolicyManager.java +25 −3 Original line number Diff line number Diff line Loading @@ -475,8 +475,8 @@ public class NetworkPolicyManager { * * @param uid The UID whose status needs to be checked. * @return {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED}, * {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_ENABLED}, * or {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote * {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_ENABLED}, * or {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote * the current status of the UID. * @hide */ Loading Loading @@ -768,6 +768,28 @@ public class NetworkPolicyManager { return string.toString(); } /** * Returns the default network capabilities * ({@link ActivityManager#PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK * ActivityManager.PROCESS_CAPABILITY_*}) of the specified process state. * This <b>DOES NOT</b> return all default process capabilities for a proc state. * @hide */ public static int getDefaultProcessNetworkCapabilities(int procState) { switch (procState) { case ActivityManager.PROCESS_STATE_PERSISTENT: case ActivityManager.PROCESS_STATE_PERSISTENT_UI: case ActivityManager.PROCESS_STATE_TOP: return ActivityManager.PROCESS_CAPABILITY_ALL; case ActivityManager.PROCESS_STATE_BOUND_TOP: case ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE: case ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE: return ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; default: return ActivityManager.PROCESS_CAPABILITY_NONE; } } /** * Returns true if {@param procState} is considered foreground and as such will be allowed * to access network when the device is idle or in battery saver mode. Otherwise, false. Loading @@ -784,7 +806,7 @@ public class NetworkPolicyManager { public static boolean isProcStateAllowedWhileIdleOrPowerSaveMode( int procState, @ProcessCapability int capability) { return procState <= FOREGROUND_THRESHOLD_STATE || (capability & ActivityManager.PROCESS_CAPABILITY_NETWORK) != 0; || (capability & ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0; } /** @hide */ Loading
services/core/java/com/android/server/am/ActivityManagerShellCommand.java +2 −2 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package com.android.server.am; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; import static android.app.ActivityManager.PROCESS_CAPABILITY_NETWORK; import static android.app.ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; import static android.app.ActivityManagerInternal.ALLOW_NON_FULL; import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM; Loading Loading @@ -2014,7 +2014,7 @@ final class ActivityManagerShellCommand extends ShellCommand { int mask = PROCESS_CAPABILITY_FOREGROUND_LOCATION | PROCESS_CAPABILITY_FOREGROUND_CAMERA | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE | PROCESS_CAPABILITY_NETWORK; | PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; while ((opt=getNextOption()) != null) { if (opt.equals("--oom")) { Loading
services/core/java/com/android/server/am/OomAdjuster.java +19 −11 Original line number Diff line number Diff line Loading @@ -22,8 +22,8 @@ import static android.app.ActivityManager.PROCESS_CAPABILITY_BFSL; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; import static android.app.ActivityManager.PROCESS_CAPABILITY_NETWORK; import static android.app.ActivityManager.PROCESS_CAPABILITY_NONE; import static android.app.ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; import static android.app.ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE; import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP; import static android.app.ActivityManager.PROCESS_STATE_CACHED_ACTIVITY; Loading Loading @@ -117,6 +117,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.ServiceInfo; import android.net.NetworkPolicyManager; import android.os.Handler; import android.os.IBinder; import android.os.PowerManagerInternal; Loading Loading @@ -2280,14 +2281,15 @@ public class OomAdjuster { // elevated to a high enough procstate anyway to get network unless they // request otherwise, so don't propagate the network capability by default // in this case unless they explicitly request it. if ((cstate.getCurCapability() & PROCESS_CAPABILITY_NETWORK) != 0) { if ((cstate.getCurCapability() & PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0) { if (clientProcState <= PROCESS_STATE_BOUND_FOREGROUND_SERVICE) { // This is used to grant network access to Expedited Jobs. if (cr.hasFlag(Context.BIND_BYPASS_POWER_NETWORK_RESTRICTIONS)) { capability |= PROCESS_CAPABILITY_NETWORK; capability |= PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; } } else { capability |= PROCESS_CAPABILITY_NETWORK; capability |= PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK; } } Loading Loading @@ -2798,27 +2800,33 @@ public class OomAdjuster { } private int getDefaultCapability(ProcessRecord app, int procState) { final int networkCapabilities = NetworkPolicyManager.getDefaultProcessNetworkCapabilities(procState); final int baseCapabilities; switch (procState) { case PROCESS_STATE_PERSISTENT: case PROCESS_STATE_PERSISTENT_UI: case PROCESS_STATE_TOP: return PROCESS_CAPABILITY_ALL; // BFSL allowed baseCapabilities = PROCESS_CAPABILITY_ALL; // BFSL allowed break; case PROCESS_STATE_BOUND_TOP: return PROCESS_CAPABILITY_NETWORK | PROCESS_CAPABILITY_BFSL; baseCapabilities = PROCESS_CAPABILITY_BFSL; break; case PROCESS_STATE_FOREGROUND_SERVICE: if (app.getActiveInstrumentation() != null) { return PROCESS_CAPABILITY_ALL_IMPLICIT | PROCESS_CAPABILITY_NETWORK ; baseCapabilities = PROCESS_CAPABILITY_ALL_IMPLICIT; } else { // Capability from foreground service is conditional depending on // foregroundServiceType in the manifest file and the // mAllowWhileInUsePermissionInFgs flag. return PROCESS_CAPABILITY_NETWORK; baseCapabilities = PROCESS_CAPABILITY_NONE; } case PROCESS_STATE_BOUND_FOREGROUND_SERVICE: return PROCESS_CAPABILITY_NETWORK; break; default: return PROCESS_CAPABILITY_NONE; baseCapabilities = PROCESS_CAPABILITY_NONE; break; } return baseCapabilities | networkCapabilities; } /** Loading