diff options
author | Hyundo Moon <hdmoon@google.com> | 2020-02-14 11:44:45 +0900 |
---|---|---|
committer | Hyundo Moon <hdmoon@google.com> | 2020-02-20 17:33:22 +0900 |
commit | 0fa60e880bf31d1644dc66fbd740db3e077edc2b (patch) | |
tree | 8212f259de2f45616371f45aa2ef43020927e54f /media/tests | |
parent | 81a661fb49200eec924d6e02c5c62131a13bab9a (diff) |
Add MediaRoute2ProviderService#notifyRequestFailed
Bug: 146616547
Test: atest mediaroutertest and CTS
Change-Id: I2b2b95bf0fec070ab24f51bba0c58221e5495460
Diffstat (limited to 'media/tests')
2 files changed, 79 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 e80562b3fd1c..de941b4c7640 100644 --- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java +++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java @@ -19,6 +19,8 @@ package com.android.mediaroutertest; import static android.media.MediaRoute2Info.FEATURE_LIVE_AUDIO; import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_FIXED; import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE; +import static android.media.MediaRoute2ProviderService.REASON_REJECTED; +import static android.media.MediaRoute2ProviderService.REQUEST_ID_NONE; import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.FEATURE_SAMPLE; import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.FEATURE_SPECIAL; @@ -32,6 +34,7 @@ import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.VOLUME_MAX; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -69,6 +72,7 @@ import java.util.function.Predicate; @SmallTest public class MediaRouter2ManagerTest { private static final String TAG = "MediaRouter2ManagerTest"; + private static final int WAIT_TIME_MS = 2000; private static final int TIMEOUT_MS = 5000; private Context mContext; @@ -111,6 +115,11 @@ public class MediaRouter2ManagerTest { releaseAllSessions(); // unregister callbacks clearCallbacks(); + + SampleMediaRoute2ProviderService instance = SampleMediaRoute2ProviderService.getInstance(); + if (instance != null) { + instance.setProxy(null); + } } @Test @@ -398,6 +407,53 @@ public class MediaRouter2ManagerTest { } } + /** + * Tests that {@link android.media.MediaRoute2ProviderService#notifyRequestFailed(long, int)} + * should invoke the callback only when the right requestId is used. + */ + @Test + public void testOnRequestFailedCalledForProperRequestId() throws Exception { + Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL); + MediaRoute2Info volRoute = routes.get(ROUTE_ID_VARIABLE_VOLUME); + + SampleMediaRoute2ProviderService instance = SampleMediaRoute2ProviderService.getInstance(); + assertNotNull(instance); + + final List<Long> requestIds = new ArrayList<>(); + final CountDownLatch onSetRouteVolumeLatch = new CountDownLatch(1); + instance.setProxy(new SampleMediaRoute2ProviderService.Proxy() { + @Override + public void onSetRouteVolume(String routeId, int volume, long requestId) { + requestIds.add(requestId); + onSetRouteVolumeLatch.countDown(); + } + }); + + addManagerCallback(new MediaRouter2Manager.Callback() {}); + mManager.setRouteVolume(volRoute, 0); + assertTrue(onSetRouteVolumeLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); + assertFalse(requestIds.isEmpty()); + + final int failureReason = REASON_REJECTED; + final CountDownLatch onRequestFailedLatch = new CountDownLatch(1); + addManagerCallback(new MediaRouter2Manager.Callback() { + @Override + public void onRequestFailed(int reason) { + if (reason == failureReason) { + onRequestFailedLatch.countDown(); + } + } + }); + + final long invalidRequestId = REQUEST_ID_NONE; + instance.notifyRequestFailed(invalidRequestId, failureReason); + assertFalse(onRequestFailedLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS)); + + final long validRequestId = requestIds.get(0); + instance.notifyRequestFailed(validRequestId, failureReason); + assertTrue(onRequestFailedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); + } + @Test public void testVolumeHandling() throws Exception { Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL); diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java index 3faefdb148e1..9071c85cc8d2 100644 --- a/media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java +++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java @@ -75,6 +75,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService @GuardedBy("sLock") private static SampleMediaRoute2ProviderService sInstance; + private Proxy mProxy; private void initializeRoutes() { MediaRoute2Info route1 = new MediaRoute2Info.Builder(ROUTE_ID1, ROUTE_NAME1) @@ -179,7 +180,13 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService } @Override - public void onSetRouteVolume(String routeId, int volume) { + public void onSetRouteVolume(long requestId, String routeId, int volume) { + Proxy proxy = mProxy; + if (proxy != null) { + proxy.onSetRouteVolume(routeId, volume, requestId); + return; + } + MediaRoute2Info route = mRoutes.get(routeId); if (route == null) { return; @@ -192,7 +199,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService } @Override - public void onSetSessionVolume(String sessionId, int volume) { + public void onSetSessionVolume(long requestId, String sessionId, int volume) { RoutingSessionInfo sessionInfo = getSessionInfo(sessionId); if (sessionInfo == null) { return; @@ -205,7 +212,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService } @Override - public void onCreateSession(String packageName, String routeId, long requestId, + public void onCreateSession(long requestId, String packageName, String routeId, @Nullable Bundle sessionHints) { MediaRoute2Info route = mRoutes.get(routeId); if (route == null || TextUtils.equals(ROUTE_ID3_SESSION_CREATION_FAILED, routeId)) { @@ -238,7 +245,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService } @Override - public void onReleaseSession(String sessionId) { + public void onReleaseSession(long requestId, String sessionId) { RoutingSessionInfo sessionInfo = getSessionInfo(sessionId); if (sessionInfo == null) { return; @@ -258,7 +265,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService } @Override - public void onSelectRoute(String sessionId, String routeId) { + public void onSelectRoute(long requestId, String sessionId, String routeId) { RoutingSessionInfo sessionInfo = getSessionInfo(sessionId); MediaRoute2Info route = mRoutes.get(routeId); if (route == null || sessionInfo == null) { @@ -280,7 +287,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService } @Override - public void onDeselectRoute(String sessionId, String routeId) { + public void onDeselectRoute(long requestId, String sessionId, String routeId) { RoutingSessionInfo sessionInfo = getSessionInfo(sessionId); MediaRoute2Info route = mRoutes.get(routeId); @@ -308,7 +315,7 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService } @Override - public void onTransferToRoute(String sessionId, String routeId) { + public void onTransferToRoute(long requestId, String sessionId, String routeId) { RoutingSessionInfo sessionInfo = getSessionInfo(sessionId); MediaRoute2Info route = mRoutes.get(routeId); @@ -347,10 +354,18 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService } String sessionId = mRouteIdToSessionId.get(routeId); - onDeselectRoute(sessionId, routeId); + onDeselectRoute(REQUEST_ID_NONE, sessionId, routeId); } void publishRoutes() { notifyRoutes(mRoutes.values()); } + + public void setProxy(@Nullable Proxy proxy) { + mProxy = proxy; + } + + public static class Proxy { + public void onSetRouteVolume(String routeId, int volume, long requestId) {} + } } |