Merge "Make media device chip change languages on settings change" into tm-dev

This commit is contained in:
Justin Weir
2022-05-09 21:04:36 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 9 deletions

View File

@@ -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)
}

View File

@@ -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