diff options
| author | 2023-05-18 22:53:24 +0000 | |
|---|---|---|
| committer | 2023-05-18 22:53:24 +0000 | |
| commit | aeab4855ef3a90d04a312680912ab5e5fb44dd80 (patch) | |
| tree | 8df4f180c4fbb83048ed4e65411d6b7c59c252df | |
| parent | 544eeb2eddcf4bf0a2c0dfe8022d4f3a9e732cce (diff) | |
| parent | be6ef6dc84a57d07d8135342472526c7be3fd6b9 (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.java | 17 | ||||
| -rw-r--r-- | services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java | 5 |
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; } |