From 71a7f826dcf9ca31877f85e1e64ad5ec6c73b552 Mon Sep 17 00:00:00 2001 From: hughchen Date: Fri, 24 Apr 2020 14:59:05 +0800 Subject: [PATCH] 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 --- .../settingslib/media/InfoMediaManager.java | 6 ++++-- .../media/InfoMediaManagerTest.java | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index d14cb25beff03..002bbec609244 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -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); 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 b5dc1f7f8f4eb..76eea67f97655 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 @@ -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); + } }