summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hui Yu <huiyu@google.com> 2021-03-19 16:43:50 -0700
committer Hui Yu <huiyu@google.com> 2021-03-19 16:48:17 -0700
commit34519d4dcd26fffed7df2b58e4a6037e5f6f36b8 (patch)
tree30f26f7afc3af6b96f0dcdfd2b46932c25d86a35
parent6d65ee195a57838762ce16a2d43e94eb7b95fbce (diff)
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
-rw-r--r--services/core/java/com/android/server/am/ActiveServices.java4
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java6
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java10
3 files changed, 17 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 3c445ae4b667..643aa71524cf 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -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;
}
}
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
index e858fe1034b1..77cc0aeb4f27 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
@@ -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);
}
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 52d110c95e36..5f877d01c022 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -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