summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java15
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java9
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java33
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);
+ }
}