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

Commit 783789a3 authored by Santiago Seifert's avatar Santiago Seifert
Browse files

Simplify requestCreateSessionWithRouter2

Removes some unnecessary code and also fixes what seems to be buggy
behavior. For example, we are overwriting the initiator package name
if the user handle is not provided.

Bug: b/279555229
Flag: EXEMPT refactor
Test: presubmit
Change-Id: Ib8eb09d5c22ea251a3a3e043eec889df33f2f789
parent 26724a4c
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -36,6 +36,5 @@ oneway interface IMediaRouter2 {
     * Call MediaRouterService#requestCreateSessionWithRouter2 to pass the result.
     */
    void requestCreateSessionByManager(long uniqueRequestId, in RoutingSessionInfo oldSession,
        in MediaRoute2Info route, in UserHandle transferInitiatorUserHandle,
        in String transferInitiatorPackageName);
        in MediaRoute2Info route);
}
+1 −2
Original line number Diff line number Diff line
@@ -64,8 +64,7 @@ interface IMediaRouterService {

    void requestCreateSessionWithRouter2(IMediaRouter2 router, int requestId, long managerRequestId,
            in RoutingSessionInfo oldSession, in MediaRoute2Info route,
            in @nullable Bundle sessionHints, in UserHandle transferInitiatorUserHandle,
            in String transferInitiatorPackageName);
            in @nullable Bundle sessionHints);
    void selectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
    void deselectRouteWithRouter2(IMediaRouter2 router, String sessionId, in MediaRoute2Info route);
    void transferToRouteWithRouter2(IMediaRouter2 router, String sessionId,
+7 −27
Original line number Diff line number Diff line
@@ -991,9 +991,7 @@ public final class MediaRouter2 {
    void requestCreateController(
            @NonNull RoutingController controller,
            @NonNull MediaRoute2Info route,
            long managerRequestId,
            @NonNull UserHandle transferInitiatorUserHandle,
            @NonNull String transferInitiatorPackageName) {
            long managerRequestId) {

        final int requestId = mNextRequestId.getAndIncrement();

@@ -1022,9 +1020,7 @@ public final class MediaRouter2 {
                        managerRequestId,
                        controller.getRoutingSessionInfo(),
                        route,
                        controllerHints,
                        transferInitiatorUserHandle,
                        transferInitiatorPackageName);
                        controllerHints);
            } catch (RemoteException ex) {
                Log.e(TAG, "createControllerForTransfer: "
                                + "Failed to request for creating a controller.", ex);
@@ -1366,11 +1362,7 @@ public final class MediaRouter2 {
    }

    void onRequestCreateControllerByManagerOnHandler(
            RoutingSessionInfo oldSession,
            MediaRoute2Info route,
            long managerRequestId,
            @NonNull UserHandle transferInitiatorUserHandle,
            @NonNull String transferInitiatorPackageName) {
            RoutingSessionInfo oldSession, MediaRoute2Info route, long managerRequestId) {
        Log.i(
                TAG,
                TextUtils.formatSimple(
@@ -1387,8 +1379,7 @@ public final class MediaRouter2 {
        if (controller == null) {
            return;
        }
        requestCreateController(controller, route, managerRequestId, transferInitiatorUserHandle,
                transferInitiatorPackageName);
        requestCreateController(controller, route, managerRequestId);
    }

    private List<MediaRoute2Info> getSortedRoutes(
@@ -2423,20 +2414,14 @@ public final class MediaRouter2 {

        @Override
        public void requestCreateSessionByManager(
                long managerRequestId,
                RoutingSessionInfo oldSession,
                MediaRoute2Info route,
                UserHandle transferInitiatorUserHandle,
                String transferInitiatorPackageName) {
                long managerRequestId, RoutingSessionInfo oldSession, MediaRoute2Info route) {
            mHandler.sendMessage(
                    obtainMessage(
                            MediaRouter2::onRequestCreateControllerByManagerOnHandler,
                            MediaRouter2.this,
                            oldSession,
                            route,
                            managerRequestId,
                            transferInitiatorUserHandle,
                            transferInitiatorPackageName));
                            managerRequestId));
        }
    }

@@ -3581,12 +3566,7 @@ public final class MediaRouter2 {

            RoutingController controller = getCurrentController();
            if (!controller.tryTransferWithinProvider(route)) {
                requestCreateController(
                        controller,
                        route,
                        MANAGER_REQUEST_ID_NONE,
                        Process.myUserHandle(),
                        mContext.getPackageName());
                requestCreateController(controller, route, MANAGER_REQUEST_ID_NONE);
            }
        }

+8 −38
Original line number Diff line number Diff line
@@ -404,37 +404,17 @@ class MediaRouter2ServiceImpl {
            long managerRequestId,
            @NonNull RoutingSessionInfo oldSession,
            @NonNull MediaRoute2Info route,
            Bundle sessionHints,
            @Nullable UserHandle transferInitiatorUserHandle,
            @Nullable String transferInitiatorPackageName) {
            Bundle sessionHints) {
        Objects.requireNonNull(router, "router must not be null");
        Objects.requireNonNull(oldSession, "oldSession must not be null");
        Objects.requireNonNull(route, "route must not be null");

        synchronized (mLock) {
            if (managerRequestId == MediaRoute2ProviderService.REQUEST_ID_NONE
                    || transferInitiatorUserHandle == null
                    || transferInitiatorPackageName == null) {
                final IBinder binder = router.asBinder();
                final RouterRecord routerRecord = mAllRouterRecords.get(binder);

                transferInitiatorUserHandle = Binder.getCallingUserHandle();
                if (routerRecord != null) {
                    transferInitiatorPackageName = routerRecord.mPackageName;
                } else {
                    transferInitiatorPackageName = mContext.getPackageName();
                }
            }
        }

        final long token = Binder.clearCallingIdentity();
        try {
            synchronized (mLock) {
                requestCreateSessionWithRouter2Locked(
                        requestId,
                        managerRequestId,
                        transferInitiatorUserHandle,
                        transferInitiatorPackageName,
                        router,
                        oldSession,
                        route,
@@ -1281,8 +1261,6 @@ class MediaRouter2ServiceImpl {
    private void requestCreateSessionWithRouter2Locked(
            int requestId,
            long managerRequestId,
            @NonNull UserHandle transferInitiatorUserHandle,
            @NonNull String transferInitiatorPackageName,
            @NonNull IMediaRouter2 router,
            @NonNull RoutingSessionInfo oldSession,
            @NonNull MediaRoute2Info route,
@@ -1355,8 +1333,6 @@ class MediaRouter2ServiceImpl {
                        userHandler,
                        uniqueRequestId,
                        managerRequestId,
                        transferInitiatorUserHandle,
                        transferInitiatorPackageName,
                        routerRecord,
                        oldSession,
                        route,
@@ -2695,11 +2671,7 @@ class MediaRouter2ServiceImpl {
                    route = mSystemProvider.getDefaultRoute();
                }
                routerRecord.mRouter.requestCreateSessionByManager(
                        uniqueRequestId,
                        oldSession,
                        route,
                        transferInitiatorUserHandle,
                        transferInitiatorPackageName);
                        uniqueRequestId, oldSession, route);
            } catch (RemoteException ex) {
                Slog.w(TAG, "getSessionHintsForCreatingSessionOnHandler: "
                        + "Failed to request. Router probably died.", ex);
@@ -2711,8 +2683,6 @@ class MediaRouter2ServiceImpl {
        private void requestCreateSessionWithRouter2OnHandler(
                long uniqueRequestId,
                long managerRequestId,
                @NonNull UserHandle transferInitiatorUserHandle,
                @NonNull String transferInitiatorPackageName,
                @NonNull RouterRecord routerRecord,
                @NonNull RoutingSessionInfo oldSession,
                @NonNull MediaRoute2Info route,
@@ -2732,10 +2702,10 @@ class MediaRouter2ServiceImpl {
                            managerRequestId, oldSession, route);
            mSessionCreationRequests.add(request);

            int transferReason = RoutingSessionInfo.TRANSFER_REASON_APP;
            if (managerRequestId != MediaRoute2ProviderService.REQUEST_ID_NONE) {
                transferReason = RoutingSessionInfo.TRANSFER_REASON_SYSTEM_REQUEST;
            }
            int transferReason =
                    managerRequestId != MediaRoute2ProviderService.REQUEST_ID_NONE
                            ? RoutingSessionInfo.TRANSFER_REASON_SYSTEM_REQUEST
                            : RoutingSessionInfo.TRANSFER_REASON_APP;

            provider.requestCreateSession(
                    uniqueRequestId,
@@ -2743,8 +2713,8 @@ class MediaRouter2ServiceImpl {
                    route.getOriginalId(),
                    sessionHints,
                    transferReason,
                    transferInitiatorUserHandle,
                    transferInitiatorPackageName);
                    UserHandle.of(routerRecord.mUserRecord.mUserId),
                    routerRecord.mPackageName);
        }

        // routerRecord can be null if the session is system's or RCN.
+2 −11
Original line number Diff line number Diff line
@@ -495,18 +495,9 @@ public final class MediaRouterService extends IMediaRouterService.Stub
            long managerRequestId,
            RoutingSessionInfo oldSession,
            MediaRoute2Info route,
            Bundle sessionHints,
            @Nullable UserHandle transferInitiatorUserHandle,
            @Nullable String transferInitiatorPackageName) {
            Bundle sessionHints) {
        mService2.requestCreateSessionWithRouter2(
                router,
                requestId,
                managerRequestId,
                oldSession,
                route,
                sessionHints,
                transferInitiatorUserHandle,
                transferInitiatorPackageName);
                router, requestId, managerRequestId, oldSession, route, sessionHints);
    }

    // Binder call