Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +30 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,36 @@ public class InfoMediaManager extends MediaManager { return null; } boolean shouldDisableMediaOutput(String packageName) { boolean shouldDisableMediaOutput = false; if (TextUtils.isEmpty(packageName)) { Log.w(TAG, "shouldDisableMediaOutput() package name is null or empty!"); return false; } final List<MediaRoute2Info> infos = mRouterManager.getAvailableRoutes(packageName); if (infos.size() == 1) { final MediaRoute2Info info = infos.get(0); final int deviceType = info.getType(); switch (deviceType) { case TYPE_UNKNOWN: case TYPE_REMOTE_TV: case TYPE_REMOTE_SPEAKER: case TYPE_GROUP: shouldDisableMediaOutput = true; break; default: shouldDisableMediaOutput = false; break; } } if (DEBUG) { Log.d(TAG, "shouldDisableMediaOutput() MediaRoute2Info size : " + infos.size() + ", package name : " + packageName + ", shouldDisableMediaOutput : " + shouldDisableMediaOutput); } return shouldDisableMediaOutput; } private void refreshDevices() { mMediaDevices.clear(); mCurrentConnectedDevice = null; Loading packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +7 −0 Original line number Diff line number Diff line Loading @@ -402,6 +402,13 @@ public class LocalMediaManager implements BluetoothCallback { return mPackageName; } /** * Returns {@code true} if needed to disable media output, otherwise returns {@code false}. */ public boolean shouldDisableMediaOutput(String packageName) { return mInfoMediaManager.shouldDisableMediaOutput(packageName); } @VisibleForTesting MediaDevice updateCurrentConnectedDevice() { MediaDevice connectedDevice = null; Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +44 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static android.media.MediaRoute2ProviderService.REASON_UNKNOWN_ERROR; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; Loading Loading @@ -721,4 +722,47 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.mMediaDevices.size()).isEqualTo(0); } @Test public void shouldDisableMediaOutput_infosSizeEqual1_returnsTrue() { final MediaRoute2Info info = mock(MediaRoute2Info.class); final List<MediaRoute2Info> infos = new ArrayList<>(); infos.add(info); mShadowRouter2Manager.setAvailableRoutes(infos); when(mRouterManager.getAvailableRoutes(anyString())).thenReturn(infos); when(info.getType()).thenReturn(TYPE_REMOTE_SPEAKER); assertThat(mInfoMediaManager.shouldDisableMediaOutput("test")).isTrue(); } @Test public void shouldDisableMediaOutput_infosSizeEqual1AndNotCastDevice_returnsFalse() { final MediaRoute2Info info = mock(MediaRoute2Info.class); final List<MediaRoute2Info> infos = new ArrayList<>(); infos.add(info); mShadowRouter2Manager.setAvailableRoutes(infos); when(mRouterManager.getAvailableRoutes(anyString())).thenReturn(infos); when(info.getType()).thenReturn(TYPE_BUILTIN_SPEAKER); assertThat(mInfoMediaManager.shouldDisableMediaOutput("test")).isFalse(); } @Test public void shouldDisableMediaOutput_infosSizeOverThan1_returnsFalse() { final MediaRoute2Info info = mock(MediaRoute2Info.class); final MediaRoute2Info info2 = mock(MediaRoute2Info.class); final List<MediaRoute2Info> infos = new ArrayList<>(); infos.add(info); infos.add(info2); mShadowRouter2Manager.setAvailableRoutes(infos); when(mRouterManager.getAvailableRoutes(anyString())).thenReturn(infos); when(info.getType()).thenReturn(TYPE_REMOTE_SPEAKER); when(info2.getType()).thenReturn(TYPE_REMOTE_SPEAKER); assertThat(mInfoMediaManager.shouldDisableMediaOutput("test")).isFalse(); } } Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +30 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,36 @@ public class InfoMediaManager extends MediaManager { return null; } boolean shouldDisableMediaOutput(String packageName) { boolean shouldDisableMediaOutput = false; if (TextUtils.isEmpty(packageName)) { Log.w(TAG, "shouldDisableMediaOutput() package name is null or empty!"); return false; } final List<MediaRoute2Info> infos = mRouterManager.getAvailableRoutes(packageName); if (infos.size() == 1) { final MediaRoute2Info info = infos.get(0); final int deviceType = info.getType(); switch (deviceType) { case TYPE_UNKNOWN: case TYPE_REMOTE_TV: case TYPE_REMOTE_SPEAKER: case TYPE_GROUP: shouldDisableMediaOutput = true; break; default: shouldDisableMediaOutput = false; break; } } if (DEBUG) { Log.d(TAG, "shouldDisableMediaOutput() MediaRoute2Info size : " + infos.size() + ", package name : " + packageName + ", shouldDisableMediaOutput : " + shouldDisableMediaOutput); } return shouldDisableMediaOutput; } private void refreshDevices() { mMediaDevices.clear(); mCurrentConnectedDevice = null; Loading
packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +7 −0 Original line number Diff line number Diff line Loading @@ -402,6 +402,13 @@ public class LocalMediaManager implements BluetoothCallback { return mPackageName; } /** * Returns {@code true} if needed to disable media output, otherwise returns {@code false}. */ public boolean shouldDisableMediaOutput(String packageName) { return mInfoMediaManager.shouldDisableMediaOutput(packageName); } @VisibleForTesting MediaDevice updateCurrentConnectedDevice() { MediaDevice connectedDevice = null; Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +44 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static android.media.MediaRoute2ProviderService.REASON_UNKNOWN_ERROR; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; Loading Loading @@ -721,4 +722,47 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.mMediaDevices.size()).isEqualTo(0); } @Test public void shouldDisableMediaOutput_infosSizeEqual1_returnsTrue() { final MediaRoute2Info info = mock(MediaRoute2Info.class); final List<MediaRoute2Info> infos = new ArrayList<>(); infos.add(info); mShadowRouter2Manager.setAvailableRoutes(infos); when(mRouterManager.getAvailableRoutes(anyString())).thenReturn(infos); when(info.getType()).thenReturn(TYPE_REMOTE_SPEAKER); assertThat(mInfoMediaManager.shouldDisableMediaOutput("test")).isTrue(); } @Test public void shouldDisableMediaOutput_infosSizeEqual1AndNotCastDevice_returnsFalse() { final MediaRoute2Info info = mock(MediaRoute2Info.class); final List<MediaRoute2Info> infos = new ArrayList<>(); infos.add(info); mShadowRouter2Manager.setAvailableRoutes(infos); when(mRouterManager.getAvailableRoutes(anyString())).thenReturn(infos); when(info.getType()).thenReturn(TYPE_BUILTIN_SPEAKER); assertThat(mInfoMediaManager.shouldDisableMediaOutput("test")).isFalse(); } @Test public void shouldDisableMediaOutput_infosSizeOverThan1_returnsFalse() { final MediaRoute2Info info = mock(MediaRoute2Info.class); final MediaRoute2Info info2 = mock(MediaRoute2Info.class); final List<MediaRoute2Info> infos = new ArrayList<>(); infos.add(info); infos.add(info2); mShadowRouter2Manager.setAvailableRoutes(infos); when(mRouterManager.getAvailableRoutes(anyString())).thenReturn(infos); when(info.getType()).thenReturn(TYPE_REMOTE_SPEAKER); when(info2.getType()).thenReturn(TYPE_REMOTE_SPEAKER); assertThat(mInfoMediaManager.shouldDisableMediaOutput("test")).isFalse(); } }