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

Commit b9a35bba authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "MediaRouter2: add MRM.getActiveRoutes"

parents 9b3d0531 86998f44
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.Context;
import android.os.Handler;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.text.TextUtils;
import android.util.Log;

import com.android.internal.annotations.GuardedBy;
@@ -171,6 +172,34 @@ public class MediaRouter2Manager {
        return routes;
    }

    /**
     * Gets the list of routes that are actively used by {@link MediaRouter2}.
     */
    @NonNull
    public List<MediaRoute2Info> getActiveRoutes() {
        List<MediaRoute2Info> routes = new ArrayList<>();
        synchronized (mRoutesLock) {
            for (MediaRoute2Info route : mRoutes.values()) {
                if (!TextUtils.isEmpty(route.getClientPackageName())) {
                    routes.add(route);
                }
            }
        }
        return routes;
    }

    /**
     * Gets the list of discovered routes
     */
    @NonNull
    public List<MediaRoute2Info> getAllRoutes() {
        List<MediaRoute2Info> routes = new ArrayList<>();
        synchronized (mRoutesLock) {
            routes.addAll(mRoutes.values());
        }
        return routes;
    }

    /**
     * Selects media route for the specified package name.
     *
+31 −0
Original line number Diff line number Diff line
@@ -256,6 +256,37 @@ public class MediaRouterManagerTest {
        }
    }

    @Test
    public void testGetActiveRoutes() throws Exception {
        CountDownLatch latch = new CountDownLatch(1);
        CountDownLatch latch2 = new CountDownLatch(1);

        Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(CATEGORIES_ALL);
        addRouterCallback(new MediaRouter2.Callback());
        addManagerCallback(new MediaRouter2Manager.Callback() {
            @Override
            public void onRouteSelected(String packageName, MediaRoute2Info route) {
                if (TextUtils.equals(mPackageName, packageName)
                        && route != null && TextUtils.equals(route.getId(), ROUTE_ID1)) {
                    latch.countDown();
                }
            }
        });

        assertEquals(0, mManager.getActiveRoutes().size());

        mManager.selectRoute(mPackageName, routes.get(ROUTE_ID1));
        latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS);

        assertEquals(1, mManager.getActiveRoutes().size());

        awaitOnRouteChangedManager(
                () -> mManager.unselectRoute(mPackageName),
                ROUTE_ID1,
                route -> TextUtils.equals(route.getClientPackageName(), null));
        assertEquals(0, mManager.getActiveRoutes().size());
    }

    /**
     * Tests selecting and unselecting routes of a single provider.
     */