Loading media/java/android/media/MediaRouter2Manager.java +30 −63 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ public final class MediaRouter2Manager { .getSystemService(Context.MEDIA_SESSION_SERVICE); mPackageName = mContext.getPackageName(); mHandler = new Handler(context.getMainLooper()); mHandler.post(this::getOrCreateClient); } /** Loading @@ -118,18 +119,6 @@ public final class MediaRouter2Manager { Log.w(TAG, "Ignoring to add the same callback twice."); return; } synchronized (sLock) { if (mClient == null) { Client client = new Client(); try { mMediaRouterService.registerManager(client, mPackageName); mClient = client; } catch (RemoteException ex) { Log.e(TAG, "Unable to register media router manager.", ex); } } } } /** Loading @@ -144,21 +133,6 @@ public final class MediaRouter2Manager { Log.w(TAG, "unregisterCallback: Ignore unknown callback. " + callback); return; } synchronized (sLock) { if (mCallbackRecords.size() == 0) { if (mClient != null) { try { mMediaRouterService.unregisterManager(mClient); } catch (RemoteException ex) { Log.e(TAG, "Unable to unregister media router manager", ex); } mClient = null; } mRoutes.clear(); mPreferredFeaturesMap.clear(); } } } /** Loading Loading @@ -314,10 +288,7 @@ public final class MediaRouter2Manager { */ @NonNull public List<RoutingSessionInfo> getActiveSessions() { Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { return mMediaRouterService.getActiveSessions(client); Loading Loading @@ -380,10 +351,7 @@ public final class MediaRouter2Manager { return; } Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); Loading Loading @@ -419,10 +387,7 @@ public final class MediaRouter2Manager { return; } Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); Loading Loading @@ -451,10 +416,7 @@ public final class MediaRouter2Manager { return; } Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); Loading Loading @@ -710,15 +672,12 @@ public final class MediaRouter2Manager { return; } Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); mMediaRouterService.selectRouteWithManager( mClient, requestId, sessionInfo.getId(), route); client, requestId, sessionInfo.getId(), route); } catch (RemoteException ex) { Log.e(TAG, "selectRoute: Failed to send a request.", ex); } Loading Loading @@ -755,15 +714,12 @@ public final class MediaRouter2Manager { return; } Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); mMediaRouterService.deselectRouteWithManager( mClient, requestId, sessionInfo.getId(), route); client, requestId, sessionInfo.getId(), route); } catch (RemoteException ex) { Log.e(TAG, "deselectRoute: Failed to send a request.", ex); } Loading Loading @@ -794,14 +750,11 @@ public final class MediaRouter2Manager { int requestId = mNextRequestId.getAndIncrement(); mTransferRequests.add(new TransferRequest(requestId, sessionInfo, route)); Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { mMediaRouterService.transferToRouteWithManager( mClient, requestId, sessionInfo.getId(), route); client, requestId, sessionInfo.getId(), route); } catch (RemoteException ex) { Log.e(TAG, "transferToRoute: Failed to send a request.", ex); } Loading @@ -821,15 +774,12 @@ public final class MediaRouter2Manager { public void releaseSession(@NonNull RoutingSessionInfo sessionInfo) { Objects.requireNonNull(sessionInfo, "sessionInfo must not be null"); Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); mMediaRouterService.releaseSessionWithManager( mClient, requestId, sessionInfo.getId()); client, requestId, sessionInfo.getId()); } catch (RemoteException ex) { Log.e(TAG, "releaseSession: Failed to send a request", ex); } Loading Loading @@ -857,6 +807,23 @@ public final class MediaRouter2Manager { sessionInfo.getOwnerPackageName()); } private Client getOrCreateClient() { synchronized (sLock) { if (mClient != null) { return mClient; } Client client = new Client(); try { mMediaRouterService.registerManager(client, mPackageName); mClient = client; return client; } catch (RemoteException ex) { Log.e(TAG, "Unable to register media router manager.", ex); } } return null; } /** * Interface for receiving events about media routing changes. */ Loading media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java +5 −0 Original line number Diff line number Diff line Loading @@ -603,6 +603,11 @@ public class MediaRouter2ManagerTest { assertTrue(onSessionCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); } @Test public void testGetActiveSessions_returnsNonEmptyList() { assertFalse(mManager.getActiveSessions().isEmpty()); } Map<String, MediaRoute2Info> waitAndGetRoutesWithManager(List<String> routeFeatures) throws Exception { CountDownLatch addedLatch = new CountDownLatch(1); Loading Loading
media/java/android/media/MediaRouter2Manager.java +30 −63 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ public final class MediaRouter2Manager { .getSystemService(Context.MEDIA_SESSION_SERVICE); mPackageName = mContext.getPackageName(); mHandler = new Handler(context.getMainLooper()); mHandler.post(this::getOrCreateClient); } /** Loading @@ -118,18 +119,6 @@ public final class MediaRouter2Manager { Log.w(TAG, "Ignoring to add the same callback twice."); return; } synchronized (sLock) { if (mClient == null) { Client client = new Client(); try { mMediaRouterService.registerManager(client, mPackageName); mClient = client; } catch (RemoteException ex) { Log.e(TAG, "Unable to register media router manager.", ex); } } } } /** Loading @@ -144,21 +133,6 @@ public final class MediaRouter2Manager { Log.w(TAG, "unregisterCallback: Ignore unknown callback. " + callback); return; } synchronized (sLock) { if (mCallbackRecords.size() == 0) { if (mClient != null) { try { mMediaRouterService.unregisterManager(mClient); } catch (RemoteException ex) { Log.e(TAG, "Unable to unregister media router manager", ex); } mClient = null; } mRoutes.clear(); mPreferredFeaturesMap.clear(); } } } /** Loading Loading @@ -314,10 +288,7 @@ public final class MediaRouter2Manager { */ @NonNull public List<RoutingSessionInfo> getActiveSessions() { Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { return mMediaRouterService.getActiveSessions(client); Loading Loading @@ -380,10 +351,7 @@ public final class MediaRouter2Manager { return; } Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); Loading Loading @@ -419,10 +387,7 @@ public final class MediaRouter2Manager { return; } Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); Loading Loading @@ -451,10 +416,7 @@ public final class MediaRouter2Manager { return; } Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); Loading Loading @@ -710,15 +672,12 @@ public final class MediaRouter2Manager { return; } Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); mMediaRouterService.selectRouteWithManager( mClient, requestId, sessionInfo.getId(), route); client, requestId, sessionInfo.getId(), route); } catch (RemoteException ex) { Log.e(TAG, "selectRoute: Failed to send a request.", ex); } Loading Loading @@ -755,15 +714,12 @@ public final class MediaRouter2Manager { return; } Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); mMediaRouterService.deselectRouteWithManager( mClient, requestId, sessionInfo.getId(), route); client, requestId, sessionInfo.getId(), route); } catch (RemoteException ex) { Log.e(TAG, "deselectRoute: Failed to send a request.", ex); } Loading Loading @@ -794,14 +750,11 @@ public final class MediaRouter2Manager { int requestId = mNextRequestId.getAndIncrement(); mTransferRequests.add(new TransferRequest(requestId, sessionInfo, route)); Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { mMediaRouterService.transferToRouteWithManager( mClient, requestId, sessionInfo.getId(), route); client, requestId, sessionInfo.getId(), route); } catch (RemoteException ex) { Log.e(TAG, "transferToRoute: Failed to send a request.", ex); } Loading @@ -821,15 +774,12 @@ public final class MediaRouter2Manager { public void releaseSession(@NonNull RoutingSessionInfo sessionInfo) { Objects.requireNonNull(sessionInfo, "sessionInfo must not be null"); Client client; synchronized (sLock) { client = mClient; } Client client = getOrCreateClient(); if (client != null) { try { int requestId = mNextRequestId.getAndIncrement(); mMediaRouterService.releaseSessionWithManager( mClient, requestId, sessionInfo.getId()); client, requestId, sessionInfo.getId()); } catch (RemoteException ex) { Log.e(TAG, "releaseSession: Failed to send a request", ex); } Loading Loading @@ -857,6 +807,23 @@ public final class MediaRouter2Manager { sessionInfo.getOwnerPackageName()); } private Client getOrCreateClient() { synchronized (sLock) { if (mClient != null) { return mClient; } Client client = new Client(); try { mMediaRouterService.registerManager(client, mPackageName); mClient = client; return client; } catch (RemoteException ex) { Log.e(TAG, "Unable to register media router manager.", ex); } } return null; } /** * Interface for receiving events about media routing changes. */ Loading
media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java +5 −0 Original line number Diff line number Diff line Loading @@ -603,6 +603,11 @@ public class MediaRouter2ManagerTest { assertTrue(onSessionCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); } @Test public void testGetActiveSessions_returnsNonEmptyList() { assertFalse(mManager.getActiveSessions().isEmpty()); } Map<String, MediaRoute2Info> waitAndGetRoutesWithManager(List<String> routeFeatures) throws Exception { CountDownLatch addedLatch = new CountDownLatch(1); Loading