From 4e6e52443de7a873f6f1a7b72b6f4ec6048f9880 Mon Sep 17 00:00:00 2001 From: hughchen Date: Mon, 6 Apr 2020 11:42:33 +0800 Subject: [PATCH] Fix null point exception on LocalMediaManager - Use TextUtils.equal() to check string compare. - Add test case. Bug: 153144708 Test: make -j42 RunSettingsLibRoboTests Change-Id: Iabaf4bc86bcf353e1dd86269c7add7690bae0bfe --- .../settingslib/media/LocalMediaManager.java | 4 ++-- .../media/LocalMediaManagerTest.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java index fb8a0b7f63ca6..b2774182bfa2e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java @@ -220,7 +220,7 @@ public class LocalMediaManager implements BluetoothCallback { */ public MediaDevice getMediaDeviceById(List devices, String id) { for (MediaDevice mediaDevice : devices) { - if (mediaDevice.getId().equals(id)) { + if (TextUtils.equals(mediaDevice.getId(), id)) { return mediaDevice; } } @@ -236,7 +236,7 @@ public class LocalMediaManager implements BluetoothCallback { */ public MediaDevice getMediaDeviceById(String id) { for (MediaDevice mediaDevice : mMediaDevices) { - if (mediaDevice.getId().equals(id)) { + if (TextUtils.equals(mediaDevice.getId(), id)) { return mediaDevice; } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java index 1c690724b1c1d..d40c45cb78f8c 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java @@ -217,6 +217,26 @@ public class LocalMediaManagerTest { assertThat(device).isNull(); } + @Test + public void getMediaDeviceById_idIsNull_shouldReturnNull() { + final MediaDevice device1 = mock(MediaDevice.class); + final MediaDevice device2 = mock(MediaDevice.class); + mLocalMediaManager.mMediaDevices.add(device1); + mLocalMediaManager.mMediaDevices.add(device2); + + when(device1.getId()).thenReturn(null); + when(device2.getId()).thenReturn(null); + + MediaDevice device = mLocalMediaManager + .getMediaDeviceById(mLocalMediaManager.mMediaDevices, TEST_CURRENT_DEVICE_ID); + + assertThat(device).isNull(); + + device = mLocalMediaManager.getMediaDeviceById(TEST_CURRENT_DEVICE_ID); + + assertThat(device).isNull(); + } + @Test public void onDeviceAdded_addDevice() { final MediaDevice device = mock(MediaDevice.class);