Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac6c0e9c authored by Beth Thibodeau's avatar Beth Thibodeau Committed by Automerger Merge Worker
Browse files

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

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

Change-Id: I91554b3a7e2da1874fed3390152e443d6d9c036f
parents da0bba54 f191dbd7
Loading
Loading
Loading
Loading
+10 −14
Original line number Original line Diff line number Diff line
@@ -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
            }
        }
        }
    }
    }
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -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()


+15 −8
Original line number Original line Diff line number Diff line
@@ -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