diff options
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java | 18 | ||||
| -rw-r--r-- | packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java | 48 |
2 files changed, 43 insertions, 23 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index 24cd55175f63..cf1662409efc 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -52,7 +52,6 @@ public class InfoMediaManager extends MediaManager { private static final String TAG = "InfoMediaManager"; private static final boolean DEBUG = false; - @VisibleForTesting final RouterManagerCallback mMediaRouterCallback = new RouterManagerCallback(); @VisibleForTesting @@ -138,14 +137,10 @@ public class InfoMediaManager extends MediaManager { } private RoutingSessionInfo getRoutingSessionInfo() { - for (RoutingSessionInfo info : mRouterManager.getRoutingSessions(mPackageName)) { - if (TextUtils.equals(info.getClientPackageName(), mPackageName)) { - return info; - } - } + final List<RoutingSessionInfo> sessionInfos = + mRouterManager.getRoutingSessions(mPackageName); - Log.w(TAG, "RoutingSessionInfo() cannot found match packagename : " + mPackageName); - return null; + return sessionInfos.get(sessionInfos.size() - 1); } /** @@ -181,10 +176,7 @@ public class InfoMediaManager extends MediaManager { return false; } - - final List<RoutingSessionInfo> sessionInfos = - mRouterManager.getRoutingSessions(mPackageName); - final RoutingSessionInfo sessionInfo = sessionInfos.get(sessionInfos.size() - 1); + final RoutingSessionInfo sessionInfo = getRoutingSessionInfo(); if (sessionInfo != null) { mRouterManager.releaseSession(sessionInfo); @@ -375,7 +367,7 @@ public class InfoMediaManager extends MediaManager { mediaDevice = new InfoMediaDevice(mContext, mRouterManager, route, mPackageName); if (!TextUtils.isEmpty(mPackageName) - && TextUtils.equals(route.getClientPackageName(), mPackageName) + && getRoutingSessionInfo().getSelectedRoutes().contains(route.getId()) && mCurrentConnectedDevice == null) { mCurrentConnectedDevice = mediaDevice; } 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 7f93f697152c..d0c37a0bd8c1 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 @@ -77,6 +77,14 @@ public class InfoMediaManagerTest { @Test public void onRouteAdded_getAvailableRoutes_shouldAddMediaDevice() { + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List<String> selectedRoutes = new ArrayList<>(); + selectedRoutes.add(TEST_ID); + when(sessionInfo.getSelectedRoutes()).thenReturn(selectedRoutes); + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); @@ -120,6 +128,14 @@ public class InfoMediaManagerTest { @Test public void onControlCategoriesChanged_samePackageName_shouldAddMediaDevice() { + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List<String> selectedRoutes = new ArrayList<>(); + selectedRoutes.add(TEST_ID); + when(sessionInfo.getSelectedRoutes()).thenReturn(selectedRoutes); + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); @@ -148,6 +164,14 @@ public class InfoMediaManagerTest { @Test public void onRoutesChanged_getAvailableRoutes_shouldAddMediaDevice() { + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List<String> selectedRoutes = new ArrayList<>(); + selectedRoutes.add(TEST_ID); + when(sessionInfo.getSelectedRoutes()).thenReturn(selectedRoutes); + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + final MediaRoute2Info info = mock(MediaRoute2Info.class); mInfoMediaManager.registerCallback(mCallback); @@ -210,6 +234,14 @@ public class InfoMediaManagerTest { @Test public void onRoutesRemoved_getAvailableRoutes_shouldAddMediaDevice() { + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List<String> selectedRoutes = new ArrayList<>(); + selectedRoutes.add(TEST_ID); + when(sessionInfo.getSelectedRoutes()).thenReturn(selectedRoutes); + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); @@ -409,13 +441,12 @@ public class InfoMediaManagerTest { } @Test - public void getSessionVolumeMax_notContainPackageName_returnNotFound() { + public void getSessionVolumeMax_routeSessionInfoIsNull_returnNotFound() { final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); - final RoutingSessionInfo info = mock(RoutingSessionInfo.class); + final RoutingSessionInfo info = null; routingSessionInfos.add(info); mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); - when(info.getClientPackageName()).thenReturn("com.fake.packagename"); assertThat(mInfoMediaManager.getSessionVolumeMax()).isEqualTo(-1); } @@ -442,13 +473,12 @@ public class InfoMediaManagerTest { } @Test - public void getSessionVolume_notContainPackageName_returnNotFound() { + public void getSessionVolume_routeSessionInfoIsNull_returnNotFound() { final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); - final RoutingSessionInfo info = mock(RoutingSessionInfo.class); + final RoutingSessionInfo info = null; routingSessionInfos.add(info); mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); - when(info.getClientPackageName()).thenReturn("com.fake.packagename"); assertThat(mInfoMediaManager.getSessionVolume()).isEqualTo(-1); } @@ -480,14 +510,12 @@ public class InfoMediaManagerTest { } @Test - public void getSessionName_notContainPackageName_returnNull() { + public void getSessionName_routeSessionInfoIsNull_returnNull() { final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); - final RoutingSessionInfo info = mock(RoutingSessionInfo.class); + final RoutingSessionInfo info = null; routingSessionInfos.add(info); mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); - when(info.getClientPackageName()).thenReturn("com.fake.packagename"); - when(info.getName()).thenReturn(TEST_NAME); assertThat(mInfoMediaManager.getSessionName()).isNull(); } |