Merge "Fix output switcher will show wrong active device" into rvc-dev am: 8911616d84
Change-Id: I37d76e1096a2e1e5cef17449ab962d375ecc1663
This commit is contained in:
@@ -56,7 +56,7 @@ import java.util.concurrent.Executors;
|
|||||||
public class InfoMediaManager extends MediaManager {
|
public class InfoMediaManager extends MediaManager {
|
||||||
|
|
||||||
private static final String TAG = "InfoMediaManager";
|
private static final String TAG = "InfoMediaManager";
|
||||||
private static final boolean DEBUG = false;
|
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
final RouterManagerCallback mMediaRouterCallback = new RouterManagerCallback();
|
final RouterManagerCallback mMediaRouterCallback = new RouterManagerCallback();
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -364,8 +364,8 @@ public class InfoMediaManager extends MediaManager {
|
|||||||
private void buildAvailableRoutes() {
|
private void buildAvailableRoutes() {
|
||||||
for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) {
|
for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "buildAvailableRoutes() route : " + route.getName()
|
Log.d(TAG, "buildAvailableRoutes() route : " + route.getName() + ", volume : "
|
||||||
+ ", type : " + route.getType());
|
+ route.getVolume() + ", type : " + route.getType());
|
||||||
}
|
}
|
||||||
addMediaDevice(route);
|
addMediaDevice(route);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -394,7 +394,9 @@ public class LocalMediaManager implements BluetoothCallback {
|
|||||||
return mPackageName;
|
return mPackageName;
|
||||||
}
|
}
|
||||||
|
|
||||||
private MediaDevice updateCurrentConnectedDevice() {
|
@VisibleForTesting
|
||||||
|
MediaDevice updateCurrentConnectedDevice() {
|
||||||
|
MediaDevice connectedDevice = null;
|
||||||
synchronized (mMediaDevicesLock) {
|
synchronized (mMediaDevicesLock) {
|
||||||
for (MediaDevice device : mMediaDevices) {
|
for (MediaDevice device : mMediaDevices) {
|
||||||
if (device instanceof BluetoothMediaDevice) {
|
if (device instanceof BluetoothMediaDevice) {
|
||||||
@@ -402,12 +404,12 @@ public class LocalMediaManager implements BluetoothCallback {
|
|||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
} else if (device instanceof PhoneMediaDevice) {
|
} else if (device instanceof PhoneMediaDevice) {
|
||||||
return device;
|
connectedDevice = device;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Log.w(TAG, "updateCurrentConnectedDevice() can't found current connected device");
|
|
||||||
return null;
|
return connectedDevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isActiveDevice(CachedBluetoothDevice device) {
|
private boolean isActiveDevice(CachedBluetoothDevice device) {
|
||||||
|
|||||||
@@ -590,7 +590,7 @@ public class InfoMediaManagerTest {
|
|||||||
final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID);
|
final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID);
|
||||||
assertThat(mediaDevice).isNull();
|
assertThat(mediaDevice).isNull();
|
||||||
|
|
||||||
mInfoMediaManager.mMediaRouterCallback.onTransferred(null, null);
|
mInfoMediaManager.mMediaRouterCallback.onTransferred(sessionInfo, sessionInfo);
|
||||||
|
|
||||||
final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0);
|
final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0);
|
||||||
assertThat(infoDevice.getId()).isEqualTo(TEST_ID);
|
assertThat(infoDevice.getId()).isEqualTo(TEST_ID);
|
||||||
@@ -602,6 +602,7 @@ public class InfoMediaManagerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void onTransferred_buildAllRoutes_shouldAddMediaDevice() {
|
public void onTransferred_buildAllRoutes_shouldAddMediaDevice() {
|
||||||
final MediaRoute2Info info = mock(MediaRoute2Info.class);
|
final MediaRoute2Info info = mock(MediaRoute2Info.class);
|
||||||
|
final RoutingSessionInfo sessionInfo = mock(RoutingSessionInfo.class);
|
||||||
mInfoMediaManager.registerCallback(mCallback);
|
mInfoMediaManager.registerCallback(mCallback);
|
||||||
|
|
||||||
when(info.getId()).thenReturn(TEST_ID);
|
when(info.getId()).thenReturn(TEST_ID);
|
||||||
@@ -616,7 +617,7 @@ public class InfoMediaManagerTest {
|
|||||||
assertThat(mediaDevice).isNull();
|
assertThat(mediaDevice).isNull();
|
||||||
|
|
||||||
mInfoMediaManager.mPackageName = "";
|
mInfoMediaManager.mPackageName = "";
|
||||||
mInfoMediaManager.mMediaRouterCallback.onTransferred(null, null);
|
mInfoMediaManager.mMediaRouterCallback.onTransferred(sessionInfo, sessionInfo);
|
||||||
|
|
||||||
final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0);
|
final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0);
|
||||||
assertThat(infoDevice.getId()).isEqualTo(TEST_ID);
|
assertThat(infoDevice.getId()).isEqualTo(TEST_ID);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.when;
|
|||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
import android.bluetooth.BluetoothClass;
|
import android.bluetooth.BluetoothClass;
|
||||||
import android.bluetooth.BluetoothDevice;
|
import android.bluetooth.BluetoothDevice;
|
||||||
|
import android.bluetooth.BluetoothProfile;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.media.MediaRoute2Info;
|
import android.media.MediaRoute2Info;
|
||||||
import android.media.MediaRouter2Manager;
|
import android.media.MediaRouter2Manager;
|
||||||
@@ -725,4 +726,44 @@ public class LocalMediaManagerTest {
|
|||||||
|
|
||||||
verify(mInfoMediaManager).adjustSessionVolume(info, 10);
|
verify(mInfoMediaManager).adjustSessionVolume(info, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateCurrentConnectedDevice_bluetoothDeviceIsActive_returnBluetoothDevice() {
|
||||||
|
final BluetoothMediaDevice device1 = mock(BluetoothMediaDevice.class);
|
||||||
|
final BluetoothMediaDevice device2 = mock(BluetoothMediaDevice.class);
|
||||||
|
final PhoneMediaDevice phoneDevice = mock(PhoneMediaDevice.class);
|
||||||
|
final CachedBluetoothDevice cachedDevice1 = mock(CachedBluetoothDevice.class);
|
||||||
|
final CachedBluetoothDevice cachedDevice2 = mock(CachedBluetoothDevice.class);
|
||||||
|
|
||||||
|
when(device1.getCachedDevice()).thenReturn(cachedDevice1);
|
||||||
|
when(device2.getCachedDevice()).thenReturn(cachedDevice2);
|
||||||
|
when(cachedDevice1.isActiveDevice(BluetoothProfile.A2DP)).thenReturn(false);
|
||||||
|
when(cachedDevice2.isActiveDevice(BluetoothProfile.A2DP)).thenReturn(true);
|
||||||
|
|
||||||
|
mLocalMediaManager.mMediaDevices.add(device1);
|
||||||
|
mLocalMediaManager.mMediaDevices.add(phoneDevice);
|
||||||
|
mLocalMediaManager.mMediaDevices.add(device2);
|
||||||
|
|
||||||
|
assertThat(mLocalMediaManager.updateCurrentConnectedDevice()).isEqualTo(device2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateCurrentConnectedDevice_phoneDeviceIsActive_returnPhoneDevice() {
|
||||||
|
final BluetoothMediaDevice device1 = mock(BluetoothMediaDevice.class);
|
||||||
|
final BluetoothMediaDevice device2 = mock(BluetoothMediaDevice.class);
|
||||||
|
final PhoneMediaDevice phoneDevice = mock(PhoneMediaDevice.class);
|
||||||
|
final CachedBluetoothDevice cachedDevice1 = mock(CachedBluetoothDevice.class);
|
||||||
|
final CachedBluetoothDevice cachedDevice2 = mock(CachedBluetoothDevice.class);
|
||||||
|
|
||||||
|
when(device1.getCachedDevice()).thenReturn(cachedDevice1);
|
||||||
|
when(device2.getCachedDevice()).thenReturn(cachedDevice2);
|
||||||
|
when(cachedDevice1.isActiveDevice(BluetoothProfile.A2DP)).thenReturn(false);
|
||||||
|
when(cachedDevice2.isActiveDevice(BluetoothProfile.A2DP)).thenReturn(false);
|
||||||
|
|
||||||
|
mLocalMediaManager.mMediaDevices.add(device1);
|
||||||
|
mLocalMediaManager.mMediaDevices.add(phoneDevice);
|
||||||
|
mLocalMediaManager.mMediaDevices.add(device2);
|
||||||
|
|
||||||
|
assertThat(mLocalMediaManager.updateCurrentConnectedDevice()).isEqualTo(phoneDevice);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user