Ignore transfer to an unknown route

This CL ignores attempts to transfer to unknown route in
MediaRouter2Manager.
This CL also fixes wrong acquisition of locks when getXXXRoutes.

Bug: 157875504
Test: atest mediaroutertest
Change-Id: Ic3415844551c672b42d19d9744d7538a9d7df7c3
This commit is contained in:
Kyunglyul Hyun
2020-06-02 17:42:36 +09:00
parent 14756a8c99
commit a3be2de6ec
2 changed files with 48 additions and 6 deletions

View File

@@ -17,6 +17,7 @@
package com.android.mediaroutertest;
import static android.media.MediaRoute2Info.FEATURE_LIVE_AUDIO;
import static android.media.MediaRoute2Info.FEATURE_REMOTE_PLAYBACK;
import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_FIXED;
import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE;
import static android.media.MediaRoute2ProviderService.REASON_REJECTED;
@@ -79,6 +80,8 @@ public class MediaRouter2ManagerTest {
private static final int TIMEOUT_MS = 5000;
private static final String TEST_KEY = "test_key";
private static final String TEST_VALUE = "test_value";
private static final String TEST_ID_UNKNOWN = "id_unknown";
private static final String TEST_NAME_UNKNOWN = "unknown";
private Context mContext;
private MediaRouter2Manager mManager;
@@ -309,6 +312,36 @@ public class MediaRouter2ManagerTest {
assertEquals(1, mManager.getRoutingSessions(mPackageName).size());
}
@Test
public void testTransfer_unknownRoute_fail() throws Exception {
addRouterCallback(new RouteCallback() {});
CountDownLatch onSessionCreatedLatch = new CountDownLatch(1);
CountDownLatch onTransferFailedLatch = new CountDownLatch(1);
addManagerCallback(new MediaRouter2Manager.Callback() {
@Override
public void onTransferred(RoutingSessionInfo oldSessionInfo,
RoutingSessionInfo newSessionInfo) {
assertNotNull(newSessionInfo);
onSessionCreatedLatch.countDown();
}
@Override
public void onTransferFailed(RoutingSessionInfo session, MediaRoute2Info route) {
onTransferFailedLatch.countDown();
}
});
MediaRoute2Info unknownRoute =
new MediaRoute2Info.Builder(TEST_ID_UNKNOWN, TEST_NAME_UNKNOWN)
.addFeature(FEATURE_REMOTE_PLAYBACK)
.build();
mManager.transfer(mManager.getSystemRoutingSession(), unknownRoute);
assertFalse(onSessionCreatedLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
assertTrue(onTransferFailedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
}
/**
* Tests select, transfer, release of routes of a provider
*/
@@ -639,8 +672,10 @@ public class MediaRouter2ManagerTest {
mRouter2.registerRouteCallback(mExecutor, routeCallback,
new RouteDiscoveryPreference.Builder(routeFeatures, true).build());
try {
addedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS);
featuresLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS);
if (mManager.getAllRoutes().isEmpty()) {
addedLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS);
}
featuresLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS);
return createRouteMap(mManager.getAvailableRoutes(mPackageName));
} finally {
mRouter2.unregisterRouteCallback(routeCallback);