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.dump.DumpManager
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManager import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManager
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManagerFactory import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManagerFactory
import com.android.systemui.statusbar.policy.ConfigurationController
import java.io.PrintWriter import java.io.PrintWriter
import java.util.concurrent.Executor import java.util.concurrent.Executor
import javax.inject.Inject import javax.inject.Inject
@@ -44,6 +45,7 @@ class MediaDeviceManager @Inject constructor(
private val localMediaManagerFactory: LocalMediaManagerFactory, private val localMediaManagerFactory: LocalMediaManagerFactory,
private val mr2manager: MediaRouter2Manager, private val mr2manager: MediaRouter2Manager,
private val muteAwaitConnectionManagerFactory: MediaMuteAwaitConnectionManagerFactory, private val muteAwaitConnectionManagerFactory: MediaMuteAwaitConnectionManagerFactory,
private val configurationController: ConfigurationController,
@Main private val fgExecutor: Executor, @Main private val fgExecutor: Executor,
@Background private val bgExecutor: Executor, @Background private val bgExecutor: Executor,
dumpManager: DumpManager dumpManager: DumpManager
@@ -79,7 +81,7 @@ class MediaDeviceManager @Inject constructor(
oldEntry?.stop() oldEntry?.stop()
} }
var entry = entries[key] var entry = entries[key]
if (entry == null || entry?.token != data.token) { if (entry == null || entry.token != data.token) {
entry?.stop() entry?.stop()
if (data.device != null) { if (data.device != null) {
// If we were already provided device info (e.g. from RCN), keep that and don't // 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>) { override fun dump(pw: PrintWriter, args: Array<String>) {
with(pw) { with(pw) {
println("MediaDeviceManager state:") println("MediaDeviceManager state:")
entries.forEach { entries.forEach { (key, entry) ->
key, entry ->
println(" key=$key") 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. // expected to connect imminently, it should be displayed as the current device.
private var aboutToConnectDeviceOverride: AboutToConnectDevice? = null private var aboutToConnectDeviceOverride: AboutToConnectDevice? = null
private val configListener = object : ConfigurationController.ConfigurationListener {
override fun onLocaleListChanged() {
updateCurrent()
}
}
@AnyThread @AnyThread
fun start() = bgExecutor.execute { fun start() = bgExecutor.execute {
localMediaManager.registerCallback(this) localMediaManager.registerCallback(this)
@@ -174,6 +181,7 @@ class MediaDeviceManager @Inject constructor(
controller?.registerCallback(this) controller?.registerCallback(this)
updateCurrent() updateCurrent()
started = true started = true
configurationController.addCallback(configListener)
} }
@AnyThread @AnyThread
@@ -183,9 +191,10 @@ class MediaDeviceManager @Inject constructor(
localMediaManager.stopScan() localMediaManager.stopScan()
localMediaManager.unregisterCallback(this) localMediaManager.unregisterCallback(this)
muteAwaitConnectionManager?.stopListening() muteAwaitConnectionManager?.stopListening()
configurationController.removeCallback(configListener)
} }
fun dump(pw: PrintWriter, args: Array<String>) { fun dump(pw: PrintWriter) {
val routingSession = controller?.let { val routingSession = controller?.let {
mr2manager.getRoutingSessionForMediaController(it) mr2manager.getRoutingSessionForMediaController(it)
} }

View File

@@ -25,19 +25,17 @@ import android.media.session.MediaSession
import android.testing.AndroidTestingRunner import android.testing.AndroidTestingRunner
import android.testing.TestableLooper import android.testing.TestableLooper
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.settingslib.media.LocalMediaManager import com.android.settingslib.media.LocalMediaManager
import com.android.settingslib.media.MediaDevice import com.android.settingslib.media.MediaDevice
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager import com.android.systemui.dump.DumpManager
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManager import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManager
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManagerFactory 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.concurrency.FakeExecutor
import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.eq
import com.android.systemui.util.time.FakeSystemClock import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import org.junit.After import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
@@ -50,8 +48,8 @@ import org.mockito.Mockito.mock
import org.mockito.Mockito.never import org.mockito.Mockito.never
import org.mockito.Mockito.reset import org.mockito.Mockito.reset
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.junit.MockitoJUnit import org.mockito.junit.MockitoJUnit
import org.mockito.Mockito.`when` as whenever
private const val KEY = "TEST_KEY" private const val KEY = "TEST_KEY"
private const val KEY_OLD = "TEST_KEY_OLD" 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 route: RoutingSessionInfo
@Mock private lateinit var controller: MediaController @Mock private lateinit var controller: MediaController
@Mock private lateinit var playbackInfo: PlaybackInfo @Mock private lateinit var playbackInfo: PlaybackInfo
@Mock private lateinit var configurationController: ConfigurationController
private lateinit var session: MediaSession private lateinit var session: MediaSession
private lateinit var mediaData: MediaData private lateinit var mediaData: MediaData
@JvmField @Rule val mockito = MockitoJUnit.rule() @JvmField @Rule val mockito = MockitoJUnit.rule()
@@ -94,6 +93,7 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
lmmFactory, lmmFactory,
mr2, mr2,
muteAwaitFactory, muteAwaitFactory,
configurationController,
fakeFgExecutor, fakeFgExecutor,
fakeBgExecutor, fakeBgExecutor,
dumpster dumpster