From 77bec31eb58e00c6df21c2349e02478073e14334 Mon Sep 17 00:00:00 2001 From: Tim Peng Date: Thu, 14 May 2020 14:02:48 +0800 Subject: [PATCH] Output switcher shows the device list by an incorrect package name -Reset package name when it is different with previous one -Add test case Bug: 156561856 Test: make -j50 RunSettingsRoboTests Change-Id: I7931ebbc59ab404f12473fe29f2735ad3a8197fd --- .../media/MediaDeviceUpdateWorker.java | 3 +- .../media/MediaDeviceUpdateWorkerTest.java | 36 ++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/media/MediaDeviceUpdateWorker.java b/src/com/android/settings/media/MediaDeviceUpdateWorker.java index 92cc0e37003..a97681165d4 100644 --- a/src/com/android/settings/media/MediaDeviceUpdateWorker.java +++ b/src/com/android/settings/media/MediaDeviceUpdateWorker.java @@ -73,7 +73,8 @@ public class MediaDeviceUpdateWorker extends SliceBackgroundWorker protected void onSlicePinned() { mMediaDevices.clear(); mIsTouched = false; - if (mLocalMediaManager == null) { + if (mLocalMediaManager == null || !TextUtils.equals(mPackageName, + mLocalMediaManager.getPackageName())) { mLocalMediaManager = new LocalMediaManager(mContext, mPackageName, null); } diff --git a/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java b/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java index e8f70271487..624bbd8101f 100644 --- a/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java +++ b/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java @@ -35,12 +35,17 @@ import android.media.RoutingSessionInfo; import android.net.Uri; import com.android.settings.testutils.shadow.ShadowAudioManager; +import com.android.settings.testutils.shadow.ShadowBluetoothAdapter; +import com.android.settings.testutils.shadow.ShadowBluetoothUtils; +import com.android.settingslib.bluetooth.BluetoothEventManager; +import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.media.LocalMediaManager; import com.android.settingslib.media.MediaDevice; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @@ -51,16 +56,28 @@ import java.util.ArrayList; import java.util.List; @RunWith(RobolectricTestRunner.class) -@Config(shadows = ShadowAudioManager.class) +@Config(shadows = {ShadowAudioManager.class, ShadowBluetoothAdapter.class, + ShadowBluetoothUtils.class}) public class MediaDeviceUpdateWorkerTest { private static final Uri URI = Uri.parse("content://com.android.settings.slices/test"); + private static final Uri URI1 = Uri.parse("content://com.android.settings.slices/action/" + + "media_output?media_package_name=com.music1"); + private static final Uri URI2 = Uri.parse("content://com.android.settings.slices/action/" + + "media_output?media_package_name=com.music2"); + private static final String TEST_DEVICE_PACKAGE_NAME1 = "com.music1"; + private static final String TEST_DEVICE_PACKAGE_NAME2 = "com.music2"; private static final String TEST_DEVICE_1_ID = "test_device_1_id"; private static final String TEST_DEVICE_2_ID = "test_device_2_id"; private static final String TEST_DEVICE_3_ID = "test_device_3_id"; private final List mMediaDevices = new ArrayList<>(); + @Mock + private LocalBluetoothManager mLocalBluetoothManager; + @Mock + private BluetoothEventManager mBluetoothEventManager; + private MediaDeviceUpdateWorker mMediaDeviceUpdateWorker; private ContentResolver mResolver; private Context mContext; @@ -209,4 +226,21 @@ public class MediaDeviceUpdateWorkerTest { assertThat(mMediaDeviceUpdateWorker.getActiveRemoteMediaDevice()).containsExactly( remoteSessionInfo); } + + @Test + public void onSlicePinned_packageUpdated_checkPackageName() { + ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager; + when(mLocalBluetoothManager.getEventManager()).thenReturn(mBluetoothEventManager); + mMediaDeviceUpdateWorker = new MediaDeviceUpdateWorker(mContext, URI1); + mMediaDeviceUpdateWorker.onSlicePinned(); + + assertThat(mMediaDeviceUpdateWorker.mLocalMediaManager.getPackageName()).matches( + TEST_DEVICE_PACKAGE_NAME1); + + mMediaDeviceUpdateWorker = new MediaDeviceUpdateWorker(mContext, URI2); + mMediaDeviceUpdateWorker.onSlicePinned(); + + assertThat(mMediaDeviceUpdateWorker.mLocalMediaManager.getPackageName()).matches( + TEST_DEVICE_PACKAGE_NAME2); + } }