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

Commit 157eda76 authored by Tanay Khemani's avatar Tanay Khemani Committed by Android (Google) Code Review
Browse files

Merge "Pass RoutingChangeInfo to MediaRouterEventReported" into main

parents 239bfe03 a9b237ea
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -70,8 +70,10 @@ interface IMediaRouterService {
    void requestCreateSessionWithRouter2(IMediaRouter2 router, int requestId, long managerRequestId,
            in RoutingSessionInfo oldSession, in MediaRoute2Info route,
            in RoutingChangeInfo routingChangeInfo, in @nullable Bundle sessionHints);
    void selectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
    void deselectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
    void selectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route,
            in RoutingChangeInfo routingChangeInfo);
    void deselectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route,
            in RoutingChangeInfo routingChangeInfo);
    void transferToRouteWithRouter2(IMediaRouter2 router, String sessionId,
            in MediaRoute2Info route, in RoutingChangeInfo routingChangeInfo);
    void setSessionVolumeWithRouter2(IMediaRouter2 router, String sessionId, int volume);
@@ -96,9 +98,9 @@ interface IMediaRouterService {
            in RoutingSessionInfo oldSession, in RoutingChangeInfo routingChangeInfo,
            in @nullable MediaRoute2Info route);
    void selectRouteWithManager(IMediaRouter2Manager manager, int requestId,
            String sessionId, in MediaRoute2Info route);
            String sessionId, in MediaRoute2Info route, in RoutingChangeInfo routingChangeInfo);
    void deselectRouteWithManager(IMediaRouter2Manager manager, int requestId,
            String sessionId, in MediaRoute2Info route);
            String sessionId, in MediaRoute2Info route, in RoutingChangeInfo routingChangeInfo);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL)")
    void transferToRouteWithManager(IMediaRouter2Manager manager, int requestId,
            String sessionId, in MediaRoute2Info route,
+71 −12
Original line number Diff line number Diff line
@@ -2216,6 +2216,17 @@ public final class MediaRouter2 {
         * @see ControllerCallback#onControllerUpdated
         */
        public void selectRoute(@NonNull MediaRoute2Info route) {
            selectRoute(route, /* routingChangeInfo= */ null);
        }

        /**
         * Same as {@link #selectRoute(MediaRoute2Info)} but also takes {@link RoutingChangeInfo} as
         * a parameter for logging purposes.
         *
         * @hide
         */
        public void selectRoute(
                @NonNull MediaRoute2Info route, @Nullable RoutingChangeInfo routingChangeInfo) {
            Objects.requireNonNull(route, "route must not be null");
            if (isReleased()) {
                Log.w(TAG, "selectRoute: Called on released controller. Ignoring.");
@@ -2234,7 +2245,7 @@ public final class MediaRouter2 {
                return;
            }

            mImpl.selectRoute(route, getRoutingSessionInfo());
            mImpl.selectRoute(route, getRoutingSessionInfo(), routingChangeInfo);
        }

        /**
@@ -2255,6 +2266,17 @@ public final class MediaRouter2 {
         * @see ControllerCallback#onControllerUpdated
         */
        public void deselectRoute(@NonNull MediaRoute2Info route) {
            deselectRoute(route, /* routingChangeInfo= */ null);
        }

        /**
         * Same as {@link #deselectRoute(MediaRoute2Info)} but also takes {@link RoutingChangeInfo}
         * as a parameter for logging purposes.
         *
         * @hide
         */
        public void deselectRoute(
                @NonNull MediaRoute2Info route, RoutingChangeInfo routingChangeInfo) {
            Objects.requireNonNull(route, "route must not be null");
            if (isReleased()) {
                Log.w(TAG, "deselectRoute: called on released controller. Ignoring.");
@@ -2273,7 +2295,7 @@ public final class MediaRouter2 {
                return;
            }

            mImpl.deselectRoute(route, getRoutingSessionInfo());
            mImpl.deselectRoute(route, getRoutingSessionInfo(), routingChangeInfo);
        }

        /**
@@ -2806,9 +2828,15 @@ public final class MediaRouter2 {
        // RoutingController methods.
        void setSessionVolume(int volume, RoutingSessionInfo sessionInfo);

        void selectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo);
        void selectRoute(
                MediaRoute2Info route,
                RoutingSessionInfo sessionInfo,
                RoutingChangeInfo routingChangeInfo);

        void deselectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo);
        void deselectRoute(
                MediaRoute2Info route,
                RoutingSessionInfo sessionInfo,
                RoutingChangeInfo routingChangeInfo);

        void releaseSession(
                boolean shouldReleaseSession,
@@ -3342,7 +3370,10 @@ public final class MediaRouter2 {
         * @see RoutingSessionInfo#getSelectableRoutes()
         */
        @Override
        public void selectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo) {
        public void selectRoute(
                MediaRoute2Info route,
                RoutingSessionInfo sessionInfo,
                RoutingChangeInfo routingChangeInfo) {
            Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
            Objects.requireNonNull(route, "route must not be null");

@@ -3359,7 +3390,7 @@ public final class MediaRouter2 {
            try {
                int requestId = mNextRequestId.getAndIncrement();
                mMediaRouterService.selectRouteWithManager(
                        mClient, requestId, sessionInfo.getId(), route);
                        mClient, requestId, sessionInfo.getId(), route, routingChangeInfo);
            } catch (RemoteException ex) {
                throw ex.rethrowFromSystemServer();
            }
@@ -3377,7 +3408,10 @@ public final class MediaRouter2 {
         * @see RoutingSessionInfo#getDeselectableRoutes()
         */
        @Override
        public void deselectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo) {
        public void deselectRoute(
                MediaRoute2Info route,
                RoutingSessionInfo sessionInfo,
                RoutingChangeInfo routingChangeInfo) {
            Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
            Objects.requireNonNull(route, "route must not be null");

@@ -3393,8 +3427,13 @@ public final class MediaRouter2 {

            try {
                int requestId = mNextRequestId.getAndIncrement();
                if (routingChangeInfo == null) {
                    routingChangeInfo =
                            new RoutingChangeInfo(
                                    ENTRY_POINT_PROXY_ROUTER_UNSPECIFIED, /* isSuggested= */ false);
                }
                mMediaRouterService.deselectRouteWithManager(
                        mClient, requestId, sessionInfo.getId(), route);
                        mClient, requestId, sessionInfo.getId(), route, routingChangeInfo);
            } catch (RemoteException ex) {
                throw ex.rethrowFromSystemServer();
            }
@@ -4127,14 +4166,24 @@ public final class MediaRouter2 {
        }

        @Override
        public void selectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo) {
        public void selectRoute(
                MediaRoute2Info route,
                RoutingSessionInfo sessionInfo,
                RoutingChangeInfo routingChangeInfo) {
            MediaRouter2Stub stub;
            synchronized (mLock) {
                stub = mStub;
            }
            if (stub != null) {
                try {
                    mMediaRouterService.selectRouteWithRouter2(stub, sessionInfo.getId(), route);
                    if (routingChangeInfo == null) {
                        routingChangeInfo =
                                new RoutingChangeInfo(
                                        ENTRY_POINT_LOCAL_ROUTER_UNSPECIFIED,
                                        /* isSuggested= */ false);
                    }
                    mMediaRouterService.selectRouteWithRouter2(
                            stub, sessionInfo.getId(), route, routingChangeInfo);
                } catch (RemoteException ex) {
                    Log.e(TAG, "Unable to select route for session.", ex);
                }
@@ -4142,14 +4191,24 @@ public final class MediaRouter2 {
        }

        @Override
        public void deselectRoute(MediaRoute2Info route, RoutingSessionInfo sessionInfo) {
        public void deselectRoute(
                MediaRoute2Info route,
                RoutingSessionInfo sessionInfo,
                RoutingChangeInfo routingChangeInfo) {
            MediaRouter2Stub stub;
            synchronized (mLock) {
                stub = mStub;
            }
            if (stub != null) {
                try {
                    mMediaRouterService.deselectRouteWithRouter2(stub, sessionInfo.getId(), route);
                    if (routingChangeInfo == null) {
                        routingChangeInfo =
                                new RoutingChangeInfo(
                                        ENTRY_POINT_LOCAL_ROUTER_UNSPECIFIED,
                                        /* isSuggested= */ false);
                    }
                    mMediaRouterService.deselectRouteWithRouter2(
                            stub, sessionInfo.getId(), route, routingChangeInfo);
                } catch (RemoteException ex) {
                    Log.e(TAG, "Unable to deselect route from session.", ex);
                }
+9 −2
Original line number Diff line number Diff line
@@ -824,8 +824,12 @@ public final class MediaRouter2Manager {

        try {
            int requestId = mNextRequestId.getAndIncrement();
            RoutingChangeInfo routingChangeInfo =
                    new RoutingChangeInfo(
                            ENTRY_POINT_PROXY_ROUTER_UNSPECIFIED, /* isSuggested= */ false);

            mMediaRouterService.selectRouteWithManager(
                    mClient, requestId, sessionInfo.getId(), route);
                    mClient, requestId, sessionInfo.getId(), route, routingChangeInfo);
        } catch (RemoteException ex) {
            throw ex.rethrowFromSystemServer();
        }
@@ -863,8 +867,11 @@ public final class MediaRouter2Manager {

        try {
            int requestId = mNextRequestId.getAndIncrement();
            RoutingChangeInfo routingChangeInfo =
                    new RoutingChangeInfo(
                            ENTRY_POINT_PROXY_ROUTER_UNSPECIFIED, /* isSuggested= */ false);
            mMediaRouterService.deselectRouteWithManager(
                    mClient, requestId, sessionInfo.getId(), route);
                    mClient, requestId, sessionInfo.getId(), route, routingChangeInfo);
        } catch (RemoteException ex) {
            throw ex.rethrowFromSystemServer();
        }
+12 −6
Original line number Diff line number Diff line
@@ -231,10 +231,14 @@ public abstract class InfoMediaManager {
            @NonNull MediaRoute2Info route, @NonNull RoutingChangeInfo routingChangeInfo);

    protected abstract void selectRoute(
            @NonNull MediaRoute2Info route, @NonNull RoutingSessionInfo info);
            @NonNull MediaRoute2Info route,
            @NonNull RoutingSessionInfo info,
            @NonNull RoutingChangeInfo routingChangeInfo);

    protected abstract void deselectRoute(
            @NonNull MediaRoute2Info route, @NonNull RoutingSessionInfo info);
            @NonNull MediaRoute2Info route,
            @NonNull RoutingSessionInfo info,
            @NonNull RoutingChangeInfo routingChangeInfo);

    protected abstract void releaseSession(@NonNull RoutingSessionInfo sessionInfo);

@@ -440,9 +444,10 @@ public abstract class InfoMediaManager {
     * Add a MediaDevice to let it play current media.
     *
     * @param device MediaDevice
     * @param routingChangeInfo the invocation details of the media routing change.
     * @return If add device successful return {@code true}, otherwise return {@code false}
     */
    boolean addDeviceToPlayMedia(MediaDevice device) {
    boolean addDeviceToPlayMedia(MediaDevice device, RoutingChangeInfo routingChangeInfo) {
        Log.i(TAG, "addDeviceToPlayMedia(), device = " + device.getName() + "/" + device.getId());
        final RoutingSessionInfo info = getActiveRoutingSession();
        if (!info.getSelectableRoutes().contains(device.mRouteInfo.getId())) {
@@ -451,7 +456,7 @@ public abstract class InfoMediaManager {
            return false;
        }

        selectRoute(device.mRouteInfo, info);
        selectRoute(device.mRouteInfo, info, routingChangeInfo);
        return true;
    }

@@ -521,9 +526,10 @@ public abstract class InfoMediaManager {
     * Remove a {@code device} from current media.
     *
     * @param device MediaDevice
     * @param routingChangeInfo the invocation details of the media routing change.
     * @return If device stop successful return {@code true}, otherwise return {@code false}
     */
    boolean removeDeviceFromPlayMedia(MediaDevice device) {
    boolean removeDeviceFromPlayMedia(MediaDevice device, RoutingChangeInfo routingChangeInfo) {
        Log.i(TAG,
                "removeDeviceFromPlayMedia(), device = " + device.getName() + "/" + device.getId());
        final RoutingSessionInfo info = getActiveRoutingSession();
@@ -533,7 +539,7 @@ public abstract class InfoMediaManager {
            return false;
        }

        deselectRoute(device.mRouteInfo, info);
        deselectRoute(device.mRouteInfo, info, routingChangeInfo);
        return true;
    }

+9 −8
Original line number Diff line number Diff line
@@ -208,8 +208,7 @@ public class LocalMediaManager implements BluetoothCallback {
     * Connect the MediaDevice to transfer media
     *
     * @param connectDevice the MediaDevice
     * @param routingChangeInfo the invocation details of the connect device request. See {@link
     *     RoutingChangeInfo}
     * @param routingChangeInfo the invocation details of the connect device request.
     * @return {@code true} if successfully call, otherwise return {@code false}
     */
    public boolean connectDevice(
@@ -245,8 +244,7 @@ public class LocalMediaManager implements BluetoothCallback {
     * to attempt to discover the device.
     *
     * @param suggestion the suggested device to connect to.
     * @param routingChangeInfo the invocation details of the connect device request. See {@link
     *     RoutingChangeInfo}
     * @param routingChangeInfo the invocation details of the connect device request.
     */
    public void connectSuggestedDevice(
            @NonNull SuggestedDeviceState suggestion,
@@ -436,22 +434,25 @@ public class LocalMediaManager implements BluetoothCallback {
     * Add a MediaDevice to let it play current media.
     *
     * @param device MediaDevice
     * @param routingChangeInfo the invocation details of the media routing change.
     * @return If add device successful return {@code true}, otherwise return {@code false}
     */
    public boolean addDeviceToPlayMedia(MediaDevice device) {
    public boolean addDeviceToPlayMedia(MediaDevice device, RoutingChangeInfo routingChangeInfo) {
        mInfoMediaManager.setDeviceState(device, MediaDeviceState.STATE_GROUPING);
        return mInfoMediaManager.addDeviceToPlayMedia(device);
        return mInfoMediaManager.addDeviceToPlayMedia(device, routingChangeInfo);
    }

    /**
     * Remove a {@code device} from current media.
     *
     * @param device MediaDevice
     * @param routingChangeInfo the invocation details of the media routing change.
     * @return If device stop successful return {@code true}, otherwise return {@code false}
     */
    public boolean removeDeviceFromPlayMedia(MediaDevice device) {
    public boolean removeDeviceFromPlayMedia(
            MediaDevice device, RoutingChangeInfo routingChangeInfo) {
        mInfoMediaManager.setDeviceState(device, MediaDeviceState.STATE_GROUPING);
        return mInfoMediaManager.removeDeviceFromPlayMedia(device);
        return mInfoMediaManager.removeDeviceFromPlayMedia(device, routingChangeInfo);
    }

    /**
Loading