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

Commit c1e4316e authored by Hyundo Moon's avatar Hyundo Moon
Browse files

Remove MediaController2 usages in MediaSessionServiceImpl

Bug: 123336670
Test: Passed below tests
      MediaSessionManagerTest#testNotifySession2Created/Destroyed*
Change-Id: I25a20bf9e8a78920f2219d22b81b899af665ed32
parent 1ea41481
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -25936,7 +25936,6 @@ package android.media {
    method @NonNull public abstract android.media.MediaSession2 onGetPrimarySession();
    method @Nullable public abstract android.media.MediaSession2Service.MediaNotification onUpdateNotification(@NonNull android.media.MediaSession2);
    method public final void removeSession(@NonNull android.media.MediaSession2);
    field public static final String SERVICE_INTERFACE = "android.media.MediaSession2Service";
  }
  public static class MediaSession2Service.MediaNotification {
@@ -27459,6 +27458,7 @@ package android.media.session {
    method @NonNull public java.util.List<android.media.Session2Token> getSession2Tokens();
    method public boolean isTrustedForMediaControl(@NonNull android.media.session.MediaSessionManager.RemoteUserInfo);
    method public void notifySession2Created(@NonNull android.media.Session2Token);
    method public void notifySession2Destroyed(@NonNull android.media.Session2Token);
    method public void removeOnActiveSessionsChangedListener(@NonNull android.media.session.MediaSessionManager.OnActiveSessionsChangedListener);
    method public void removeOnSession2TokensChangedListener(@NonNull android.media.session.MediaSessionManager.OnSession2TokensChangedListener);
  }
+9 −0
Original line number Diff line number Diff line
@@ -3381,6 +3381,15 @@ package android.media {
    method public void stop();
  }
  public final class Session2Token implements android.os.Parcelable {
    ctor public Session2Token(@NonNull android.content.Context, @NonNull String, @Nullable android.os.Bundle);
    method public void destroy();
    method @NonNull public android.os.Bundle getExtras();
    method public int getPid();
    method public boolean isDestroyed();
    field public static final String SESSION_SERVICE_INTERFACE = "android.media.MediaSession2Service";
  }
  public static class SubtitleData.Builder {
    ctor public SubtitleData.Builder();
    ctor public SubtitleData.Builder(@NonNull android.media.SubtitleData);
+0 −1
Original line number Diff line number Diff line
@@ -132,7 +132,6 @@ filegroup {
        "apex/java/android/media/Session2Command.java",
        "apex/java/android/media/Session2CommandGroup.java",
        "apex/java/android/media/Session2Link.java",
        "apex/java/android/media/Session2Token.java",
    ],
}

+2 −1
Original line number Diff line number Diff line
@@ -24,7 +24,8 @@ class MediaConstants {
    static final String KEY_PACKAGE_NAME = "android.media.key.PACKAGE_NAME";

    // Bundle key for Parcelable
    static final String KEY_SESSION2LINK = "android.media.key.SESSION2LINK";
    static final String KEY_SESSION2_TOKEN = "android.media.key.SESSION2_TOKEN";
    static final String KEY_SESSION2_LINK = "android.media.key.SESSION2_LINK";
    static final String KEY_ALLOWED_COMMANDS = "android.media.key.ALLOWED_COMMANDS";
    static final String KEY_PLAYBACK_ACTIVE = "android.media.key.PLAYBACK_ACTIVE";

+8 −6
Original line number Diff line number Diff line
@@ -20,9 +20,11 @@ import static android.media.MediaConstants.KEY_ALLOWED_COMMANDS;
import static android.media.MediaConstants.KEY_PACKAGE_NAME;
import static android.media.MediaConstants.KEY_PID;
import static android.media.MediaConstants.KEY_PLAYBACK_ACTIVE;
import static android.media.MediaConstants.KEY_SESSION2LINK;
import static android.media.MediaConstants.KEY_SESSION2_LINK;
import static android.media.MediaConstants.KEY_SESSION2_TOKEN;
import static android.media.Session2Command.RESULT_ERROR_UNKNOWN_ERROR;
import static android.media.Session2Command.RESULT_INFO_SKIPPED;
import static android.media.Session2Token.SESSION_SERVICE_INTERFACE;
import static android.media.Session2Token.TYPE_SESSION;

import android.annotation.NonNull;
@@ -260,7 +262,8 @@ public class MediaController2 implements AutoCloseable {

    // Called by Controller2Link.onConnected
    void onConnected(int seq, Bundle connectionResult) {
        Session2Link sessionBinder = connectionResult.getParcelable(KEY_SESSION2LINK);
        Session2Token token = connectionResult.getParcelable(KEY_SESSION2_TOKEN);
        Session2Link sessionBinder = token.getExtras().getParcelable(KEY_SESSION2_LINK);
        Session2CommandGroup allowedCommands =
                connectionResult.getParcelable(KEY_ALLOWED_COMMANDS);
        boolean playbackActive = connectionResult.getBoolean(KEY_PLAYBACK_ACTIVE);
@@ -281,8 +284,7 @@ public class MediaController2 implements AutoCloseable {
            // Implementation for the local binder is no-op,
            // so can be used without worrying about deadlock.
            sessionBinder.linkToDeath(mDeathRecipient, 0);
            mConnectedToken = new Session2Token(mSessionToken.getUid(), TYPE_SESSION,
                    mSessionToken.getPackageName(), sessionBinder);
            mConnectedToken = token;
        }
        mCallbackExecutor.execute(() -> {
            mCallback.onConnected(MediaController2.this, allowedCommands);
@@ -353,7 +355,7 @@ public class MediaController2 implements AutoCloseable {
    }

    private boolean requestConnectToSession() {
        Session2Link sessionBinder = mSessionToken.getSessionLink();
        Session2Link sessionBinder = mSessionToken.getExtras().getParcelable(KEY_SESSION2_LINK);
        Bundle connectionRequest = createConnectionRequest();
        try {
            sessionBinder.connect(mControllerStub, getNextSeqNumber(), connectionRequest);
@@ -366,7 +368,7 @@ public class MediaController2 implements AutoCloseable {

    private boolean requestConnectToService() {
        // Service. Needs to get fresh binder whenever connection is needed.
        final Intent intent = new Intent(MediaSession2Service.SERVICE_INTERFACE);
        final Intent intent = new Intent(SESSION_SERVICE_INTERFACE);
        intent.setClassName(mSessionToken.getPackageName(), mSessionToken.getServiceName());

        // Use bindService() instead of startForegroundService() to start session service for three
Loading