Fix isSystemRoute() returning true for mr.addUserRoute(userRoute)
Bug: 311643037
Test: Using the sample app
Change-Id: Iccee240f3395a76af8c85948303df2621f77f1c4
diff --git a/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouter2Test.java b/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouter2Test.java
index 6601791..ba339c6 100644
--- a/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouter2Test.java
+++ b/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouter2Test.java
@@ -19,6 +19,7 @@
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -198,6 +199,51 @@
assertTrue(onRouteEnabledLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
}
+ @Test
+ @MediumTest
+ public void addUserRouteFromMr1_isSystemRoute_returnsFalse() throws Exception {
+ getInstrumentation()
+ .runOnMainSync(
+ () -> {
+ android.media.MediaRouter mediaRouter1 =
+ (android.media.MediaRouter)
+ mContext.getSystemService(Context.MEDIA_ROUTER_SERVICE);
+
+ android.media.MediaRouter.RouteCategory sampleRouteCategory =
+ mediaRouter1.createRouteCategory(
+ "SAMPLE_ROUTE_CATEGORY", /* isGroupable= */ false);
+
+ android.media.MediaRouter.UserRouteInfo sampleUserRoute =
+ mediaRouter1.createUserRoute(sampleRouteCategory);
+ sampleUserRoute.setName("SAMPLE_USER_ROUTE");
+
+ mediaRouter1.addUserRoute(sampleUserRoute);
+
+ for (RouteInfo routeInfo : mRouter.getRoutes()) {
+ // We are checking for this route using getRoutes rather than
+ // through the onRouteAdded callback because of b/312700919
+ if (routeInfo.getName().equals("SAMPLE_USER_ROUTE")) {
+ assertFalse(routeInfo.isSystemRoute());
+ }
+ }
+ });
+
+ }
+
+ @Test
+ @MediumTest
+ public void defaultAndBluetoothRoutes_isSystemRoute_returnsTrue() {
+ getInstrumentation()
+ .runOnMainSync(
+ () -> {
+ for (RouteInfo routeInfo : mRouter.getRoutes()) {
+ if (routeInfo.isDefaultOrBluetooth()) {
+ assertTrue(routeInfo.isSystemRoute());
+ }
+ }
+ });
+ }
+
@SmallTest
@Test
public void setRouteVolume_onStaticNonGroupRoute() {
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/SystemMediaRouteProvider.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/SystemMediaRouteProvider.java
index 2d3bdfb..7cf8cff 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/SystemMediaRouteProvider.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/SystemMediaRouteProvider.java
@@ -516,7 +516,7 @@
builder.setVolume(record.mRoute.getVolume());
builder.setVolumeMax(record.mRoute.getVolumeMax());
builder.setVolumeHandling(record.mRoute.getVolumeHandling());
- builder.setIsSystemRoute(true);
+ builder.setIsSystemRoute((supportedTypes & ROUTE_TYPE_USER) == 0);
if (!record.mRoute.isEnabled()) {
builder.setEnabled(false);