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

Commit 2809f8fe authored by Hyundo Moon's avatar Hyundo Moon Committed by Android (Google) Code Review
Browse files

Merge "Remove SessionCallbackLink"

parents d5989765 7969f77f
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