Merge "Dump MediaDeviceManager state" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-06-16 00:25:53 +00:00
committed by Android (Google) Code Review
2 changed files with 34 additions and 3 deletions

View File

@@ -22,6 +22,10 @@ import android.media.session.MediaController
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.dagger.qualifiers.Main import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.Dumpable
import com.android.systemui.dump.DumpManager
import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.concurrent.Executor import java.util.concurrent.Executor
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -35,13 +39,15 @@ class MediaDeviceManager @Inject constructor(
private val localMediaManagerFactory: LocalMediaManagerFactory, private val localMediaManagerFactory: LocalMediaManagerFactory,
private val mr2manager: MediaRouter2Manager, private val mr2manager: MediaRouter2Manager,
@Main private val fgExecutor: Executor, @Main private val fgExecutor: Executor,
private val mediaDataManager: MediaDataManager private val mediaDataManager: MediaDataManager,
) : MediaDataManager.Listener { private val dumpManager: DumpManager
) : MediaDataManager.Listener, Dumpable {
private val listeners: MutableSet<Listener> = mutableSetOf() private val listeners: MutableSet<Listener> = mutableSetOf()
private val entries: MutableMap<String, Token> = mutableMapOf() private val entries: MutableMap<String, Token> = mutableMapOf()
init { init {
mediaDataManager.addListener(this) mediaDataManager.addListener(this)
dumpManager.registerDumpable(javaClass.name, this)
} }
/** /**
@@ -81,6 +87,17 @@ class MediaDeviceManager @Inject constructor(
} }
} }
override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
with(pw) {
println("MediaDeviceManager state:")
entries.forEach {
key, entry ->
println(" key=$key")
entry.dump(fd, pw, args)
}
}
}
private fun processDevice(key: String, device: MediaDevice?) { private fun processDevice(key: String, device: MediaDevice?) {
val enabled = device != null val enabled = device != null
val data = MediaDeviceData(enabled, device?.iconWithoutBackground, device?.name) val data = MediaDeviceData(enabled, device?.iconWithoutBackground, device?.name)
@@ -122,6 +139,17 @@ class MediaDeviceManager @Inject constructor(
localMediaManager.stopScan() localMediaManager.stopScan()
localMediaManager.unregisterCallback(this) localMediaManager.unregisterCallback(this)
} }
fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
val route = controller?.let {
mr2manager.getRoutingSessionForMediaController(it)
}
with(pw) {
println(" current device is ${current?.name}")
val type = controller?.playbackInfo?.playbackType
println(" PlaybackType=$type (1 for local, 2 for remote)")
println(" route=$route")
}
}
override fun onDeviceListUpdate(devices: List<MediaDevice>?) = fgExecutor.execute { override fun onDeviceListUpdate(devices: List<MediaDevice>?) = fgExecutor.execute {
updateCurrent() updateCurrent()
} }

View File

@@ -30,6 +30,7 @@ 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.util.concurrency.FakeExecutor import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.time.FakeSystemClock import com.android.systemui.util.time.FakeSystemClock
@@ -71,6 +72,7 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
@Mock private lateinit var lmm: LocalMediaManager @Mock private lateinit var lmm: LocalMediaManager
@Mock private lateinit var mr2: MediaRouter2Manager @Mock private lateinit var mr2: MediaRouter2Manager
private lateinit var fakeExecutor: FakeExecutor private lateinit var fakeExecutor: FakeExecutor
@Mock private lateinit var dumpster: DumpManager
@Mock private lateinit var listener: MediaDeviceManager.Listener @Mock private lateinit var listener: MediaDeviceManager.Listener
@Mock private lateinit var device: MediaDevice @Mock private lateinit var device: MediaDevice
@Mock private lateinit var icon: Drawable @Mock private lateinit var icon: Drawable
@@ -85,7 +87,8 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
@Before @Before
fun setUp() { fun setUp() {
fakeExecutor = FakeExecutor(FakeSystemClock()) fakeExecutor = FakeExecutor(FakeSystemClock())
manager = MediaDeviceManager(context, lmmFactory, mr2, fakeExecutor, mediaDataManager) manager = MediaDeviceManager(context, lmmFactory, mr2, fakeExecutor, mediaDataManager,
dumpster)
manager.addListener(listener) manager.addListener(listener)
// Configure mocks. // Configure mocks.