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

Commit a69280be authored by Kyunglyul Hyun's avatar Kyunglyul Hyun
Browse files

MediaRouter: Enable transfer for RCN case

Bug: 152950479
Test: Manually w/ support v7 demos, transfer a routing session
initiated by demo app via Output Switcher.

Change-Id: Ibd5d0a8ae46c71fbdd0f429888ae47ee40cde6f7
parent 05a6fd95
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -812,7 +812,7 @@ class MediaRouter2ServiceImpl {
            return;
        }

        // Can be null if the session is system's.
        // Can be null if the session is system's or RCN.
        RouterRecord routerRecord = managerRecord.mUserRecord.mHandler
                .findRouterforSessionLocked(uniqueSessionId);

@@ -833,7 +833,7 @@ class MediaRouter2ServiceImpl {
            return;
        }

        // Can be null if the session is system's.
        // Can be null if the session is system's or RCN.
        RouterRecord routerRecord = managerRecord.mUserRecord.mHandler
                .findRouterforSessionLocked(uniqueSessionId);

@@ -854,7 +854,7 @@ class MediaRouter2ServiceImpl {
            return;
        }

        // Can be null if the session is system's.
        // Can be null if the session is system's or RCN.
        RouterRecord routerRecord = managerRecord.mUserRecord.mHandler
                .findRouterforSessionLocked(uniqueSessionId);

@@ -1251,7 +1251,7 @@ class MediaRouter2ServiceImpl {
                    route.getOriginalId(), sessionHints);
        }

        // routerRecord can be null if the session is system's.
        // routerRecord can be null if the session is system's or RCN.
        private void selectRouteOnHandler(long uniqueRequestId, @Nullable RouterRecord routerRecord,
                @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
            if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
@@ -1269,7 +1269,7 @@ class MediaRouter2ServiceImpl {
                    route.getOriginalId());
        }

        // routerRecord can be null if the session is system's.
        // routerRecord can be null if the session is system's or RCN.
        private void deselectRouteOnHandler(long uniqueRequestId,
                @Nullable RouterRecord routerRecord,
                @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
@@ -1289,7 +1289,7 @@ class MediaRouter2ServiceImpl {
                    route.getOriginalId());
        }

        // routerRecord can be null if the session is system's.
        // routerRecord can be null if the session is system's or RCN.
        private void transferToRouteOnHandler(long uniqueRequestId,
                @Nullable RouterRecord routerRecord,
                @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
@@ -1308,6 +1308,8 @@ class MediaRouter2ServiceImpl {
                    route.getOriginalId());
        }

        // routerRecord is null if and only if the session is created without the request, which
        // includes the system's session and RCN cases.
        private boolean checkArgumentsForSessionControl(@Nullable RouterRecord routerRecord,
                @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route,
                @NonNull String description) {
@@ -1324,12 +1326,6 @@ class MediaRouter2ServiceImpl {
                return true;
            }

            //TODO(b/152950479): Handle RCN case.
            if (routerRecord == null) {
                Slog.w(TAG, "Ignoring " + description + " route from unknown router.");
                return false;
            }

            RouterRecord matchingRecord = mSessionToRouterMap.get(uniqueSessionId);
            if (matchingRecord != routerRecord) {
                Slog.w(TAG, "Ignoring " + description + " route from non-matching router. "