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

Commit a9b237ea authored by tanaykhemani's avatar tanaykhemani
Browse files

Pass RoutingChangeInfo to MediaRouterEventReported

Bug: 437813009
Test: atest InfoMediaManagerTest
Test: atest MediaRouterMetricLoggerTest
Test: atest MediaSwitchingControllerTest
Flag: EXEMPT metric only change
Change-Id: I8d2c5a34fecdccb8e2ebbc100e3902943f34ef78
parent d914b146
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
@@ -2219,6 +2219,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.");
@@ -2237,7 +2248,7 @@ public final class MediaRouter2 {
                return;
            }

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

        /**
@@ -2258,6 +2269,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.");
@@ -2276,7 +2298,7 @@ public final class MediaRouter2 {
                return;
            }

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

        /**
@@ -2809,9 +2831,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,
@@ -3345,7 +3373,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");

@@ -3362,7 +3393,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();
            }
@@ -3380,7 +3411,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");

@@ -3396,8 +3430,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();
            }
@@ -4131,14 +4170,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);
                }
@@ -4146,14 +4195,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