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

Commit fe14c7a3 authored by Justin Weir's avatar Justin Weir
Browse files

Make media device chip change languages on settings change

Bug: 229578208
Test: Ran all the tests and manually verified
Change-Id: I36a34ebf98b6f68fb1d52df4177c975584679b78
parent 4a8619ce
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManager
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManagerFactory
import com.android.systemui.statusbar.policy.ConfigurationController
import java.io.PrintWriter
import java.util.concurrent.Executor
import javax.inject.Inject
@@ -44,6 +45,7 @@ class MediaDeviceManager @Inject constructor(
    private val localMediaManagerFactory: LocalMediaManagerFactory,
    private val mr2manager: MediaRouter2Manager,
    private val muteAwaitConnectionManagerFactory: MediaMuteAwaitConnectionManagerFactory,
    private val configurationController: ConfigurationController,
    @Main private val fgExecutor: Executor,
    @Background private val bgExecutor: Executor,
    dumpManager: DumpManager
@@ -79,7 +81,7 @@ class MediaDeviceManager @Inject constructor(
            oldEntry?.stop()
        }
        var entry = entries[key]
        if (entry == null || entry?.token != data.token) {
        if (entry == null || entry.token != data.token) {
            entry?.stop()
            if (data.device != null) {
                // If we were already provided device info (e.g. from RCN), keep that and don't
@@ -118,10 +120,9 @@ class MediaDeviceManager @Inject constructor(
    override fun dump(pw: PrintWriter, args: Array<String>) {
        with(pw) {
            println("MediaDeviceManager state:")
            entries.forEach {
                key, entry ->
            entries.forEach { (key, entry) ->
                println("  key=$key")
                entry.dump(pw, args)
                entry.dump(pw)
            }
        }
    }
@@ -165,6 +166,12 @@ class MediaDeviceManager @Inject constructor(
        // expected to connect imminently, it should be displayed as the current device.
        private var aboutToConnectDeviceOverride: AboutToConnectDevice? = null

        private val configListener = object : ConfigurationController.ConfigurationListener {
            override fun onLocaleListChanged() {
                updateCurrent()
            }
        }

        @AnyThread
        fun start() = bgExecutor.execute {
            localMediaManager.registerCallback(this)
@@ -174,6 +181,7 @@ class MediaDeviceManager @Inject constructor(
            controller?.registerCallback(this)
            updateCurrent()
            started = true
            configurationController.addCallback(configListener)
        }

        @AnyThread
@@ -183,9 +191,10 @@ class MediaDeviceManager @Inject constructor(
            localMediaManager.stopScan()
            localMediaManager.unregisterCallback(this)
            muteAwaitConnectionManager?.stopListening()
            configurationController.removeCallback(configListener)
        }

        fun dump(pw: PrintWriter, args: Array<String>) {
        fun dump(pw: PrintWriter) {
            val routingSession = controller?.let {
                mr2manager.getRoutingSessionForMediaController(it)
            }
+4 −4
Original line number Diff line number Diff line
@@ -25,19 +25,17 @@ import android.media.session.MediaSession
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import androidx.test.filters.SmallTest

import com.android.settingslib.media.LocalMediaManager
import com.android.settingslib.media.MediaDevice
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManager
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManagerFactory
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.time.FakeSystemClock

import com.google.common.truth.Truth.assertThat

import org.junit.After
import org.junit.Before
import org.junit.Rule
@@ -50,8 +48,8 @@ import org.mockito.Mockito.mock
import org.mockito.Mockito.never
import org.mockito.Mockito.reset
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.junit.MockitoJUnit
import org.mockito.Mockito.`when` as whenever

private const val KEY = "TEST_KEY"
private const val KEY_OLD = "TEST_KEY_OLD"
@@ -81,6 +79,7 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
    @Mock private lateinit var route: RoutingSessionInfo
    @Mock private lateinit var controller: MediaController
    @Mock private lateinit var playbackInfo: PlaybackInfo
    @Mock private lateinit var configurationController: ConfigurationController
    private lateinit var session: MediaSession
    private lateinit var mediaData: MediaData
    @JvmField @Rule val mockito = MockitoJUnit.rule()
@@ -94,6 +93,7 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
                lmmFactory,
                mr2,
                muteAwaitFactory,
                configurationController,
                fakeFgExecutor,
                fakeBgExecutor,
                dumpster