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
This commit is contained in:
Tim Peng
2020-05-14 14:02:48 +08:00
committed by tim peng
parent 764387772f
commit 77bec31eb5
2 changed files with 37 additions and 2 deletions

View File

@@ -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);
}

View File

@@ -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<MediaDevice> 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);
}
}