diff options
| author | 2023-12-22 11:28:49 +0000 | |
|---|---|---|
| committer | 2023-12-22 13:49:47 +0000 | |
| commit | e7153d97f4fcc7798a713dcec31c8db7424a7631 (patch) | |
| tree | b5211b3739b5cab70a88f3b13c69cfb750e59cc9 | |
| parent | d649dcafbb80c663f18116502403cf16c9c5203a (diff) | |
Dedup MediaSessionService foreground service handling code
Bug: 295518668
Test: atest CtsAppTestCases
Change-Id: Ied4b632bbb9cc38f06e5b8f05cc29d99f612a9c6
| -rw-r--r-- | services/core/java/com/android/server/media/MediaSessionService.java | 61 |
1 files changed, 16 insertions, 45 deletions
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java index d4666bac89eb..db39b5e24bbb 100644 --- a/services/core/java/com/android/server/media/MediaSessionService.java +++ b/services/core/java/com/android/server/media/MediaSessionService.java @@ -290,31 +290,12 @@ public class MediaSessionService extends SystemService implements Monitor { } user.mPriorityStack.onSessionActiveStateChanged(record); } - notifyActivityManagerWithActiveStateChanges(record, record.isActive()); + setForegroundServiceAllowance( + record, /* allowRunningInForeground= */ record.isActive()); mHandler.postSessionsChanged(record); } } - private void notifyActivityManagerWithActiveStateChanges( - MediaSessionRecordImpl record, boolean isActive) { - if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) { - return; - } - ForegroundServiceDelegationOptions foregroundServiceDelegationOptions = - record.getForegroundServiceDelegationOptions(); - if (foregroundServiceDelegationOptions == null) { - // This record doesn't support FGS delegation. In practice, this is MediaSession2. - return; - } - if (isActive) { - mActivityManagerInternal.startForegroundServiceDelegate( - foregroundServiceDelegationOptions, /* connection= */ null); - } else { - mActivityManagerInternal.stopForegroundServiceDelegate( - foregroundServiceDelegationOptions); - } - } - // Currently only media1 can become global priority session. void setGlobalPrioritySession(MediaSessionRecord record) { synchronized (mLock) { @@ -407,27 +388,10 @@ public class MediaSessionService extends SystemService implements Monitor { return; } user.mPriorityStack.onPlaybackStateChanged(record, shouldUpdatePriority); - notifyActivityManagerWithPlaybackStateChanges(record, playbackState); - } - } - - private void notifyActivityManagerWithPlaybackStateChanges( - MediaSessionRecordImpl record, PlaybackState playbackState) { - if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) { - return; - } - ForegroundServiceDelegationOptions foregroundServiceDelegationOptions = - record.getForegroundServiceDelegationOptions(); - if (foregroundServiceDelegationOptions == null || playbackState == null) { - // This record doesn't support FGS delegation. In practice, this is MediaSession2. - return; - } - if (playbackState.shouldAllowServiceToRunInForeground()) { - mActivityManagerInternal.startForegroundServiceDelegate( - foregroundServiceDelegationOptions, /* connection= */ null); - } else { - mActivityManagerInternal.stopForegroundServiceDelegate( - foregroundServiceDelegationOptions); + if (playbackState != null) { + setForegroundServiceAllowance( + record, playbackState.shouldAllowServiceToRunInForeground()); + } } } @@ -591,11 +555,12 @@ public class MediaSessionService extends SystemService implements Monitor { } session.close(); - notifyActivityManagerWithSessionDestroyed(session); + setForegroundServiceAllowance(session, /* allowRunningInForeground= */ false); mHandler.postSessionsChanged(session); } - private void notifyActivityManagerWithSessionDestroyed(MediaSessionRecordImpl record) { + private void setForegroundServiceAllowance( + MediaSessionRecordImpl record, boolean allowRunningInForeground) { if (!Flags.enableNotifyingActivityManagerWithMediaSessionStatusChange()) { return; } @@ -605,7 +570,13 @@ public class MediaSessionService extends SystemService implements Monitor { // This record doesn't support FGS delegation. In practice, this is MediaSession2. return; } - mActivityManagerInternal.stopForegroundServiceDelegate(foregroundServiceDelegationOptions); + if (allowRunningInForeground) { + mActivityManagerInternal.startForegroundServiceDelegate( + foregroundServiceDelegationOptions, /* connection= */ null); + } else { + mActivityManagerInternal.stopForegroundServiceDelegate( + foregroundServiceDelegationOptions); + } } void tempAllowlistTargetPkgIfPossible(int targetUid, String targetPackage, |