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

Commit 3f4fcd0a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "session2Token"

* changes:
  Revert "Remove MediaController2 usages in MediaSessionServiceImpl"
  Revert "Ensure that framework does not refer MediaSession2 related code"
parents 5380a5ad ff36c482
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -27524,7 +27524,6 @@ 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);
  }
+0 −9
Original line number Diff line number Diff line
@@ -3489,15 +3489,6 @@ 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);
+1 −2
Original line number Diff line number Diff line
@@ -24,8 +24,7 @@ class MediaConstants {
    static final String KEY_PACKAGE_NAME = "android.media.key.PACKAGE_NAME";

    // Bundle key for Parcelable
    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_SESSION2LINK = "android.media.key.SESSION2LINK";
    static final String KEY_ALLOWED_COMMANDS = "android.media.key.ALLOWED_COMMANDS";
    static final String KEY_PLAYBACK_ACTIVE = "android.media.key.PLAYBACK_ACTIVE";

+6 −8
Original line number Diff line number Diff line
@@ -20,11 +20,9 @@ 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_SESSION2_LINK;
import static android.media.MediaConstants.KEY_SESSION2_TOKEN;
import static android.media.MediaConstants.KEY_SESSION2LINK;
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;
@@ -262,8 +260,7 @@ public class MediaController2 implements AutoCloseable {

    // Called by Controller2Link.onConnected
    void onConnected(int seq, Bundle connectionResult) {
        Session2Token token = connectionResult.getParcelable(KEY_SESSION2_TOKEN);
        Session2Link sessionBinder = token.getExtras().getParcelable(KEY_SESSION2_LINK);
        Session2Link sessionBinder = connectionResult.getParcelable(KEY_SESSION2LINK);
        Session2CommandGroup allowedCommands =
                connectionResult.getParcelable(KEY_ALLOWED_COMMANDS);
        boolean playbackActive = connectionResult.getBoolean(KEY_PLAYBACK_ACTIVE);
@@ -284,7 +281,8 @@ 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 = token;
            mConnectedToken = new Session2Token(mSessionToken.getUid(), TYPE_SESSION,
                    mSessionToken.getPackageName(), sessionBinder);
        }
        mCallbackExecutor.execute(() -> {
            mCallback.onConnected(MediaController2.this, allowedCommands);
@@ -355,7 +353,7 @@ public class MediaController2 implements AutoCloseable {
    }

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

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

        // Use bindService() instead of startForegroundService() to start session service for three
+6 −9
Original line number Diff line number Diff line
@@ -20,10 +20,10 @@ 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_SESSION2_LINK;
import static android.media.MediaConstants.KEY_SESSION2_TOKEN;
import static android.media.MediaConstants.KEY_SESSION2LINK;
import static android.media.Session2Command.RESULT_ERROR_UNKNOWN_ERROR;
import static android.media.Session2Command.RESULT_INFO_SKIPPED;
import static android.media.Session2Token.TYPE_SESSION;

import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -34,6 +34,7 @@ import android.media.session.MediaSessionManager;
import android.media.session.MediaSessionManager.RemoteUserInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Process;
import android.os.ResultReceiver;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -107,10 +108,8 @@ public class MediaSession2 implements AutoCloseable {
        mCallbackExecutor = callbackExecutor;
        mCallback = callback;
        mSessionStub = new Session2Link(this);

        Bundle extras = new Bundle();
        extras.putParcelable(KEY_SESSION2_LINK, mSessionStub);
        mSessionToken = new Session2Token(context, id, extras);
        mSessionToken = new Session2Token(Process.myUid(), TYPE_SESSION, context.getPackageName(),
                mSessionStub);
        mSessionManager = (MediaSessionManager) mContext.getSystemService(
                Context.MEDIA_SESSION_SERVICE);
        // NOTE: mResultHandler uses main looper, so this MUST NOT be blocked.
@@ -142,8 +141,6 @@ public class MediaSession2 implements AutoCloseable {
            for (ControllerInfo info : controllerInfos) {
                info.notifyDisconnected();
            }
            mSessionToken.destroy();
            mSessionManager.notifySession2Destroyed(mSessionToken);
        } catch (Exception e) {
            // Should not be here.
        }
@@ -331,7 +328,7 @@ public class MediaSession2 implements AutoCloseable {
                // It's needed because we cannot call synchronous calls between
                // session/controller.
                Bundle connectionResult = new Bundle();
                connectionResult.putParcelable(KEY_SESSION2_TOKEN, mSessionToken);
                connectionResult.putParcelable(KEY_SESSION2LINK, mSessionStub);
                connectionResult.putParcelable(KEY_ALLOWED_COMMANDS,
                        controllerInfo.mAllowedCommands);
                connectionResult.putBoolean(KEY_PLAYBACK_ACTIVE, isPlaybackActive());
Loading