diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt | 19 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/media/MediaDeviceManagerTest.kt | 8 |
2 files changed, 18 insertions, 9 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt index f85078c24603..11ee6578e27d 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt @@ -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) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDeviceManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDeviceManagerTest.kt index 10eeb11faa05..18ee79138b52 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDeviceManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDeviceManagerTest.kt @@ -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 |