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

Commit 7969f77f authored by Hyundo Moon's avatar Hyundo Moon
Browse files

Remove SessionCallbackLink

Bug: 129037153
Test: atest CtsMediaTestCases:android.media.cts.MediaSessionTest;
      atest CtsMediaTestCases:android.media.cts.MediaControllerTest;
      atest CtsMediaTestCases:android.media.cts.MediaBrowserTest;
      atest CtsMediaTestCases:android.media.cts.MediaSessionManagerTest;
Change-Id: I79cd69854fce2448544fd517c1af7d7321df6a79
parent 05591aea
Loading
Loading
Loading
Loading
+25 −25
Original line number Diff line number Diff line
@@ -26,48 +26,48 @@ import android.os.ResultReceiver;
 * @hide
 */
oneway interface ISessionCallback {
    void notifyCommand(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void onCommand(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            String command, in Bundle args, in ResultReceiver cb);
    void notifyMediaButton(String packageName, int pid, int uid, in Intent mediaButtonIntent,
    void onMediaButton(String packageName, int pid, int uid, in Intent mediaButtonIntent,
            int sequenceNumber, in ResultReceiver cb);
    void notifyMediaButtonFromController(String packageName, int pid, int uid,
    void onMediaButtonFromController(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, in Intent mediaButtonIntent);

    // These callbacks are for the TransportPerformer
    void notifyPrepare(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void notifyPrepareFromMediaId(String packageName, int pid, int uid,
    // These callbacks are for the TransportControls
    void onPrepare(String packageName, int pid, int uid, in ControllerCallbackLink caller);
    void onPrepareFromMediaId(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, String mediaId, in Bundle extras);
    void notifyPrepareFromSearch(String packageName, int pid, int uid,
    void onPrepareFromSearch(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, String query, in Bundle extras);
    void notifyPrepareFromUri(String packageName, int pid, int uid,
    void onPrepareFromUri(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,
    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 notifyPlayFromSearch(String packageName, int pid, int uid,
    void onPlayFromSearch(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,
    void onPlayFromUri(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            in Uri uri, in Bundle extras);
    void notifySkipToTrack(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void onSkipToTrack(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            long id);
    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,
    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,
            long pos);
    void notifyRate(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void onRate(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            in Rating rating);
    void notifySetPlaybackSpeed(String packageName, int pid, int uid,
    void onSetPlaybackSpeed(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, float speed);
    void notifyCustomAction(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void onCustomAction(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            String action, in Bundle args);

    // These callbacks are for volume handling
    void notifyAdjustVolume(String packageName, int pid, int uid, in ControllerCallbackLink caller,
    void onAdjustVolume(String packageName, int pid, int uid, in ControllerCallbackLink caller,
            int direction);
    void notifySetVolumeTo(String packageName, int pid, int uid,
    void onSetVolumeTo(String packageName, int pid, int uid,
            in ControllerCallbackLink caller, int value);
}
+2 −2
Original line number Diff line number Diff line
@@ -23,9 +23,9 @@ 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.ISession2TokensListener;
import android.media.session.MediaSession;
import android.media.session.SessionCallbackLink;
import android.os.Bundle;
import android.view.KeyEvent;

@@ -34,7 +34,7 @@ import android.view.KeyEvent;
 * @hide
 */
interface ISessionManager {
    ISession createSession(String packageName, in SessionCallbackLink sessionCb, String tag,
    ISession createSession(String packageName, in ISessionCallback sessionCb, String tag,
            in Bundle sessionInfo, int userId);
    void notifySession2Created(in Session2Token sessionToken);
    List<MediaSession.Token> getSessions(in ComponentName compName, int userId);
+257 −2
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.view.ViewConfiguration;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
import java.util.List;
import java.util.Objects;

@@ -129,7 +130,7 @@ public final class MediaSession {
    private final Token mSessionToken;
    private final MediaController mController;
    private final ISession mBinder;
    private final SessionCallbackLink mCbStub;
    private final CallbackStub mCbStub;

    // Do not change the name of mCallback. Support lib accesses this by using reflection.
    @UnsupportedAppUsage
@@ -178,7 +179,7 @@ public final class MediaSession {
        }
        mMaxBitmapSize = context.getResources().getDimensionPixelSize(
                com.android.internal.R.dimen.config_mediaMetadataBitmapMaxSize);
        mCbStub = new SessionCallbackLink(context, this);
        mCbStub = new CallbackStub(this);
        MediaSessionManager manager = (MediaSessionManager) context
                .getSystemService(Context.MEDIA_SESSION_SERVICE);
        try {
@@ -1103,6 +1104,260 @@ public final class MediaSession {
        }
    }

    /**
     * @hide
     */
    public static class CallbackStub extends ISessionCallback.Stub {
        private WeakReference<MediaSession> mMediaSession;

        public CallbackStub(MediaSession session) {
            mMediaSession = new WeakReference<>(session);
        }

        private static RemoteUserInfo createRemoteUserInfo(String packageName, int pid, int uid) {
            return new RemoteUserInfo(packageName, pid, uid);
        }

        @Override
        public void onCommand(String packageName, int pid, int uid,
                ControllerCallbackLink caller, String command, Bundle args, ResultReceiver cb) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchCommand(createRemoteUserInfo(packageName, pid, uid),
                        command, args, cb);
            }
        }

        @Override
        public void onMediaButton(String packageName, int pid, int uid, Intent mediaButtonIntent,
                int sequenceNumber, ResultReceiver cb) {
            MediaSession session = mMediaSession.get();
            try {
                if (session != null) {
                    session.dispatchMediaButton(createRemoteUserInfo(packageName, pid, uid),
                            mediaButtonIntent);
                }
            } finally {
                if (cb != null) {
                    cb.send(sequenceNumber, null);
                }
            }
        }

        @Override
        public void onMediaButtonFromController(String packageName, int pid, int uid,
                ControllerCallbackLink caller, Intent mediaButtonIntent) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchMediaButton(createRemoteUserInfo(packageName, pid, uid),
                        mediaButtonIntent);
            }
        }

        @Override
        public void onPrepare(String packageName, int pid, int uid,
                ControllerCallbackLink caller) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchPrepare(createRemoteUserInfo(packageName, pid, uid));
            }
        }

        @Override
        public void onPrepareFromMediaId(String packageName, int pid, int uid,
                ControllerCallbackLink caller, String mediaId,
                Bundle extras) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchPrepareFromMediaId(
                        createRemoteUserInfo(packageName, pid, uid), mediaId, extras);
            }
        }

        @Override
        public void onPrepareFromSearch(String packageName, int pid, int uid,
                ControllerCallbackLink caller, String query,
                Bundle extras) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchPrepareFromSearch(
                        createRemoteUserInfo(packageName, pid, uid), query, extras);
            }
        }

        @Override
        public void onPrepareFromUri(String packageName, int pid, int uid,
                ControllerCallbackLink caller, Uri uri, Bundle extras) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchPrepareFromUri(createRemoteUserInfo(packageName, pid, uid),
                        uri, extras);
            }
        }

        @Override
        public void onPlay(String packageName, int pid, int uid,
                ControllerCallbackLink caller) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchPlay(createRemoteUserInfo(packageName, pid, uid));
            }
        }

        @Override
        public void onPlayFromMediaId(String packageName, int pid, int uid,
                ControllerCallbackLink caller, String mediaId,
                Bundle extras) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchPlayFromMediaId(createRemoteUserInfo(packageName, pid, uid),
                        mediaId, extras);
            }
        }

        @Override
        public void onPlayFromSearch(String packageName, int pid, int uid,
                ControllerCallbackLink caller, String query,
                Bundle extras) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchPlayFromSearch(createRemoteUserInfo(packageName, pid, uid),
                        query, extras);
            }
        }

        @Override
        public void onPlayFromUri(String packageName, int pid, int uid,
                ControllerCallbackLink caller, Uri uri, Bundle extras) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchPlayFromUri(createRemoteUserInfo(packageName, pid, uid),
                        uri, extras);
            }
        }

        @Override
        public void onSkipToTrack(String packageName, int pid, int uid,
                ControllerCallbackLink caller, long id) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchSkipToItem(createRemoteUserInfo(packageName, pid, uid), id);
            }
        }

        @Override
        public void onPause(String packageName, int pid, int uid,
                ControllerCallbackLink caller) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchPause(createRemoteUserInfo(packageName, pid, uid));
            }
        }

        @Override
        public void onStop(String packageName, int pid, int uid,
                ControllerCallbackLink caller) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchStop(createRemoteUserInfo(packageName, pid, uid));
            }
        }

        @Override
        public void onNext(String packageName, int pid, int uid,
                ControllerCallbackLink caller) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchNext(createRemoteUserInfo(packageName, pid, uid));
            }
        }

        @Override
        public void onPrevious(String packageName, int pid, int uid,
                ControllerCallbackLink caller) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchPrevious(createRemoteUserInfo(packageName, pid, uid));
            }
        }

        @Override
        public void onFastForward(String packageName, int pid, int uid,
                ControllerCallbackLink caller) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchFastForward(createRemoteUserInfo(packageName, pid, uid));
            }
        }

        @Override
        public void onRewind(String packageName, int pid, int uid,
                ControllerCallbackLink caller) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchRewind(createRemoteUserInfo(packageName, pid, uid));
            }
        }

        @Override
        public void onSeekTo(String packageName, int pid, int uid,
                ControllerCallbackLink caller, long pos) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchSeekTo(createRemoteUserInfo(packageName, pid, uid), pos);
            }
        }

        @Override
        public void onRate(String packageName, int pid, int uid, ControllerCallbackLink caller,
                Rating rating) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchRate(createRemoteUserInfo(packageName, pid, uid), rating);
            }
        }

        @Override
        public void onSetPlaybackSpeed(String packageName, int pid, int uid,
                ControllerCallbackLink caller, float speed) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchSetPlaybackSpeed(
                        createRemoteUserInfo(packageName, pid, uid), speed);
            }
        }

        @Override
        public void onCustomAction(String packageName, int pid, int uid,
                ControllerCallbackLink caller, String action, Bundle args) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchCustomAction(createRemoteUserInfo(packageName, pid, uid),
                        action, args);
            }
        }

        @Override
        public void onAdjustVolume(String packageName, int pid, int uid,
                ControllerCallbackLink caller, int direction) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchAdjustVolume(createRemoteUserInfo(packageName, pid, uid),
                        direction);
            }
        }

        @Override
        public void onSetVolumeTo(String packageName, int pid, int uid,
                ControllerCallbackLink caller, int value) {
            MediaSession session = mMediaSession.get();
            if (session != null) {
                session.dispatchSetVolumeTo(createRemoteUserInfo(packageName, pid, uid),
                        value);
            }
        }
    }

    /**
     * A single item that is part of the play queue. It contains a description
     * of the item and its id in the queue.
+1 −1
Original line number Diff line number Diff line
@@ -107,7 +107,7 @@ public final class MediaSessionManager {
     * @hide
     */
    @NonNull
    public ISession createSession(@NonNull SessionCallbackLink cbStub, @NonNull String tag,
    public ISession createSession(@NonNull MediaSession.CallbackStub cbStub, @NonNull String tag,
            @Nullable Bundle sessionInfo) {
        try {
            return mService.createSession(mContext.getPackageName(), cbStub, tag, sessionInfo,
+0 −18
Original line number Diff line number Diff line
/*
 * Copyright 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package android.media.session;

parcelable SessionCallbackLink;
Loading