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

Commit 34519d4d authored by Hui Yu's avatar Hui Yu
Browse files

Call ActivityTaskManagerService's version of hasSystemAlertWindowPermission().

Which checks both AppOps and PackageManager for SYSTEM_ALERT_WINDOW
permission.

Bug: 182491885.
Test: atest cts/tests/app/src/android/app/cts/ActivityManagerFgsBgStartTest.java
Change-Id: I05c19e089bb2d5daa4c8819f009eca2aa0d44c2f
parent 6d65ee19
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -5623,8 +5623,8 @@ public final class ActiveServices {
        }

        if (ret == REASON_DENIED) {
            if (mAm.checkPermission(SYSTEM_ALERT_WINDOW, callingPid,
                    callingUid) == PERMISSION_GRANTED) {
            if (mAm.mAtmInternal.hasSystemAlertWindowPermission(callingUid, callingPid,
                    callingPackage)) {
                ret = REASON_SYSTEM_ALERT_WINDOW_PERMISSION;
            }
        }
+6 −0
Original line number Diff line number Diff line
@@ -606,4 +606,10 @@ public abstract class ActivityTaskManagerInternal {
         */
        void commit() throws RemoteException;
    }

    /**
     * A utility method to check AppOps and PackageManager for SYSTEM_ALERT_WINDOW permission.
     */
    public abstract boolean hasSystemAlertWindowPermission(int callingUid, int callingPid,
            String callingPackage);
}
+9 −1
Original line number Diff line number Diff line
@@ -932,7 +932,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        return getUserManager().hasUserRestriction(restriction, userId);
    }

    boolean hasSystemAlertWindowPermission(int callingUid, int callingPid, String callingPackage) {
    boolean hasSystemAlertWindowPermission(int callingUid, int callingPid,
            String callingPackage) {
        final int mode = getAppOpsManager().noteOpNoThrow(AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
                callingUid, callingPackage, /* featureId */ null, "");
        if (mode == AppOpsManager.MODE_DEFAULT) {
@@ -6369,6 +6370,13 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                return new PackageConfigurationUpdaterImpl(Binder.getCallingPid());
            }
        }

        @Override
        public boolean hasSystemAlertWindowPermission(int callingUid, int callingPid,
                String callingPackage) {
            return ActivityTaskManagerService.this.hasSystemAlertWindowPermission(callingUid,
                    callingPid, callingPackage);
        }
    }

    final class PackageConfigurationUpdaterImpl implements