Merge changes I669f379d,Idd5fb950
* changes: Fix ConcurrentModificationException Update output switch UI
This commit is contained in:
committed by
Android (Google) Code Review
commit
e5c5d3754a
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -31,6 +32,7 @@ import android.content.Intent;
|
||||
import android.media.AudioManager;
|
||||
import android.net.Uri;
|
||||
|
||||
import com.android.settings.testutils.shadow.ShadowAudioManager;
|
||||
import com.android.settingslib.media.LocalMediaManager;
|
||||
import com.android.settingslib.media.MediaDevice;
|
||||
|
||||
@@ -40,12 +42,14 @@ import org.junit.runner.RunWith;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.shadows.ShadowApplication;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = ShadowAudioManager.class)
|
||||
public class MediaDeviceUpdateWorkerTest {
|
||||
|
||||
private static final Uri URI = Uri.parse("content://com.android.settings.slices/test");
|
||||
@@ -61,6 +65,7 @@ public class MediaDeviceUpdateWorkerTest {
|
||||
private MediaDevice mMediaDevice1;
|
||||
private MediaDevice mMediaDevice2;
|
||||
private ShadowApplication mShadowApplication;
|
||||
private AudioManager mAudioManager;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -69,6 +74,7 @@ public class MediaDeviceUpdateWorkerTest {
|
||||
mMediaDeviceUpdateWorker = new MediaDeviceUpdateWorker(mContext, URI);
|
||||
mResolver = mock(ContentResolver.class);
|
||||
mShadowApplication = ShadowApplication.getInstance();
|
||||
mAudioManager = mContext.getSystemService(AudioManager.class);
|
||||
|
||||
mMediaDevice1 = mock(MediaDevice.class);
|
||||
when(mMediaDevice1.getId()).thenReturn(TEST_DEVICE_1_ID);
|
||||
@@ -94,6 +100,13 @@ public class MediaDeviceUpdateWorkerTest {
|
||||
verify(mResolver).notifyChange(URI, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onDeviceAttributesChanged_shouldNotifyChange() {
|
||||
mMediaDeviceUpdateWorker.onDeviceAttributesChanged();
|
||||
|
||||
verify(mResolver).notifyChange(URI, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onDeviceListUpdate_sameDeviceList_shouldBeEqual() {
|
||||
mMediaDeviceUpdateWorker.onDeviceListUpdate(mMediaDevices);
|
||||
@@ -103,7 +116,8 @@ public class MediaDeviceUpdateWorkerTest {
|
||||
newDevices.add(mMediaDevice2);
|
||||
|
||||
mMediaDeviceUpdateWorker.onDeviceListUpdate(newDevices);
|
||||
final List<MediaDevice> devices = mMediaDeviceUpdateWorker.getMediaDevices();
|
||||
final List<MediaDevice> devices =
|
||||
new ArrayList<>(mMediaDeviceUpdateWorker.getMediaDevices());
|
||||
|
||||
assertThat(devices.get(0).getId()).isEqualTo(newDevices.get(0).getId());
|
||||
assertThat(devices.get(1).getId()).isEqualTo(newDevices.get(1).getId());
|
||||
@@ -121,7 +135,8 @@ public class MediaDeviceUpdateWorkerTest {
|
||||
newDevices.add(device3);
|
||||
|
||||
mMediaDeviceUpdateWorker.onDeviceListUpdate(newDevices);
|
||||
final List<MediaDevice> devices = mMediaDeviceUpdateWorker.getMediaDevices();
|
||||
final List<MediaDevice> devices =
|
||||
new ArrayList<>(mMediaDeviceUpdateWorker.getMediaDevices());
|
||||
|
||||
assertThat(devices.size()).isEqualTo(newDevices.size());
|
||||
}
|
||||
@@ -134,14 +149,16 @@ public class MediaDeviceUpdateWorkerTest {
|
||||
newDevices.add(mMediaDevice1);
|
||||
|
||||
mMediaDeviceUpdateWorker.onDeviceListUpdate(newDevices);
|
||||
final List<MediaDevice> devices = mMediaDeviceUpdateWorker.getMediaDevices();
|
||||
final List<MediaDevice> devices =
|
||||
new ArrayList<>(mMediaDeviceUpdateWorker.getMediaDevices());
|
||||
|
||||
assertThat(devices.size()).isEqualTo(newDevices.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onReceive_shouldNotifyChange() {
|
||||
public void onReceive_inCallState_shouldNotifyChange() {
|
||||
mMediaDeviceUpdateWorker.mLocalMediaManager = mock(LocalMediaManager.class);
|
||||
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
|
||||
|
||||
mMediaDeviceUpdateWorker.onSlicePinned();
|
||||
final Intent intent = new Intent(AudioManager.STREAM_DEVICES_CHANGED_ACTION);
|
||||
@@ -151,4 +168,18 @@ public class MediaDeviceUpdateWorkerTest {
|
||||
|
||||
verify(mResolver).notifyChange(URI, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onReceive_notInCallState_doNothing() {
|
||||
mMediaDeviceUpdateWorker.mLocalMediaManager = mock(LocalMediaManager.class);
|
||||
mAudioManager.setMode(AudioManager.MODE_NORMAL);
|
||||
|
||||
mMediaDeviceUpdateWorker.onSlicePinned();
|
||||
final Intent intent = new Intent(AudioManager.STREAM_DEVICES_CHANGED_ACTION);
|
||||
for (BroadcastReceiver receiver : mShadowApplication.getReceiversForIntent(intent)) {
|
||||
receiver.onReceive(mContext, intent);
|
||||
}
|
||||
|
||||
verify(mResolver, never()).notifyChange(URI, null);
|
||||
}
|
||||
}
|
||||
|
@@ -64,7 +64,6 @@ import java.util.List;
|
||||
@Config(shadows = {ShadowBluetoothAdapter.class})
|
||||
public class MediaOutputSliceTest {
|
||||
|
||||
private static final String TEST_PACKAGE_NAME = "com.fake.android.music";
|
||||
private static final String TEST_DEVICE_1_ID = "test_device_1_id";
|
||||
private static final String TEST_DEVICE_1_NAME = "test_device_1_name";
|
||||
private static final int TEST_DEVICE_1_ICON =
|
||||
@@ -100,12 +99,12 @@ public class MediaOutputSliceTest {
|
||||
mMediaDeviceUpdateWorker = new MediaDeviceUpdateWorker(mContext, MEDIA_OUTPUT_SLICE_URI);
|
||||
mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices);
|
||||
mMediaDeviceUpdateWorker.mLocalMediaManager = mLocalMediaManager;
|
||||
mMediaOutputSlice.init(TEST_PACKAGE_NAME, mMediaDeviceUpdateWorker);
|
||||
mMediaOutputSlice.init(mMediaDeviceUpdateWorker);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSlice_workerIsNull_shouldReturnZeroRow() {
|
||||
mMediaOutputSlice.init(TEST_PACKAGE_NAME, null);
|
||||
mMediaOutputSlice.init(null);
|
||||
|
||||
final Slice slice = mMediaOutputSlice.getSlice();
|
||||
|
||||
|
Reference in New Issue
Block a user