Merge "Use route name for output switcher chip" into sc-v2-dev am: db4082c251

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16202436

Change-Id: I49ab2038cb3bae8b888ef1162d2108fd7e6b7e9b
This commit is contained in:
Beth Thibodeau
2021-11-08 23:07:49 +00:00
committed by Automerger Merge Worker
3 changed files with 26 additions and 23 deletions

View File

@@ -109,11 +109,9 @@ class MediaDeviceManager @Inject constructor(
} }
@MainThread @MainThread
private fun processDevice(key: String, oldKey: String?, device: MediaDevice?) { private fun processDevice(key: String, oldKey: String?, device: MediaDeviceData?) {
val enabled = device != null
val data = MediaDeviceData(enabled, device?.iconWithoutBackground, device?.name)
listeners.forEach { listeners.forEach {
it.onMediaDeviceChanged(key, oldKey, data) it.onMediaDeviceChanged(key, oldKey, device)
} }
} }
@@ -135,7 +133,7 @@ class MediaDeviceManager @Inject constructor(
get() = controller?.sessionToken get() = controller?.sessionToken
private var started = false private var started = false
private var playbackType = PLAYBACK_TYPE_UNKNOWN private var playbackType = PLAYBACK_TYPE_UNKNOWN
private var current: MediaDevice? = null private var current: MediaDeviceData? = null
set(value) { set(value) {
if (!started || value != field) { if (!started || value != field) {
field = value field = value
@@ -201,15 +199,13 @@ class MediaDeviceManager @Inject constructor(
@WorkerThread @WorkerThread
private fun updateCurrent() { private fun updateCurrent() {
val device = localMediaManager.getCurrentConnectedDevice() val device = localMediaManager.currentConnectedDevice
controller?.let { val route = controller?.let { mr2manager.getRoutingSessionForMediaController(it)}
val route = mr2manager.getRoutingSessionForMediaController(it)
// If we get a null route, then don't trust the device. Just set to null to disable the // If we have a controller but get a null route, then don't trust the device
// output switcher chip. val enabled = device != null && (controller == null || route != null)
current = if (route != null) device else null val name = route?.name?.toString() ?: device?.name
} ?: run { current = MediaDeviceData(enabled, device?.iconWithoutBackground, name)
current = device
}
} }
} }
} }

View File

@@ -122,7 +122,7 @@ public class MediaControlPanelTest : SysuiTestCase() {
private lateinit var session: MediaSession private lateinit var session: MediaSession
private val device = MediaDeviceData(true, null, DEVICE_NAME) private val device = MediaDeviceData(true, null, DEVICE_NAME)
private val disabledDevice = MediaDeviceData(false, null, null) private val disabledDevice = MediaDeviceData(false, null, "Disabled Device")
@JvmField @Rule val mockito = MockitoJUnit.rule() @JvmField @Rule val mockito = MockitoJUnit.rule()

View File

@@ -56,6 +56,7 @@ private const val PACKAGE = "PKG"
private const val SESSION_KEY = "SESSION_KEY" private const val SESSION_KEY = "SESSION_KEY"
private const val SESSION_TITLE = "SESSION_TITLE" private const val SESSION_TITLE = "SESSION_TITLE"
private const val DEVICE_NAME = "DEVICE_NAME" private const val DEVICE_NAME = "DEVICE_NAME"
private const val REMOTE_DEVICE_NAME = "REMOTE_DEVICE_NAME"
private const val USER_ID = 0 private const val USER_ID = 0
private fun <T> eq(value: T): T = Mockito.eq(value) ?: value private fun <T> eq(value: T): T = Mockito.eq(value) ?: value
@@ -195,8 +196,6 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
// THEN the device should be disabled // THEN the device should be disabled
val data = captureDeviceData(KEY) val data = captureDeviceData(KEY)
assertThat(data.enabled).isFalse() assertThat(data.enabled).isFalse()
assertThat(data.name).isNull()
assertThat(data.icon).isNull()
} }
@Test @Test
@@ -262,6 +261,20 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
verify(listener).onKeyRemoved(eq(KEY)) verify(listener).onKeyRemoved(eq(KEY))
} }
@Test
fun deviceNameFromMR2RouteInfo() {
// GIVEN that MR2Manager returns a valid routing session
whenever(route.name).thenReturn(REMOTE_DEVICE_NAME)
// WHEN a notification is added
manager.onMediaDataLoaded(KEY, null, mediaData)
fakeBgExecutor.runAllReady()
fakeFgExecutor.runAllReady()
// THEN it uses the route name (instead of device name)
val data = captureDeviceData(KEY)
assertThat(data.enabled).isTrue()
assertThat(data.name).isEqualTo(REMOTE_DEVICE_NAME)
}
@Test @Test
fun deviceDisabledWhenMR2ReturnsNullRouteInfo() { fun deviceDisabledWhenMR2ReturnsNullRouteInfo() {
// GIVEN that MR2Manager returns null for routing session // GIVEN that MR2Manager returns null for routing session
@@ -273,8 +286,6 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
// THEN the device is disabled // THEN the device is disabled
val data = captureDeviceData(KEY) val data = captureDeviceData(KEY)
assertThat(data.enabled).isFalse() assertThat(data.enabled).isFalse()
assertThat(data.name).isNull()
assertThat(data.icon).isNull()
} }
@Test @Test
@@ -294,8 +305,6 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
// THEN the device is disabled // THEN the device is disabled
val data = captureDeviceData(KEY) val data = captureDeviceData(KEY)
assertThat(data.enabled).isFalse() assertThat(data.enabled).isFalse()
assertThat(data.name).isNull()
assertThat(data.icon).isNull()
} }
@Test @Test
@@ -315,8 +324,6 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
// THEN the device is disabled // THEN the device is disabled
val data = captureDeviceData(KEY) val data = captureDeviceData(KEY)
assertThat(data.enabled).isFalse() assertThat(data.enabled).isFalse()
assertThat(data.name).isNull()
assertThat(data.icon).isNull()
} }
@Test @Test