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

Commit f6a55e1b authored by Kyunglyul Hyun's avatar Kyunglyul Hyun Committed by Android (Google) Code Review
Browse files

Merge "MediaRouter: make request id globally unique"

parents f122481e c7847244
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import android.media.IMediaRoute2ProviderClient;
oneway interface IMediaRoute2Provider {
    void setClient(IMediaRoute2ProviderClient client);
    void requestCreateSession(String packageName, String routeId,
            String controlCategory, int requestId);
            String controlCategory, long requestId);
    void releaseSession(int sessionId);

    void selectRoute(int sessionId, String routeId);
+1 −1
Original line number Diff line number Diff line
@@ -26,5 +26,5 @@ import android.os.Bundle;
 */
oneway interface IMediaRoute2ProviderClient {
    void updateProviderInfo(in MediaRoute2ProviderInfo info);
    void notifySessionCreated(in @nullable RouteSessionInfo sessionInfo, int requestId);
    void notifySessionCreated(in @nullable RouteSessionInfo sessionInfo, long requestId);
}
+6 −6
Original line number Diff line number Diff line
@@ -128,7 +128,7 @@ public abstract class MediaRoute2ProviderService extends Service {
     * session info changes.
     *
     * @param sessionInfo new session information
     * @see #notifySessionCreated(RouteSessionInfo, int)
     * @see #notifySessionCreated(RouteSessionInfo, long)
     */
    public final void updateSessionInfo(@NonNull RouteSessionInfo sessionInfo) {
        Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
@@ -159,7 +159,7 @@ public abstract class MediaRoute2ProviderService extends Service {
     * @param requestId id of the previous request to create this session
     */
    //TODO: fail reason?
    public final void notifySessionCreated(@Nullable RouteSessionInfo sessionInfo, int requestId) {
    public final void notifySessionCreated(@Nullable RouteSessionInfo sessionInfo, long requestId) {
        if (sessionInfo != null) {
            int sessionId = sessionInfo.getSessionId();
            synchronized (mSessionLock) {
@@ -203,10 +203,10 @@ public abstract class MediaRoute2ProviderService extends Service {
    /**
     * Called when a session should be created.
     * You should create and maintain your own session and notifies the client of
     * session info. Call {@link #notifySessionCreated(RouteSessionInfo, int)}
     * session info. Call {@link #notifySessionCreated(RouteSessionInfo, long)}
     * with the given {@code requestId} to notify the information of a new session.
     * If you can't create the session or want to reject the request, pass {@code null}
     * as session info in {@link #notifySessionCreated(RouteSessionInfo, int)}
     * as session info in {@link #notifySessionCreated(RouteSessionInfo, long)}
     * with the given {@code requestId}.
     *
     * @param packageName the package name of the application that selected the route
@@ -215,7 +215,7 @@ public abstract class MediaRoute2ProviderService extends Service {
     * @param requestId the id of this session creation request
     */
    public abstract void onCreateSession(@NonNull String packageName, @NonNull String routeId,
            @NonNull String controlCategory, int requestId);
            @NonNull String controlCategory, long requestId);

    /**
     * Called when a session is about to be destroyed.
@@ -308,7 +308,7 @@ public abstract class MediaRoute2ProviderService extends Service {

        @Override
        public void requestCreateSession(String packageName, String routeId,
                String controlCategory, int requestId) {
                String controlCategory, long requestId) {
            if (!checkCallerisSystem()) {
                return;
            }
+1 −4
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.text.TextUtils;
@@ -344,9 +343,7 @@ public class MediaRouter2 {
        // TODO: Check the route supports the given controlCategory

        final int requestId;
        // TODO: This does not ensure the uniqueness of the request ID.
        //       Find the way to ensure it. (e.g. have mapping inside MediaRouterService)
        requestId = Process.myPid() * 10000 + mSessionCreationRequestCnt.getAndIncrement();
        requestId = mSessionCreationRequestCnt.getAndIncrement();

        SessionCreationRequest request = new SessionCreationRequest(
                requestId, route, controlCategory);
+6 −3
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.os.Handler;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.text.TextUtils;
@@ -176,6 +175,11 @@ public class MediaRouter2Manager {
        return routes;
    }

    @NonNull
    public List<RouteSessionInfo> getRouteSessions() {
        return Collections.emptyList();
    }

    /**
     * Gets the list of routes that are actively used by {@link MediaRouter2}.
     */
@@ -220,8 +224,7 @@ public class MediaRouter2Manager {
        }
        if (client != null) {
            try {
                //TODO: make request id globally unique
                int requestId = Process.myPid() * 10000 + mNextRequestId.getAndIncrement();
                int requestId = mNextRequestId.getAndIncrement();
                mMediaRouterService.requestCreateClientSession(
                        client, packageName, route, requestId);
            } catch (RemoteException ex) {
Loading