diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index bff51e32c1f98..7e275607e36f8 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -154,15 +154,17 @@ public abstract class InfoMediaManager extends MediaManager { protected abstract RouteListingPreference getRouteListingPreference(); /** - * Returns the list of currently active {@link RoutingSessionInfo routing sessions} known to the - * system. + * Returns the list of remote {@link RoutingSessionInfo routing sessions} known to the system. */ @NonNull - protected abstract List getActiveRoutingSessions(); + protected abstract List getRemoteSessions(); @NonNull protected abstract List getRoutingSessionsForPackage(); + @Nullable + protected abstract RoutingSessionInfo getRoutingSessionById(@NonNull String sessionId); + @NonNull protected abstract List getAllRoutes(); diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java index fd5ca847877fb..4fb0487377bcc 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java @@ -388,14 +388,12 @@ public class LocalMediaManager implements BluetoothCallback { * @param volume the value of volume */ public void adjustSessionVolume(String sessionId, int volume) { - final List infos = getActiveMediaSession(); - for (RoutingSessionInfo info : infos) { - if (TextUtils.equals(sessionId, info.getId())) { - mInfoMediaManager.adjustSessionVolume(info, volume); - return; - } + RoutingSessionInfo session = mInfoMediaManager.getRoutingSessionById(sessionId); + if (session != null) { + mInfoMediaManager.adjustSessionVolume(session, volume); + } else { + Log.w(TAG, "adjustSessionVolume: Unable to find session: " + sessionId); } - Log.w(TAG, "adjustSessionVolume: Unable to find session: " + sessionId); } /** @@ -435,12 +433,12 @@ public class LocalMediaManager implements BluetoothCallback { } /** - * Gets the current active session. + * Gets the list of remote {@link RoutingSessionInfo routing sessions} known to the system. * - * @return current active session list{@link android.media.RoutingSessionInfo} + *

This list does not include any system routing sessions. */ - public List getActiveMediaSession() { - return mInfoMediaManager.getActiveRoutingSessions(); + public List getRemoteRoutingSessions() { + return mInfoMediaManager.getRemoteSessions(); } /** diff --git a/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java index b7ac1dce158c2..0be2e0efaea2d 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java @@ -30,7 +30,6 @@ import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.bluetooth.LocalBluetoothManager; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.Executors; @@ -151,11 +150,22 @@ public class ManagerInfoMediaManager extends InfoMediaManager { @Override @NonNull - protected List getActiveRoutingSessions() { - List infos = new ArrayList<>(); - infos.add(mRouterManager.getSystemRoutingSession(null)); - infos.addAll(mRouterManager.getRemoteSessions()); - return infos; + protected List getRemoteSessions() { + return mRouterManager.getRemoteSessions(); + } + + @Nullable + @Override + protected RoutingSessionInfo getRoutingSessionById(@NonNull String sessionId) { + for (RoutingSessionInfo sessionInfo : getRemoteSessions()) { + if (TextUtils.equals(sessionInfo.getId(), sessionId)) { + return sessionInfo; + } + } + + RoutingSessionInfo systemSession = mRouterManager.getSystemRoutingSession(null); + + return TextUtils.equals(systemSession.getId(), sessionId) ? systemSession : null; } @Override diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java index 866ef9d6076e7..2252b69d61d64 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java @@ -832,19 +832,12 @@ public class InfoMediaManagerTest { } @Test - public void getActiveMediaSession_returnActiveSession() { - RoutingSessionInfo sysSessionInfo = mock(RoutingSessionInfo.class); + public void getRemoteSessions_returnsRemoteSessions() { final List infos = new ArrayList<>(); infos.add(mock(RoutingSessionInfo.class)); - final List activeSessionInfos = new ArrayList<>(); - activeSessionInfos.add(sysSessionInfo); - activeSessionInfos.addAll(infos); - - mShadowRouter2Manager.setSystemRoutingSession(sysSessionInfo); mShadowRouter2Manager.setRemoteSessions(infos); - assertThat(mInfoMediaManager.getActiveRoutingSessions()) - .containsExactlyElementsIn(activeSessionInfos); + assertThat(mInfoMediaManager.getRemoteSessions()).containsExactlyElementsIn(infos); } @Test diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java index d6c33ff852692..926b41a0017f8 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java @@ -433,9 +433,9 @@ public class LocalMediaManagerTest { final RoutingSessionInfo info = mock(RoutingSessionInfo.class); when(info.getId()).thenReturn(TEST_SESSION_ID); routingSessionInfos.add(info); - when(mInfoMediaManager.getActiveRoutingSessions()).thenReturn(routingSessionInfos); + when(mInfoMediaManager.getRemoteSessions()).thenReturn(routingSessionInfos); - assertThat(mLocalMediaManager.getActiveMediaSession().get(0).getId()) + assertThat(mLocalMediaManager.getRemoteRoutingSessions().get(0).getId()) .matches(TEST_SESSION_ID); } @@ -544,7 +544,7 @@ public class LocalMediaManagerTest { final RoutingSessionInfo info = mock(RoutingSessionInfo.class); when(info.getId()).thenReturn(TEST_SESSION_ID); routingSessionInfos.add(info); - when(mInfoMediaManager.getActiveRoutingSessions()).thenReturn(routingSessionInfos); + when(mInfoMediaManager.getRoutingSessionById(TEST_SESSION_ID)).thenReturn(info); mLocalMediaManager.adjustSessionVolume(TEST_SESSION_ID, 10); diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java index f87f53ca12a2e..ed7baa4e8a80e 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java @@ -826,13 +826,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, } List getActiveRemoteMediaDevices() { - final List sessionInfos = new ArrayList<>(); - for (RoutingSessionInfo info : mLocalMediaManager.getActiveMediaSession()) { - if (!info.isSystemSession()) { - sessionInfos.add(info); - } - } - return sessionInfos; + return new ArrayList<>(mLocalMediaManager.getRemoteRoutingSessions()); } void adjustVolume(MediaDevice device, int volume) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java index 9f06b5fcc9030..23fcf8c7c0706 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java @@ -783,32 +783,19 @@ public class MediaOutputControllerTest extends SysuiTestCase { } @Test - public void getActiveRemoteMediaDevice_isSystemSession_returnSession() { + public void getActiveRemoteMediaDevices() { when(mRemoteSessionInfo.getId()).thenReturn(TEST_SESSION_ID); when(mRemoteSessionInfo.getName()).thenReturn(TEST_SESSION_NAME); when(mRemoteSessionInfo.getVolumeMax()).thenReturn(100); when(mRemoteSessionInfo.getVolume()).thenReturn(10); when(mRemoteSessionInfo.isSystemSession()).thenReturn(false); mRoutingSessionInfos.add(mRemoteSessionInfo); - when(mLocalMediaManager.getActiveMediaSession()).thenReturn(mRoutingSessionInfos); + when(mLocalMediaManager.getRemoteRoutingSessions()).thenReturn(mRoutingSessionInfos); assertThat(mMediaOutputController.getActiveRemoteMediaDevices()).containsExactly( mRemoteSessionInfo); } - @Test - public void getActiveRemoteMediaDevice_notSystemSession_returnEmpty() { - when(mRemoteSessionInfo.getId()).thenReturn(TEST_SESSION_ID); - when(mRemoteSessionInfo.getName()).thenReturn(TEST_SESSION_NAME); - when(mRemoteSessionInfo.getVolumeMax()).thenReturn(100); - when(mRemoteSessionInfo.getVolume()).thenReturn(10); - when(mRemoteSessionInfo.isSystemSession()).thenReturn(true); - mRoutingSessionInfos.add(mRemoteSessionInfo); - when(mLocalMediaManager.getActiveMediaSession()).thenReturn(mRoutingSessionInfos); - - assertThat(mMediaOutputController.getActiveRemoteMediaDevices()).isEmpty(); - } - @Test public void getGroupMediaDevices_differentDeviceOrder_showingSameOrder() { final MediaDevice selectedMediaDevice1 = mock(MediaDevice.class);