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

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

Introduce SessionCallbackLink

In order to avoid direct AIDL usages in framework, this CL introduces a
new public class SessionCallbackLink which can prevent usages of
ISessionCallback.

Bug: 122336924
Test: make update-api -j / make -j
      atest CtsMediaTestCases:android.media.cts.MediaSessionTest
      atest CtsMediaTestCases:android.media.cts.MediaControllerTest
Change-Id: I185d372335104067b6f4ed512fcd2f3b3925642f
parent 8cd0ae90
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -27370,6 +27370,36 @@ package android.media.session {
    method public android.media.session.PlaybackState.CustomAction.Builder setExtras(android.os.Bundle);
  }
  public final class SessionCallbackLink implements android.os.Parcelable {
    method public int describeContents();
    method public android.os.IBinder getBinder();
    method public void notifyAdjustVolume(java.lang.String, int, int, android.media.session.ControllerCallbackLink, int);
    method public void notifyCommand(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle, android.os.ResultReceiver);
    method public void notifyCustomAction(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle);
    method public void notifyFastForward(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
    method public void notifyMediaButton(java.lang.String, int, int, android.content.Intent, int, android.os.ResultReceiver);
    method public void notifyMediaButtonFromController(java.lang.String, int, int, android.media.session.ControllerCallbackLink, android.content.Intent);
    method public void notifyNext(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
    method public void notifyPause(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
    method public void notifyPlay(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
    method public void notifyPlayFromMediaId(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle);
    method public void notifyPlayFromSearch(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle);
    method public void notifyPlayFromUri(java.lang.String, int, int, android.media.session.ControllerCallbackLink, android.net.Uri, android.os.Bundle);
    method public void notifyPrepare(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
    method public void notifyPrepareFromMediaId(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle);
    method public void notifyPrepareFromSearch(java.lang.String, int, int, android.media.session.ControllerCallbackLink, java.lang.String, android.os.Bundle);
    method public void notifyPrepareFromUri(java.lang.String, int, int, android.media.session.ControllerCallbackLink, android.net.Uri, android.os.Bundle);
    method public void notifyPrevious(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
    method public void notifyRate(java.lang.String, int, int, android.media.session.ControllerCallbackLink, android.media.Rating);
    method public void notifyRewind(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
    method public void notifySeekTo(java.lang.String, int, int, android.media.session.ControllerCallbackLink, long);
    method public void notifySetVolumeTo(java.lang.String, int, int, android.media.session.ControllerCallbackLink, int);
    method public void notifySkipToTrack(java.lang.String, int, int, android.media.session.ControllerCallbackLink, long);
    method public void notifyStop(java.lang.String, int, int, android.media.session.ControllerCallbackLink);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.session.SessionCallbackLink> CREATOR;
  }
}
package android.media.tv {
+26 −26
Original line number Diff line number Diff line
@@ -26,46 +26,46 @@ import android.os.ResultReceiver;
 * @hide
 */
oneway interface ISessionCallback {
    void onCommand(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void notifyCommand(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            String command, in Bundle args, in ResultReceiver cb);
    void onMediaButton(String packageName, int pid, int uid, in Intent mediaButtonIntent,
    void notifyMediaButton(String packageName, int pid, int uid, in Intent mediaButtonIntent,
            int sequenceNumber, in ResultReceiver cb);
    void onMediaButtonFromController(String packageName, int pid, int uid,
    void notifyMediaButtonFromController(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, in Intent mediaButtonIntent);

    // These callbacks are for the TransportPerformer
    void onPrepare(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void onPrepareFromMediaId(String packageName, int pid, int uid,
    void notifyPrepare(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void notifyPrepareFromMediaId(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, String mediaId, in Bundle extras);
    void onPrepareFromSearch(String packageName, int pid, int uid,
    void notifyPrepareFromSearch(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, String query, in Bundle extras);
    void onPrepareFromUri(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            in Uri uri, in Bundle extras);
    void onPlay(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void onPlayFromMediaId(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            String mediaId, in Bundle extras);
    void onPlayFromSearch(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            String query, in Bundle extras);
    void onPlayFromUri(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void notifyPrepareFromUri(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, in Uri uri, in Bundle extras);
    void notifyPlay(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void notifyPlayFromMediaId(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, String mediaId, in Bundle extras);
    void notifyPlayFromSearch(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, String query, in Bundle extras);
    void notifyPlayFromUri(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            in Uri uri, in Bundle extras);
    void onSkipToTrack(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void notifySkipToTrack(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            long id);
    void onPause(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void onStop(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void onNext(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void onPrevious(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void onFastForward(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void onRewind(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void onSeekTo(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void notifyPause(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void notifyStop(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void notifyNext(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void notifyPrevious(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void notifyFastForward(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void notifyRewind(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void notifySeekTo(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            long pos);
    void onRate(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void notifyRate(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            in Rating rating);
    void onCustomAction(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void notifyCustomAction(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            String action, in Bundle args);

    // These callbacks are for volume handling
    void onAdjustVolume(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void notifyAdjustVolume(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            int direction);
    void onSetVolumeTo(String packageName, int pid, int uid,
    void notifySetVolumeTo(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, int value);
}
+2 −2
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ import android.media.session.ICallback;
import android.media.session.IOnMediaKeyListener;
import android.media.session.IOnVolumeKeyLongPressListener;
import android.media.session.ISession;
import android.media.session.ISessionCallback;
import android.media.session.SessionCallbackLink;
import android.os.Bundle;
import android.view.KeyEvent;

@@ -32,7 +32,7 @@ import android.view.KeyEvent;
 * @hide
 */
interface ISessionManager {
    ISession createSession(String packageName, in ISessionCallback cb, String tag, int userId);
    ISession createSession(String packageName, in SessionCallbackLink cb, String tag, int userId);
    void notifySession2Created(in Session2Token sessionToken);
    List<IBinder> getSessions(in ComponentName compName, int userId);
    void dispatchMediaKeyEvent(String packageName, boolean asSystemService, in KeyEvent keyEvent,
+3 −3
Original line number Diff line number Diff line
@@ -129,7 +129,7 @@ public final class MediaSession {
    private final MediaSession.Token mSessionToken;
    private final MediaController mController;
    private final ISession mBinder;
    private final CallbackStub mCbStub;
    private final SessionCallbackLink mCbStub;

    // Do not change the name of mCallback. Support lib accesses this by using reflection.
    @UnsupportedAppUsage
@@ -172,7 +172,7 @@ public final class MediaSession {
        }
        mMaxBitmapSize = context.getResources().getDimensionPixelSize(
                com.android.internal.R.dimen.config_mediaMetadataBitmapMaxSize);
        mCbStub = new CallbackStub(this);
        mCbStub = new SessionCallbackLink(new CallbackStub(this));
        MediaSessionManager manager = (MediaSessionManager) context
                .getSystemService(Context.MEDIA_SESSION_SERVICE);
        try {
@@ -1062,7 +1062,7 @@ public final class MediaSession {
    /**
     * @hide
     */
    public static class CallbackStub extends ISessionCallback.Stub {
    public static final class CallbackStub extends SessionCallbackLink.CallbackStub {
        private WeakReference<MediaSession> mMediaSession;

        public CallbackStub(MediaSession session) {
+1 −1
Original line number Diff line number Diff line
@@ -98,7 +98,7 @@ public final class MediaSessionManager {
     * @return The binder object from the system
     * @hide
     */
    public @NonNull ISession createSession(@NonNull MediaSession.CallbackStub cbStub,
    public @NonNull ISession createSession(@NonNull SessionCallbackLink cbStub,
            @NonNull String tag, int userId) throws RemoteException {
        return mService.createSession(mContext.getPackageName(), cbStub, tag, userId);
    }
Loading