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

Commit c767408a 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...

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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17947145



Change-Id: I4742c422bc9305d0dc24039b84ce18b60dcf177a
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 2eafd3da 73b8912e
Loading
Loading
Loading
Loading
+2 −2
Original line number 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 public void alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName);
    method public long getTotalRam();
    method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) 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 getUidProcessCapabilities(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 static boolean isHighEndGfx();
    method @RequiresPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER) public void removeHomeVisibilityListener(@NonNull android.app.HomeVisibilityListener);
+15 −2
Original line number Diff line number Diff line
@@ -3710,10 +3710,16 @@ public class ActivityManager {
    /**
     * 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
     */
    @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) {
        try {
            return getService().getUidProcessState(uid, mContext.getOpPackageName());
@@ -3725,10 +3731,17 @@ public class ActivityManager {
    /**
     * 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
     */
    @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) {
        try {
            return getService().getUidProcessCapabilities(uid, mContext.getOpPackageName());
+4 −0
Original line number Diff line number Diff line
@@ -100,6 +100,8 @@ interface IActivityManager {
            String callingPackage);
    void unregisterUidObserver(in IUidObserver observer);
    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);
    @UnsupportedAppUsage
    int checkPermission(in String permission, int pid, int uid);
@@ -742,6 +744,8 @@ interface IActivityManager {
    /** Called by PendingIntent.queryIntentComponents() */
    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);

    /** Blocks until all broadcast queues become idle. */
+10 −0
Original line number Diff line number Diff line
@@ -7156,6 +7156,11 @@ public class ActivityManagerService extends IActivityManager.Stub
            enforceCallingPermission(android.Manifest.permission.PACKAGE_USAGE_STATS,
                    "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) {
            if (mPendingStartActivityUids.isPendingTopUid(uid)) {
@@ -7171,6 +7176,11 @@ public class ActivityManagerService extends IActivityManager.Stub
            enforceCallingPermission(android.Manifest.permission.PACKAGE_USAGE_STATS,
                    "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) {
            return mProcessList.getUidProcessCapabilityLOSP(uid);