From 8e9e4b44cb5e3e1a0a67b3dfd5dd2e5fa5a4e0e6 Mon Sep 17 00:00:00 2001 From: hughchen Date: Mon, 23 Mar 2020 18:59:58 +0800 Subject: [PATCH] Update MediaRouter2Manager api - This CL use the index to get system session instead of use getClientPackageName(). - Use getSelectedRoutes() to identify which MediaDevice is active device instead of use getClientPackageName(). Bug: 142912244 Test: make -j42 RunSettingsLibRoboTests Change-Id: I2302cb6bf992a4d679b1753dad3a5bd86b6a8159 --- .../settingslib/media/InfoMediaManager.java | 18 ++----- .../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 24cd55175f63a..cf1662409efc0 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 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 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 7f93f697152c7..d0c37a0bd8c18 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 routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List 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 routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List 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 routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List 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 routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + final List 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 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 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 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(); }