diff options
3 files changed, 57 insertions, 0 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index 3ae9e1ed78c3..7e78a78852a8 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -311,6 +311,21 @@ public class InfoMediaManager extends MediaManager { return -1; } + CharSequence getSessionName() { + if (TextUtils.isEmpty(mPackageName)) { + Log.w(TAG, "Unable to get session name. The package name is null or empty!"); + return null; + } + + final RoutingSessionInfo info = getRoutingSessionInfo(); + if (info != null) { + return info.getName(); + } + + Log.w(TAG, "Unable to get session name for package: " + mPackageName); + return null; + } + private void refreshDevices() { mMediaDevices.clear(); mCurrentConnectedDevice = null; diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java index c70811f1f20e..adb3c1170f8f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java @@ -324,6 +324,15 @@ public class LocalMediaManager implements BluetoothCallback { return mInfoMediaManager.getSessionVolume(); } + /** + * Gets the user-visible name of the {@link android.media.RoutingSessionInfo}. + * + * @return current name of the session, and return {@code null} if not found. + */ + public CharSequence getSessionName() { + return mInfoMediaManager.getSessionName(); + } + private MediaDevice updateCurrentConnectedDevice() { MediaDevice phoneMediaDevice = null; for (MediaDevice device : mMediaDevices) { 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 edb121b762a7..7cd0a7ce0437 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 @@ -460,4 +460,37 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.releaseSession()).isTrue(); } + + @Test + public void getSessionName_packageNameIsNull_returnNull() { + mInfoMediaManager.mPackageName = null; + + assertThat(mInfoMediaManager.getSessionName()).isNull(); + } + + @Test + public void getSessionName_notContainPackageName_returnNull() { + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo info = mock(RoutingSessionInfo.class); + routingSessionInfos.add(info); + + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + when(info.getClientPackageName()).thenReturn("com.fake.packagename"); + when(info.getName()).thenReturn(TEST_NAME); + + assertThat(mInfoMediaManager.getSessionName()).isNull(); + } + + @Test + public void getSessionName_containPackageName_returnName() { + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo info = mock(RoutingSessionInfo.class); + routingSessionInfos.add(info); + + mShadowRouter2Manager.setRoutingSessions(routingSessionInfos); + when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); + when(info.getName()).thenReturn(TEST_NAME); + + assertThat(mInfoMediaManager.getSessionName()).isEqualTo(TEST_NAME); + } } |