Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e11533b authored by Kweku Adams's avatar Kweku Adams Committed by Automerger Merge Worker
Browse files

Merge "Use updated process capability name." into udc-dev am: 6c4a6153

parents b31b30d7 6c4a6153
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -630,7 +630,7 @@ public class ActivityManager {
            PROCESS_CAPABILITY_FOREGROUND_LOCATION,
            PROCESS_CAPABILITY_FOREGROUND_LOCATION,
            PROCESS_CAPABILITY_FOREGROUND_CAMERA,
            PROCESS_CAPABILITY_FOREGROUND_CAMERA,
            PROCESS_CAPABILITY_FOREGROUND_MICROPHONE,
            PROCESS_CAPABILITY_FOREGROUND_MICROPHONE,
            PROCESS_CAPABILITY_NETWORK,
            PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK,
            PROCESS_CAPABILITY_BFSL,
            PROCESS_CAPABILITY_BFSL,
    })
    })
    @Retention(RetentionPolicy.SOURCE)
    @Retention(RetentionPolicy.SOURCE)
@@ -791,7 +791,7 @@ public class ActivityManager {
    public static final int PROCESS_CAPABILITY_ALL = PROCESS_CAPABILITY_FOREGROUND_LOCATION
    public static final int PROCESS_CAPABILITY_ALL = PROCESS_CAPABILITY_FOREGROUND_LOCATION
            | PROCESS_CAPABILITY_FOREGROUND_CAMERA
            | PROCESS_CAPABILITY_FOREGROUND_CAMERA
            | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
            | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
            | PROCESS_CAPABILITY_NETWORK
            | PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK
            | PROCESS_CAPABILITY_BFSL;
            | PROCESS_CAPABILITY_BFSL;


    /**
    /**
@@ -810,7 +810,7 @@ public class ActivityManager {
        pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0 ? 'L' : '-');
        pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0 ? 'L' : '-');
        pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-');
        pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-');
        pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0 ? 'M' : '-');
        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' : '-');
        pw.print((caps & PROCESS_CAPABILITY_BFSL) != 0 ? 'F' : '-');
    }
    }


@@ -819,7 +819,7 @@ public class ActivityManager {
        sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0 ? 'L' : '-');
        sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_LOCATION) != 0 ? 'L' : '-');
        sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-');
        sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0 ? 'C' : '-');
        sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0 ? 'M' : '-');
        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' : '-');
        sb.append((caps & PROCESS_CAPABILITY_BFSL) != 0 ? 'F' : '-');
    }
    }


+1 −1
Original line number Original line Diff line number Diff line
@@ -528,7 +528,7 @@ public abstract class Context {


    /**
    /**
     * Flag for {@link #bindService}: allow the process hosting the target service to gain
     * 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.
     * to access network regardless of any power saving restrictions.
     *
     *
     * @hide
     * @hide
+25 −3
Original line number Original line Diff line number Diff line
@@ -475,8 +475,8 @@ public class NetworkPolicyManager {
     *
     *
     * @param uid The UID whose status needs to be checked.
     * @param uid The UID whose status needs to be checked.
     * @return {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED},
     * @return {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED},
     *         {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_ENABLED},
     *         {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_ENABLED},
     *         or {@link ConnectivityManager##RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote
     *         or {@link ConnectivityManager#RESTRICT_BACKGROUND_STATUS_WHITELISTED} to denote
     *         the current status of the UID.
     *         the current status of the UID.
     * @hide
     * @hide
     */
     */
@@ -768,6 +768,28 @@ public class NetworkPolicyManager {
        return string.toString();
        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
     * 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.
     * to access network when the device is idle or in battery saver mode. Otherwise, false.
@@ -784,7 +806,7 @@ public class NetworkPolicyManager {
    public static boolean isProcStateAllowedWhileIdleOrPowerSaveMode(
    public static boolean isProcStateAllowedWhileIdleOrPowerSaveMode(
            int procState, @ProcessCapability int capability) {
            int procState, @ProcessCapability int capability) {
        return procState <= FOREGROUND_THRESHOLD_STATE
        return procState <= FOREGROUND_THRESHOLD_STATE
                || (capability & ActivityManager.PROCESS_CAPABILITY_NETWORK) != 0;
                || (capability & ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0;
    }
    }


    /** @hide */
    /** @hide */
+2 −2
Original line number Original line Diff line number Diff line
@@ -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_CAMERA;
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION;
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_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.ActivityManagerInternal.ALLOW_NON_FULL;
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM;
import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM;
@@ -2014,7 +2014,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
        int mask = PROCESS_CAPABILITY_FOREGROUND_LOCATION
        int mask = PROCESS_CAPABILITY_FOREGROUND_LOCATION
                | PROCESS_CAPABILITY_FOREGROUND_CAMERA
                | PROCESS_CAPABILITY_FOREGROUND_CAMERA
                | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
                | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
                | PROCESS_CAPABILITY_NETWORK;
                | PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;


        while ((opt=getNextOption()) != null) {
        while ((opt=getNextOption()) != null) {
            if (opt.equals("--oom")) {
            if (opt.equals("--oom")) {
+19 −11
Original line number Original line Diff line number Diff line
@@ -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_CAMERA;
import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION;
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_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_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_FOREGROUND_SERVICE;
import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP;
import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP;
import static android.app.ActivityManager.PROCESS_STATE_CACHED_ACTIVITY;
import static android.app.ActivityManager.PROCESS_STATE_CACHED_ACTIVITY;
@@ -117,6 +117,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.ServiceInfo;
import android.net.NetworkPolicyManager;
import android.os.Handler;
import android.os.Handler;
import android.os.IBinder;
import android.os.IBinder;
import android.os.PowerManagerInternal;
import android.os.PowerManagerInternal;
@@ -2280,14 +2281,15 @@ public class OomAdjuster {
                        // elevated to a high enough procstate anyway to get network unless they
                        // elevated to a high enough procstate anyway to get network unless they
                        // request otherwise, so don't propagate the network capability by default
                        // request otherwise, so don't propagate the network capability by default
                        // in this case unless they explicitly request it.
                        // 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) {
                            if (clientProcState <= PROCESS_STATE_BOUND_FOREGROUND_SERVICE) {
                                // This is used to grant network access to Expedited Jobs.
                                // This is used to grant network access to Expedited Jobs.
                                if (cr.hasFlag(Context.BIND_BYPASS_POWER_NETWORK_RESTRICTIONS)) {
                                if (cr.hasFlag(Context.BIND_BYPASS_POWER_NETWORK_RESTRICTIONS)) {
                                    capability |= PROCESS_CAPABILITY_NETWORK;
                                    capability |= PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
                                }
                                }
                            } else {
                            } else {
                                capability |= PROCESS_CAPABILITY_NETWORK;
                                capability |= PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
                            }
                            }
                        }
                        }


@@ -2798,27 +2800,33 @@ public class OomAdjuster {
    }
    }


    private int getDefaultCapability(ProcessRecord app, int procState) {
    private int getDefaultCapability(ProcessRecord app, int procState) {
        final int networkCapabilities =
                NetworkPolicyManager.getDefaultProcessNetworkCapabilities(procState);
        final int baseCapabilities;
        switch (procState) {
        switch (procState) {
            case PROCESS_STATE_PERSISTENT:
            case PROCESS_STATE_PERSISTENT:
            case PROCESS_STATE_PERSISTENT_UI:
            case PROCESS_STATE_PERSISTENT_UI:
            case PROCESS_STATE_TOP:
            case PROCESS_STATE_TOP:
                return PROCESS_CAPABILITY_ALL; // BFSL allowed
                baseCapabilities = PROCESS_CAPABILITY_ALL; // BFSL allowed
                break;
            case PROCESS_STATE_BOUND_TOP:
            case PROCESS_STATE_BOUND_TOP:
                return PROCESS_CAPABILITY_NETWORK | PROCESS_CAPABILITY_BFSL;
                baseCapabilities = PROCESS_CAPABILITY_BFSL;
                break;
            case PROCESS_STATE_FOREGROUND_SERVICE:
            case PROCESS_STATE_FOREGROUND_SERVICE:
                if (app.getActiveInstrumentation() != null) {
                if (app.getActiveInstrumentation() != null) {
                    return PROCESS_CAPABILITY_ALL_IMPLICIT | PROCESS_CAPABILITY_NETWORK ;
                    baseCapabilities = PROCESS_CAPABILITY_ALL_IMPLICIT;
                } else {
                } else {
                    // Capability from foreground service is conditional depending on
                    // Capability from foreground service is conditional depending on
                    // foregroundServiceType in the manifest file and the
                    // foregroundServiceType in the manifest file and the
                    // mAllowWhileInUsePermissionInFgs flag.
                    // mAllowWhileInUsePermissionInFgs flag.
                    return PROCESS_CAPABILITY_NETWORK;
                    baseCapabilities = PROCESS_CAPABILITY_NONE;
                }
                }
            case PROCESS_STATE_BOUND_FOREGROUND_SERVICE:
                break;
                return PROCESS_CAPABILITY_NETWORK;
            default:
            default:
                return PROCESS_CAPABILITY_NONE;
                baseCapabilities = PROCESS_CAPABILITY_NONE;
                break;
        }
        }
        return baseCapabilities | networkCapabilities;
    }
    }


    /**
    /**
Loading