diff options
Diffstat (limited to 'media/tests')
2 files changed, 127 insertions, 8 deletions
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java index 8606be88d20e..638a842e4e5f 100644 --- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java +++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java @@ -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; @@ -28,6 +29,7 @@ import static com.android.mediaroutertest.StubMediaRoute2ProviderService.ROUTE_I import static com.android.mediaroutertest.StubMediaRoute2ProviderService.ROUTE_ID2; import static com.android.mediaroutertest.StubMediaRoute2ProviderService.ROUTE_ID4_TO_SELECT_AND_DESELECT; import static com.android.mediaroutertest.StubMediaRoute2ProviderService.ROUTE_ID5_TO_TRANSFER_TO; +import static com.android.mediaroutertest.StubMediaRoute2ProviderService.ROUTE_ID6_TO_BE_IGNORED; import static com.android.mediaroutertest.StubMediaRoute2ProviderService.ROUTE_ID_FIXED_VOLUME; import static com.android.mediaroutertest.StubMediaRoute2ProviderService.ROUTE_ID_SPECIAL_FEATURE; import static com.android.mediaroutertest.StubMediaRoute2ProviderService.ROUTE_ID_VARIABLE_VOLUME; @@ -51,6 +53,7 @@ import android.media.RouteDiscoveryPreference; import android.media.RoutingSessionInfo; import android.os.Bundle; import android.support.test.InstrumentationRegistry; +import android.support.test.filters.LargeTest; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import android.text.TextUtils; @@ -79,6 +82,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; @@ -276,17 +281,19 @@ public class MediaRouter2ManagerTest { } @Test - public void testGetRoutingControllers() throws Exception { + public void testGetRoutingSessions() throws Exception { CountDownLatch latch = new CountDownLatch(1); Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL); + MediaRoute2Info routeToSelect = routes.get(ROUTE_ID1); + addRouterCallback(new RouteCallback() {}); addManagerCallback(new MediaRouter2Manager.Callback() { @Override public void onTransferred(RoutingSessionInfo oldSessionInfo, RoutingSessionInfo newSessionInfo) { if (TextUtils.equals(mPackageName, newSessionInfo.getClientPackageName()) - && newSessionInfo.getSelectedRoutes().contains(ROUTE_ID1)) { + && newSessionInfo.getSelectedRoutes().contains(routeToSelect.getId())) { latch.countDown(); } } @@ -294,11 +301,10 @@ public class MediaRouter2ManagerTest { assertEquals(1, mManager.getRoutingSessions(mPackageName).size()); - mManager.selectRoute(mPackageName, routes.get(ROUTE_ID1)); - latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS); + mManager.selectRoute(mPackageName, routeToSelect); + assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); List<RoutingSessionInfo> sessions = mManager.getRoutingSessions(mPackageName); - assertEquals(2, sessions.size()); RoutingSessionInfo sessionInfo = sessions.get(1); @@ -309,6 +315,77 @@ 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)); + } + + @Test + public void testRouterRelease_managerGetRoutingSessions() throws Exception { + CountDownLatch transferLatch = new CountDownLatch(1); + CountDownLatch releaseLatch = new CountDownLatch(1); + + Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL); + MediaRoute2Info routeToSelect = routes.get(ROUTE_ID1); + assertNotNull(routeToSelect); + + addRouterCallback(new RouteCallback() {}); + addManagerCallback(new MediaRouter2Manager.Callback() { + @Override + public void onTransferred(RoutingSessionInfo oldSessionInfo, + RoutingSessionInfo newSessionInfo) { + if (TextUtils.equals(mPackageName, newSessionInfo.getClientPackageName()) + && newSessionInfo.getSelectedRoutes().contains(routeToSelect.getId())) { + transferLatch.countDown(); + } + } + @Override + public void onSessionReleased(RoutingSessionInfo session) { + releaseLatch.countDown(); + } + }); + + assertEquals(1, mManager.getRoutingSessions(mPackageName).size()); + assertEquals(1, mRouter2.getControllers().size()); + + mManager.transfer(mManager.getRoutingSessions(mPackageName).get(0), routeToSelect); + assertTrue(transferLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); + + assertEquals(2, mManager.getRoutingSessions(mPackageName).size()); + assertEquals(2, mRouter2.getControllers().size()); + mRouter2.getControllers().get(1).release(); + + assertTrue(releaseLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); + + assertEquals(1, mRouter2.getControllers().size()); + assertEquals(1, mManager.getRoutingSessions(mPackageName).size()); + } + /** * Tests select, transfer, release of routes of a provider */ @@ -350,6 +427,35 @@ public class MediaRouter2ManagerTest { } @Test + @LargeTest + public void testTransfer_ignored_fails() throws Exception { + Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL); + addRouterCallback(new RouteCallback() {}); + + CountDownLatch onSessionCreatedLatch = new CountDownLatch(1); + CountDownLatch onFailedLatch = new CountDownLatch(1); + + addManagerCallback(new MediaRouter2Manager.Callback() { + @Override + public void onTransferred(RoutingSessionInfo oldSessionInfo, + RoutingSessionInfo newSessionInfo) { + onSessionCreatedLatch.countDown(); + } + @Override + public void onTransferFailed(RoutingSessionInfo session, MediaRoute2Info route) { + onFailedLatch.countDown(); + } + }); + + List<RoutingSessionInfo> sessions = mManager.getRoutingSessions(mPackageName); + RoutingSessionInfo targetSession = sessions.get(sessions.size() - 1); + mManager.transfer(targetSession, routes.get(ROUTE_ID6_TO_BE_IGNORED)); + + assertFalse(onSessionCreatedLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS)); + assertTrue(onFailedLatch.await(MediaRouter2Manager.TRANSFER_TIMEOUT_MS, + TimeUnit.MILLISECONDS)); + } + @Test public void testSetSystemRouteVolume() throws Exception { // ensure client addManagerCallback(new MediaRouter2Manager.Callback()); @@ -649,8 +755,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); diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/StubMediaRoute2ProviderService.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/StubMediaRoute2ProviderService.java index 4e398f26366a..4551876d774a 100644 --- a/media/tests/MediaRouter/src/com/android/mediaroutertest/StubMediaRoute2ProviderService.java +++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/StubMediaRoute2ProviderService.java @@ -53,6 +53,9 @@ public class StubMediaRoute2ProviderService extends MediaRoute2ProviderService { public static final String ROUTE_ID5_TO_TRANSFER_TO = "route_id5_to_transfer_to"; public static final String ROUTE_NAME5 = "Sample Route 5 - Route to transfer to"; + public static final String ROUTE_ID6_TO_BE_IGNORED = "route_id6_to_be_ignored"; + public static final String ROUTE_NAME6 = "Sample Route 6 - Route to be ignored"; + public static final String ROUTE_ID_SPECIAL_FEATURE = "route_special_feature"; public static final String ROUTE_NAME_SPECIAL_FEATURE = "Special Feature Route"; @@ -98,7 +101,10 @@ public class StubMediaRoute2ProviderService extends MediaRoute2ProviderService { ROUTE_ID5_TO_TRANSFER_TO, ROUTE_NAME5) .addFeature(FEATURE_SAMPLE) .build(); - + MediaRoute2Info route6 = new MediaRoute2Info.Builder( + ROUTE_ID6_TO_BE_IGNORED, ROUTE_NAME6) + .addFeature(FEATURE_SAMPLE) + .build(); MediaRoute2Info routeSpecial = new MediaRoute2Info.Builder(ROUTE_ID_SPECIAL_FEATURE, ROUTE_NAME_SPECIAL_FEATURE) .addFeature(FEATURE_SAMPLE) @@ -121,6 +127,7 @@ public class StubMediaRoute2ProviderService extends MediaRoute2ProviderService { mRoutes.put(route3.getId(), route3); mRoutes.put(route4.getId(), route4); mRoutes.put(route5.getId(), route5); + mRoutes.put(route6.getId(), route6); mRoutes.put(routeSpecial.getId(), routeSpecial); mRoutes.put(fixedVolumeRoute.getId(), fixedVolumeRoute); @@ -219,6 +226,10 @@ public class StubMediaRoute2ProviderService extends MediaRoute2ProviderService { notifyRequestFailed(requestId, REASON_UNKNOWN_ERROR); return; } + // Ignores the request intentionally for testing + if (TextUtils.equals(ROUTE_ID6_TO_BE_IGNORED, routeId)) { + return; + } maybeDeselectRoute(routeId); final String sessionId = String.valueOf(mNextSessionId); |