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

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

Merge "Prevent MediaRouter2 w/o permission from getting DEVICE_ROUTE" into rvc-dev am: 82051a25

Change-Id: Ice83d8e5e2fea2324bfca2faecbd623634216005
parents 1bf67a8c 82051a25
Loading
Loading
Loading
Loading
+24 −3
Original line number Diff line number Diff line
@@ -584,7 +584,8 @@ class MediaRouter2ServiceImpl {
        mAllRouterRecords.put(binder, routerRecord);

        userRecord.mHandler.sendMessage(
                obtainMessage(UserHandler::notifyRoutesToRouter, userRecord.mHandler, router));
                obtainMessage(UserHandler::notifyRoutesToRouter,
                        userRecord.mHandler, routerRecord));
    }

    private void unregisterRouter2Locked(@NonNull IMediaRouter2 router, boolean died) {
@@ -1775,16 +1776,36 @@ class MediaRouter2ServiceImpl {
            }
        }

        private void notifyRoutesToRouter(@NonNull IMediaRouter2 router) {
        private void notifyRoutesToRouter(@NonNull RouterRecord routerRecord) {
            List<MediaRoute2Info> routes = new ArrayList<>();

            MediaRoute2ProviderInfo systemProviderInfo = null;
            for (MediaRoute2ProviderInfo providerInfo : mLastProviderInfos) {
                // TODO: Create MediaRoute2ProviderInfo#isSystemProvider()
                if (TextUtils.equals(providerInfo.getUniqueId(), mSystemProvider.getUniqueId())) {
                    // Adding routes from system provider will be handled below, so skip it here.
                    systemProviderInfo = providerInfo;
                    continue;
                }
                routes.addAll(providerInfo.getRoutes());
            }

            if (routerRecord.mHasModifyAudioRoutingPermission) {
                if (systemProviderInfo != null) {
                    routes.addAll(systemProviderInfo.getRoutes());
                } else {
                    // This shouldn't happen.
                    Slog.w(TAG, "notifyRoutesToRouter: System route provider not found.");
                }
            } else {
                routes.add(mSystemProvider.getDefaultRoute());
            }

            if (routes.size() == 0) {
                return;
            }
            try {
                router.notifyRoutesAdded(routes);
                routerRecord.mRouter.notifyRoutesAdded(routes);
            } catch (RemoteException ex) {
                Slog.w(TAG, "Failed to notify all routes. Router probably died.", ex);
            }