diff options
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java | 15 | ||||
| -rw-r--r-- | packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java | 33 |
2 files changed, 40 insertions, 8 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index 6cf6825e61e0..82c6f1134637 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -542,13 +542,6 @@ public class InfoMediaManager extends MediaManager { //TODO(b/148765806): use correct device type once api is ready. mediaDevice = new InfoMediaDevice(mContext, mRouterManager, route, mPackageName, mPreferenceItemMap.get(route.getId())); - if (!TextUtils.isEmpty(mPackageName) - && getRoutingSessionInfo().getSelectedRoutes().contains(route.getId())) { - mediaDevice.setState(STATE_SELECTED); - if (mCurrentConnectedDevice == null) { - mCurrentConnectedDevice = mediaDevice; - } - } break; case TYPE_BUILTIN_SPEAKER: case TYPE_USB_DEVICE: @@ -581,7 +574,13 @@ public class InfoMediaManager extends MediaManager { break; } - + if (mediaDevice != null && !TextUtils.isEmpty(mPackageName) + && getRoutingSessionInfo().getSelectedRoutes().contains(route.getId())) { + mediaDevice.setState(STATE_SELECTED); + if (mCurrentConnectedDevice == null) { + mCurrentConnectedDevice = mediaDevice; + } + } if (mediaDevice != null) { mMediaDevices.add(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 096932706c88..aa5f3df1b750 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 @@ -25,6 +25,8 @@ import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET; import static android.media.MediaRoute2ProviderService.REASON_NETWORK_ERROR; import static android.media.MediaRoute2ProviderService.REASON_UNKNOWN_ERROR; +import static com.android.settingslib.media.LocalMediaManager.MediaDeviceState.STATE_SELECTED; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -1006,6 +1008,37 @@ public class InfoMediaManagerTest { } @Test + public void addMediaDevice_deviceIncludedInSelectedDevices_shouldSetAsCurrentConnected() { + final MediaRoute2Info route2Info = mock(MediaRoute2Info.class); + final CachedBluetoothDeviceManager cachedBluetoothDeviceManager = + mock(CachedBluetoothDeviceManager.class); + final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class); + final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>(); + final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class); + routingSessionInfos.add(sessionInfo); + + when(mRouterManager.getRoutingSessions(TEST_PACKAGE_NAME)).thenReturn(routingSessionInfos); + when(sessionInfo.getSelectedRoutes()).thenReturn(ImmutableList.of(TEST_ID)); + when(route2Info.getType()).thenReturn(TYPE_BLUETOOTH_A2DP); + when(route2Info.getAddress()).thenReturn("00:00:00:00:00:00"); + when(route2Info.getId()).thenReturn(TEST_ID); + when(mLocalBluetoothManager.getCachedDeviceManager()) + .thenReturn(cachedBluetoothDeviceManager); + when(cachedBluetoothDeviceManager.findDevice(any(BluetoothDevice.class))) + .thenReturn(cachedDevice); + mInfoMediaManager.mRouterManager = mRouterManager; + + mInfoMediaManager.mMediaDevices.clear(); + mInfoMediaManager.addMediaDevice(route2Info); + + MediaDevice device = mInfoMediaManager.mMediaDevices.get(0); + + assertThat(device instanceof BluetoothMediaDevice).isTrue(); + assertThat(device.getState()).isEqualTo(STATE_SELECTED); + assertThat(mInfoMediaManager.getCurrentConnectedDevice()).isEqualTo(device); + } + + @Test public void shouldDisableMediaOutput_infosIsEmpty_returnsTrue() { mShadowRouter2Manager.setTransferableRoutes(new ArrayList<>()); |