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

Commit 16057c0a authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Automerger Merge Worker
Browse files

Merge "Verify INTERACT_ACROSS_USERS_FULL perm for cross-user calls." into tm-dev am: 5047c1ab

parents 34ad2b5f 5047c1ab
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -116,8 +116,8 @@ package android.app {
    method @RequiresPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER) public void addHomeVisibilityListener(@NonNull java.util.concurrent.Executor, @NonNull android.app.HomeVisibilityListener);
    method @RequiresPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER) public void addHomeVisibilityListener(@NonNull java.util.concurrent.Executor, @NonNull android.app.HomeVisibilityListener);
    method public void alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName);
    method public void alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName);
    method public long getTotalRam();
    method public long getTotalRam();
    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidProcessCapabilities(int);
    method @RequiresPermission(allOf={android.Manifest.permission.PACKAGE_USAGE_STATS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}, conditional=true) public int getUidProcessCapabilities(int);
    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidProcessState(int);
    method @RequiresPermission(allOf={android.Manifest.permission.PACKAGE_USAGE_STATS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}, conditional=true) public int getUidProcessState(int);
    method public void holdLock(android.os.IBinder, int);
    method public void holdLock(android.os.IBinder, int);
    method public static boolean isHighEndGfx();
    method public static boolean isHighEndGfx();
    method @RequiresPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER) public void removeHomeVisibilityListener(@NonNull android.app.HomeVisibilityListener);
    method @RequiresPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER) public void removeHomeVisibilityListener(@NonNull android.app.HomeVisibilityListener);
+15 −2
Original line number Original line Diff line number Diff line
@@ -3710,10 +3710,16 @@ public class ActivityManager {
    /**
    /**
     * Returns the process state of this uid.
     * Returns the process state of this uid.
     *
     *
     * If the caller does not hold {@link Manifest.permission#INTERACT_ACROSS_USERS_FULL}
     * permission, they can only query process state of UIDs running in the same user as the caller.
     *
     * @hide
     * @hide
     */
     */
    @TestApi
    @TestApi
    @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
    @RequiresPermission(allOf = {
            Manifest.permission.PACKAGE_USAGE_STATS,
            Manifest.permission.INTERACT_ACROSS_USERS_FULL
    }, conditional = true)
    public int getUidProcessState(int uid) {
    public int getUidProcessState(int uid) {
        try {
        try {
            return getService().getUidProcessState(uid, mContext.getOpPackageName());
            return getService().getUidProcessState(uid, mContext.getOpPackageName());
@@ -3725,10 +3731,17 @@ public class ActivityManager {
    /**
    /**
     * Returns the process capability of this uid.
     * Returns the process capability of this uid.
     *
     *
     * If the caller does not hold {@link Manifest.permission#INTERACT_ACROSS_USERS_FULL}
     * permission, they can only query process capabilities of UIDs running in the same user
     * as the caller.
     *
     * @hide
     * @hide
     */
     */
    @TestApi
    @TestApi
    @RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
    @RequiresPermission(allOf = {
            Manifest.permission.PACKAGE_USAGE_STATS,
            Manifest.permission.INTERACT_ACROSS_USERS_FULL
    }, conditional = true)
    public @ProcessCapability int getUidProcessCapabilities(int uid) {
    public @ProcessCapability int getUidProcessCapabilities(int uid) {
        try {
        try {
            return getService().getUidProcessCapabilities(uid, mContext.getOpPackageName());
            return getService().getUidProcessCapabilities(uid, mContext.getOpPackageName());
+4 −0
Original line number Original line Diff line number Diff line
@@ -100,6 +100,8 @@ interface IActivityManager {
            String callingPackage);
            String callingPackage);
    void unregisterUidObserver(in IUidObserver observer);
    void unregisterUidObserver(in IUidObserver observer);
    boolean isUidActive(int uid, String callingPackage);
    boolean isUidActive(int uid, String callingPackage);
    @JavaPassthrough(annotation=
            "@android.annotation.RequiresPermission(allOf = {android.Manifest.permission.PACKAGE_USAGE_STATS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}, conditional = true)")
    int getUidProcessState(int uid, in String callingPackage);
    int getUidProcessState(int uid, in String callingPackage);
    @UnsupportedAppUsage
    @UnsupportedAppUsage
    int checkPermission(in String permission, int pid, int uid);
    int checkPermission(in String permission, int pid, int uid);
@@ -742,6 +744,8 @@ interface IActivityManager {
    /** Called by PendingIntent.queryIntentComponents() */
    /** Called by PendingIntent.queryIntentComponents() */
    ParceledListSlice queryIntentComponentsForIntentSender(in IIntentSender sender, int matchFlags);
    ParceledListSlice queryIntentComponentsForIntentSender(in IIntentSender sender, int matchFlags);


    @JavaPassthrough(annotation=
            "@android.annotation.RequiresPermission(allOf = {android.Manifest.permission.PACKAGE_USAGE_STATS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}, conditional = true)")
    int getUidProcessCapabilities(int uid, in String callingPackage);
    int getUidProcessCapabilities(int uid, in String callingPackage);


    /** Blocks until all broadcast queues become idle. */
    /** Blocks until all broadcast queues become idle. */
+10 −0
Original line number Original line Diff line number Diff line
@@ -7166,6 +7166,11 @@ public class ActivityManagerService extends IActivityManager.Stub
            enforceCallingPermission(android.Manifest.permission.PACKAGE_USAGE_STATS,
            enforceCallingPermission(android.Manifest.permission.PACKAGE_USAGE_STATS,
                    "getUidProcessState");
                    "getUidProcessState");
        }
        }
        // In case the caller is requesting processState of an app in a different user,
        // then verify the caller has INTERACT_ACROSS_USERS_FULL permission
        mUserController.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
                UserHandle.getUserId(uid), false /* allowAll */, ALLOW_FULL_ONLY,
                "getUidProcessState", callingPackage); // Ignore return value
        synchronized (mProcLock) {
        synchronized (mProcLock) {
            if (mPendingStartActivityUids.isPendingTopUid(uid)) {
            if (mPendingStartActivityUids.isPendingTopUid(uid)) {
@@ -7181,6 +7186,11 @@ public class ActivityManagerService extends IActivityManager.Stub
            enforceCallingPermission(android.Manifest.permission.PACKAGE_USAGE_STATS,
            enforceCallingPermission(android.Manifest.permission.PACKAGE_USAGE_STATS,
                    "getUidProcessState");
                    "getUidProcessState");
        }
        }
        // In case the caller is requesting processCapabilities of an app in a different user,
        // then verify the caller has INTERACT_ACROSS_USERS_FULL permission
        mUserController.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
                UserHandle.getUserId(uid), false /* allowAll */, ALLOW_FULL_ONLY,
                "getUidProcessCapabilities", callingPackage); // Ignore return value
        synchronized (mProcLock) {
        synchronized (mProcLock) {
            return mProcessList.getUidProcessCapabilityLOSP(uid);
            return mProcessList.getUidProcessCapabilityLOSP(uid);