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

Commit 6513017a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "MediaRouter: Rename requestID with uniqueRequestId" into rvc-dev am:...

Merge "MediaRouter: Rename requestID with uniqueRequestId" into rvc-dev am: 370d6454 am: 9ec5c54f am: f36c650c

Change-Id: I3f5f3a690b3107b56546580ccf44c72ec220c239
parents 79eb618d f36c650c
Loading
Loading
Loading
Loading
+45 −40
Original line number Diff line number Diff line
@@ -1114,9 +1114,9 @@ class MediaRouter2ServiceImpl {

        @Override
        public void onSessionCreated(@NonNull MediaRoute2Provider provider,
                long requestId, @NonNull RoutingSessionInfo sessionInfo) {
                long uniqueRequestId, @NonNull RoutingSessionInfo sessionInfo) {
            sendMessage(PooledLambda.obtainMessage(UserHandler::onSessionCreatedOnHandler,
                    this, provider, requestId, sessionInfo));
                    this, provider, uniqueRequestId, sessionInfo));
        }


@@ -1135,10 +1135,10 @@ class MediaRouter2ServiceImpl {
        }

        @Override
        public void onRequestFailed(@NonNull MediaRoute2Provider provider, long requestId,
        public void onRequestFailed(@NonNull MediaRoute2Provider provider, long uniqueRequestId,
                int reason) {
            sendMessage(PooledLambda.obtainMessage(UserHandler::onRequestFailedOnHandler,
                    this, provider, requestId, reason));
                    this, provider, uniqueRequestId, reason));
        }

        @Nullable
@@ -1229,7 +1229,7 @@ class MediaRouter2ServiceImpl {
            return -1;
        }

        private void requestCreateSessionOnHandler(long requestId,
        private void requestCreateSessionOnHandler(long uniqueRequestId,
                @NonNull RouterRecord routerRecord, @Nullable ManagerRecord managerRecord,
                @NonNull MediaRoute2Info route, @Nullable Bundle sessionHints) {

@@ -1237,20 +1237,21 @@ class MediaRouter2ServiceImpl {
            if (provider == null) {
                Slog.w(TAG, "Ignoring session creation request since no provider found for"
                        + " given route=" + route);
                notifySessionCreationFailedToRouter(routerRecord, toOriginalRequestId(requestId));
                notifySessionCreationFailedToRouter(routerRecord,
                        toOriginalRequestId(uniqueRequestId));
                return;
            }

            SessionCreationRequest request =
                    new SessionCreationRequest(routerRecord, requestId, route, managerRecord);
                    new SessionCreationRequest(routerRecord, uniqueRequestId, route, managerRecord);
            mSessionCreationRequests.add(request);

            provider.requestCreateSession(requestId, routerRecord.mPackageName,
            provider.requestCreateSession(uniqueRequestId, routerRecord.mPackageName,
                    route.getOriginalId(), sessionHints);
        }

        // routerRecord can be null if the session is system's.
        private void selectRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord,
        private void selectRouteOnHandler(long uniqueRequestId, @Nullable RouterRecord routerRecord,
                @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
            if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
                    "selecting")) {
@@ -1263,11 +1264,13 @@ class MediaRouter2ServiceImpl {
            if (provider == null) {
                return;
            }
            provider.selectRoute(requestId, getOriginalId(uniqueSessionId), route.getOriginalId());
            provider.selectRoute(uniqueRequestId, getOriginalId(uniqueSessionId),
                    route.getOriginalId());
        }

        // routerRecord can be null if the session is system's.
        private void deselectRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord,
        private void deselectRouteOnHandler(long uniqueRequestId,
                @Nullable RouterRecord routerRecord,
                @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
            if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
                    "deselecting")) {
@@ -1281,12 +1284,13 @@ class MediaRouter2ServiceImpl {
                return;
            }

            provider.deselectRoute(requestId, getOriginalId(uniqueSessionId),
            provider.deselectRoute(uniqueRequestId, getOriginalId(uniqueSessionId),
                    route.getOriginalId());
        }

        // routerRecord can be null if the session is system's.
        private void transferToRouteOnHandler(long requestId, @Nullable RouterRecord routerRecord,
        private void transferToRouteOnHandler(long uniqueRequestId,
                @Nullable RouterRecord routerRecord,
                @NonNull String uniqueSessionId, @NonNull MediaRoute2Info route) {
            if (!checkArgumentsForSessionControl(routerRecord, uniqueSessionId, route,
                    "transferring to")) {
@@ -1299,7 +1303,7 @@ class MediaRouter2ServiceImpl {
            if (provider == null) {
                return;
            }
            provider.transferToRoute(requestId, getOriginalId(uniqueSessionId),
            provider.transferToRoute(uniqueRequestId, getOriginalId(uniqueSessionId),
                    route.getOriginalId());
        }

@@ -1342,25 +1346,25 @@ class MediaRouter2ServiceImpl {
            return true;
        }

        private void setRouteVolumeOnHandler(long requestId, @NonNull MediaRoute2Info route,
        private void setRouteVolumeOnHandler(long uniqueRequestId, @NonNull MediaRoute2Info route,
                int volume) {
            final MediaRoute2Provider provider = findProvider(route.getProviderId());
            if (provider == null) {
                Slog.w(TAG, "setRouteVolume: couldn't find provider for route=" + route);
                return;
            }
            provider.setRouteVolume(requestId, route.getOriginalId(), volume);
            provider.setRouteVolume(uniqueRequestId, route.getOriginalId(), volume);
        }

        private void setSessionVolumeOnHandler(long requestId, @NonNull String uniqueSessionId,
                int volume) {
        private void setSessionVolumeOnHandler(long uniqueRequestId,
                @NonNull String uniqueSessionId, int volume) {
            final MediaRoute2Provider provider = findProvider(getProviderId(uniqueSessionId));
            if (provider == null) {
                Slog.w(TAG, "setSessionVolume: couldn't find provider for session "
                        + "id=" + uniqueSessionId);
                return;
            }
            provider.setSessionVolume(requestId, getOriginalId(uniqueSessionId), volume);
            provider.setSessionVolume(uniqueRequestId, getOriginalId(uniqueSessionId), volume);
        }

        private void releaseSessionOnHandler(long uniqueRequestId,
@@ -1398,10 +1402,10 @@ class MediaRouter2ServiceImpl {
        }

        private void onSessionCreatedOnHandler(@NonNull MediaRoute2Provider provider,
                long requestId, @NonNull RoutingSessionInfo sessionInfo) {
                long uniqueRequestId, @NonNull RoutingSessionInfo sessionInfo) {
            notifySessionCreatedToManagers(getManagers(), sessionInfo);

            if (requestId == REQUEST_ID_NONE) {
            if (uniqueRequestId == REQUEST_ID_NONE) {
                // The session is created without any matching request.
                return;
            }
@@ -1409,7 +1413,7 @@ class MediaRouter2ServiceImpl {
            SessionCreationRequest matchingRequest = null;

            for (SessionCreationRequest request : mSessionCreationRequests) {
                if (request.mRequestId == requestId
                if (request.mUniqueRequestId == uniqueRequestId
                        && TextUtils.equals(
                                request.mRoute.getProviderId(), provider.getUniqueId())) {
                    matchingRequest = request;
@@ -1419,7 +1423,7 @@ class MediaRouter2ServiceImpl {

            if (matchingRequest == null) {
                Slog.w(TAG, "Ignoring session creation result for unknown request. "
                        + "requestId=" + requestId + ", sessionInfo=" + sessionInfo);
                        + "uniqueRequestId=" + uniqueRequestId + ", sessionInfo=" + sessionInfo);
                return;
            }

@@ -1428,7 +1432,7 @@ class MediaRouter2ServiceImpl {
            if (sessionInfo == null) {
                // Failed
                notifySessionCreationFailedToRouter(matchingRequest.mRouterRecord,
                        toOriginalRequestId(requestId));
                        toOriginalRequestId(uniqueRequestId));
                return;
            }

@@ -1438,15 +1442,15 @@ class MediaRouter2ServiceImpl {
            if (!sessionInfo.getSelectedRoutes().contains(originalRouteId)) {
                Slog.w(TAG, "Created session doesn't match the original request."
                        + " originalRouteId=" + originalRouteId
                        + ", requestId=" + requestId + ", sessionInfo=" + sessionInfo);
                        + ", uniqueRequestId=" + uniqueRequestId + ", sessionInfo=" + sessionInfo);
                notifySessionCreationFailedToRouter(matchingRequest.mRouterRecord,
                        toOriginalRequestId(requestId));
                        toOriginalRequestId(uniqueRequestId));
                return;
            }

            // Succeeded
            notifySessionCreatedToRouter(matchingRequest.mRouterRecord,
                    toOriginalRequestId(requestId), sessionInfo);
                    toOriginalRequestId(uniqueRequestId), sessionInfo);
            mSessionToRouterMap.put(sessionInfo.getId(), routerRecord);
        }

@@ -1487,16 +1491,16 @@ class MediaRouter2ServiceImpl {
        }

        private void onRequestFailedOnHandler(@NonNull MediaRoute2Provider provider,
                long requestId, int reason) {
            if (handleSessionCreationRequestFailed(provider, requestId, reason)) {
                long uniqueRequestId, int reason) {
            if (handleSessionCreationRequestFailed(provider, uniqueRequestId, reason)) {
                return;
            }

            final int requesterId = toRequesterId(requestId);
            final int requesterId = toRequesterId(uniqueRequestId);
            for (ManagerRecord manager : getManagerRecords()) {
                if (manager.mManagerId == requesterId) {
                    notifyRequestFailedToManager(
                            manager.mManager, toOriginalRequestId(requestId), reason);
                            manager.mManager, toOriginalRequestId(uniqueRequestId), reason);
                    return;
                }
            }
@@ -1505,16 +1509,17 @@ class MediaRouter2ServiceImpl {
            // TODO: Notify router too when the related callback is introduced.
        }

        // TODO: Find a way to prevent providers from notifying error on random requestId.
        // TODO: Find a way to prevent providers from notifying error on random uniqueRequestId.
        //       Solutions can be:
        //       1) Record the other type of requests too (not only session creation request)
        //       2) Throw exception on providers when they try to notify error on random requestId.
        //       2) Throw exception on providers when they try to notify error on
        //          random uniqueRequestId.
        private boolean handleSessionCreationRequestFailed(@NonNull MediaRoute2Provider provider,
                long requestId, int reason) {
                long uniqueRequestId, int reason) {
            // Check whether the failure is about creating a session
            SessionCreationRequest matchingRequest = null;
            for (SessionCreationRequest request : mSessionCreationRequests) {
                if (request.mRequestId == requestId && TextUtils.equals(
                if (request.mUniqueRequestId == uniqueRequestId && TextUtils.equals(
                        request.mRoute.getProviderId(), provider.getUniqueId())) {
                    matchingRequest = request;
                    break;
@@ -1532,10 +1537,10 @@ class MediaRouter2ServiceImpl {
            // The call should be made by either MediaRouter2 or MediaRouter2Manager.
            if (matchingRequest.mRequestedManagerRecord == null) {
                notifySessionCreationFailedToRouter(
                        matchingRequest.mRouterRecord, toOriginalRequestId(requestId));
                        matchingRequest.mRouterRecord, toOriginalRequestId(uniqueRequestId));
            } else {
                notifyRequestFailedToManager(matchingRequest.mRequestedManagerRecord.mManager,
                        toOriginalRequestId(requestId), reason);
                        toOriginalRequestId(uniqueRequestId), reason);
            }
            return true;
        }
@@ -1811,16 +1816,16 @@ class MediaRouter2ServiceImpl {

        final class SessionCreationRequest {
            public final RouterRecord mRouterRecord;
            public final long mRequestId;
            public final long mUniqueRequestId;
            public final MediaRoute2Info mRoute;
            public final ManagerRecord mRequestedManagerRecord;

            // requestedManagerRecord is not null only when the request is made by manager.
            SessionCreationRequest(@NonNull RouterRecord routerRecord, long requestId,
            SessionCreationRequest(@NonNull RouterRecord routerRecord, long uniqueRequestId,
                    @NonNull MediaRoute2Info route,
                    @Nullable ManagerRecord requestedManagerRecord) {
                mRouterRecord = routerRecord;
                mRequestId = requestId;
                mUniqueRequestId = uniqueRequestId;
                mRoute = route;
                mRequestedManagerRecord = requestedManagerRecord;
            }