summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jing Ji <jji@google.com> 2023-05-18 22:53:24 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-05-18 22:53:24 +0000
commitaeab4855ef3a90d04a312680912ab5e5fb44dd80 (patch)
tree8df4f180c4fbb83048ed4e65411d6b7c59c252df
parent544eeb2eddcf4bf0a2c0dfe8022d4f3a9e732cce (diff)
parentbe6ef6dc84a57d07d8135342472526c7be3fd6b9 (diff)
Merge "Track the media projection FGS types per UID" into udc-dev am: be6ef6dc84
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22816423 Change-Id: I7294731736d27e84194cbf3608e1ba511c03c415 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java17
-rw-r--r--services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java5
2 files changed, 13 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 74cf57d17826..3d02c96ae386 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -18341,16 +18341,17 @@ public class ActivityManagerService extends IActivityManager.Stub
@Override
public boolean hasRunningForegroundService(int uid, int foregroundServicetype) {
synchronized (ActivityManagerService.this) {
- return mProcessList.searchEachLruProcessesLOSP(true, app -> {
- if (app.uid != uid) {
- return null;
- }
-
+ final UidRecord uidRec = mProcessList.mActiveUids.get(uid);
+ if (uidRec == null) {
+ return false;
+ }
+ for (int i = uidRec.getNumOfProcs() - 1; i >= 0; i--) {
+ final ProcessRecord app = uidRec.getProcessRecordByIndex(i);
if ((app.mServices.containsAnyForegroundServiceTypes(foregroundServicetype))) {
- return Boolean.TRUE;
+ return true;
}
- return null;
- }) != null;
+ }
+ return false;
}
}
diff --git a/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java b/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java
index 38631c8ad1cf..a97126c4f311 100644
--- a/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java
+++ b/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java
@@ -232,7 +232,10 @@ public final class MediaProjectionManagerService extends SystemService
return;
}
- if ((serviceTypes & ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION) != 0) {
+ if (mActivityManagerInternal.hasRunningForegroundService(
+ uid, ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION)) {
+ // If there is any process within this UID running a FGS
+ // with the mediaProjection type, that's Okay.
return;
}