Add null check when build MediaDevice

- We may not found CachedBluetoothDevice through
  CachedBluetoothDeviceManager. This CL add null check before
  we build the MediaDevice.
- Add test case

Bug: 154152005
Test: make -j42 RunSettingsLibRoboTests
Change-Id: I042912317e1924d8b9bdababf0b7dcb69836f9e2
This commit is contained in:
hughchen
2020-04-24 14:59:05 +08:00
parent 31901c037b
commit 71a7f826dc
2 changed files with 23 additions and 2 deletions

View File

@@ -397,8 +397,10 @@ public class InfoMediaManager extends MediaManager {
BluetoothAdapter.getDefaultAdapter().getRemoteDevice(route.getOriginalId());
final CachedBluetoothDevice cachedDevice =
mBluetoothManager.getCachedDeviceManager().findDevice(device);
mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, mRouterManager,
route, mPackageName);
if (cachedDevice != null) {
mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, mRouterManager,
route, mPackageName);
}
break;
default:
Log.w(TAG, "addMediaDevice() unknown device type : " + deviceType);

View File

@@ -647,4 +647,23 @@ public class InfoMediaManagerTest {
mInfoMediaManager.addMediaDevice(route2Info);
assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof PhoneMediaDevice).isTrue();
}
@Test
public void addMediaDevice_cachedBluetoothDeviceIsNull_shouldNotAdded() {
final MediaRoute2Info route2Info = mock(MediaRoute2Info.class);
final CachedBluetoothDeviceManager cachedBluetoothDeviceManager =
mock(CachedBluetoothDeviceManager.class);
when(route2Info.getType()).thenReturn(TYPE_BLUETOOTH_A2DP);
when(route2Info.getOriginalId()).thenReturn("00:00:00:00:00:00");
when(mLocalBluetoothManager.getCachedDeviceManager())
.thenReturn(cachedBluetoothDeviceManager);
when(cachedBluetoothDeviceManager.findDevice(any(BluetoothDevice.class)))
.thenReturn(null);
mInfoMediaManager.mMediaDevices.clear();
mInfoMediaManager.addMediaDevice(route2Info);
assertThat(mInfoMediaManager.mMediaDevices.size()).isEqualTo(0);
}
}