Update/Add method on InfoMediaManager

This CL include following change:

- Filter out non system route on getAllRoutes().
- Add releaseSession() to release session to stop playing media
  on MediaDevice.
- Add test case.

Bug: 149896648
Test: make -j42 RunSettingsLibRoboTests
Change-Id: Ibed6e22a8b01d5e1a3c92a80f569b21f40441c27
This commit is contained in:
hughchen
2020-02-20 18:46:32 +08:00
committed by Hugh Chen
parent 227ae85ddf
commit 61bced0b6d
3 changed files with 52 additions and 1 deletions

View File

@@ -164,6 +164,26 @@ public class InfoMediaManager extends MediaManager {
return false;
}
/**
* Release session to stop playing media on MediaDevice.
*/
boolean releaseSession() {
if (TextUtils.isEmpty(mPackageName)) {
Log.w(TAG, "releaseSession() package name is null or empty!");
return false;
}
final RoutingSessionInfo info = getRoutingSessionInfo();
if (info != null) {
mRouterManager.getControllerForSession(info).release();
return true;
}
Log.w(TAG, "releaseSession() Ignoring release session : " + mPackageName);
return false;
}
/**
* Get the MediaDevice list that can be added to current media.
*
@@ -298,7 +318,9 @@ public class InfoMediaManager extends MediaManager {
private void buildAllRoutes() {
for (MediaRoute2Info route : mRouterManager.getAllRoutes()) {
addMediaDevice(route);
if (route.isSystemRoute()) {
addMediaDevice(route);
}
}
}

View File

@@ -281,6 +281,13 @@ public class LocalMediaManager implements BluetoothCallback {
return mInfoMediaManager.getSelectableMediaDevice();
}
/**
* Release session to stop playing media on MediaDevice.
*/
public boolean releaseSession() {
return mInfoMediaManager.releaseSession();
}
/**
* Get the MediaDevice list that has been selected to current media.
*

View File

@@ -96,6 +96,7 @@ public class InfoMediaManagerTest {
final MediaRoute2Info info = mock(MediaRoute2Info.class);
when(info.getId()).thenReturn(TEST_ID);
when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
when(info.isSystemRoute()).thenReturn(true);
final List<MediaRoute2Info> routes = new ArrayList<>();
routes.add(info);
@@ -166,6 +167,7 @@ public class InfoMediaManagerTest {
final MediaRoute2Info info = mock(MediaRoute2Info.class);
when(info.getId()).thenReturn(TEST_ID);
when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
when(info.isSystemRoute()).thenReturn(true);
final List<MediaRoute2Info> routes = new ArrayList<>();
routes.add(info);
@@ -221,6 +223,7 @@ public class InfoMediaManagerTest {
final MediaRoute2Info info = mock(MediaRoute2Info.class);
when(info.getId()).thenReturn(TEST_ID);
when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
when(info.isSystemRoute()).thenReturn(true);
final List<MediaRoute2Info> routes = new ArrayList<>();
routes.add(info);
@@ -438,4 +441,23 @@ public class InfoMediaManagerTest {
assertThat(mInfoMediaManager.getSessionVolume()).isEqualTo(-1);
}
@Test
public void releaseSession_packageNameIsNull_returnFalse() {
mInfoMediaManager.mPackageName = null;
assertThat(mInfoMediaManager.releaseSession()).isFalse();
}
@Test
public void releaseSession_removeSuccessfully_returnTrue() {
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);
assertThat(mInfoMediaManager.releaseSession()).isTrue();
}
}