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

Commit d7e7535c authored by Beth Thibodeau's avatar Beth Thibodeau Committed by Android (Google) Code Review
Browse files

Revert^2 "Add LogBuffer for media device changes"

This reverts commit 84f36038.

Reason for revert: re-landing, see b/363398124#comment8

Change-Id: I2aecff2620e7444b88b66140dbc1c84e59cd2ebf
parent 84f36038
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -382,6 +382,16 @@ public class LogModule {
        return factory.create("MediaLog", 20);
        return factory.create("MediaLog", 20);
    }
    }


    /**
     * Provides a buffer for media device changes
     */
    @Provides
    @SysUISingleton
    @MediaDeviceLog
    public static LogBuffer providesMediaDeviceLogBuffer(LogBufferFactory factory) {
        return factory.create("MediaDeviceLog", 50);
    }

    /** Allows logging buffers to be tweaked via adb on debug builds but not on prod builds. */
    /** Allows logging buffers to be tweaked via adb on debug builds but not on prod builds. */
    @Provides
    @Provides
    @SysUISingleton
    @SysUISingleton
+26 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.log.dagger

import com.android.systemui.log.LogBuffer
import javax.inject.Qualifier

/** A [LogBuffer] for [com.android.systemui.media.controls.domain.pipeline.MediaDeviceLogger] */
@Qualifier
@MustBeDocumented
@Retention(AnnotationRetention.RUNTIME)
annotation class MediaDeviceLog
+116 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.media.controls.domain.pipeline

import android.media.session.MediaController
import com.android.settingslib.media.MediaDevice
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.LogLevel
import com.android.systemui.log.dagger.MediaDeviceLog
import com.android.systemui.media.controls.shared.model.MediaDeviceData
import javax.inject.Inject

/** A [LogBuffer] for media device changes */
class MediaDeviceLogger @Inject constructor(@MediaDeviceLog private val buffer: LogBuffer) {

    fun logBroadcastEvent(event: String, reason: Int, broadcastId: Int) {
        buffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                str1 = event
                int1 = reason
                int2 = broadcastId
            },
            { "$str1, reason = $int1, broadcastId = $int2" }
        )
    }

    fun logBroadcastEvent(event: String, reason: Int) {
        buffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                str1 = event
                int1 = reason
            },
            { "$str1, reason = $int1" }
        )
    }

    fun logBroadcastMetadataChanged(broadcastId: Int, metadata: String) {
        buffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                int1 = broadcastId
                str1 = metadata
            },
            { "onBroadcastMetadataChanged, broadcastId = $int1, metadata = $str1" }
        )
    }

    fun logNewDeviceName(name: String?) {
        buffer.log(TAG, LogLevel.DEBUG, { str1 = name }, { "New device name $str1" })
    }

    fun logLocalDevice(sassDevice: MediaDeviceData?, connectedDevice: MediaDeviceData?) {
        buffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                str1 = sassDevice?.name?.toString()
                str2 = connectedDevice?.name?.toString()
            },
            { "Local device: $str1 or $str2" }
        )
    }

    fun logRemoteDevice(routingSessionName: CharSequence?, connectedDevice: MediaDeviceData?) {
        buffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                str1 = routingSessionName?.toString()
                str2 = connectedDevice?.name?.toString()
            },
            { "Remote device: $str1 or $str2 or unknown" }
        )
    }

    fun logDeviceName(
        device: MediaDevice?,
        controller: MediaController?,
        routingSessionName: CharSequence?,
        selectedRouteName: CharSequence?
    ) {
        buffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                str1 = "device $device, controller: $controller"
                str2 = routingSessionName?.toString()
                str3 = selectedRouteName?.toString()
            },
            { "$str1, routingSession $str2 or selected route $str3" }
        )
    }

    companion object {
        private const val TAG = "MediaDeviceLog"
    }
}
+20 −40
Original line number Original line Diff line number Diff line
@@ -71,6 +71,7 @@ constructor(
    private val localBluetoothManager: Lazy<LocalBluetoothManager?>,
    private val localBluetoothManager: Lazy<LocalBluetoothManager?>,
    @Main private val fgExecutor: Executor,
    @Main private val fgExecutor: Executor,
    @Background private val bgExecutor: Executor,
    @Background private val bgExecutor: Executor,
    private val logger: MediaDeviceLogger,
) : MediaDataManager.Listener {
) : MediaDataManager.Listener {


    private val listeners: MutableSet<Listener> = mutableSetOf()
    private val listeners: MutableSet<Listener> = mutableSetOf()
@@ -281,59 +282,38 @@ constructor(
        }
        }


        override fun onBroadcastStarted(reason: Int, broadcastId: Int) {
        override fun onBroadcastStarted(reason: Int, broadcastId: Int) {
            if (DEBUG) {
            logger.logBroadcastEvent("onBroadcastStarted", reason, broadcastId)
                Log.d(TAG, "onBroadcastStarted(), reason = $reason , broadcastId = $broadcastId")
            }
            updateCurrent()
            updateCurrent()
        }
        }


        override fun onBroadcastStartFailed(reason: Int) {
        override fun onBroadcastStartFailed(reason: Int) {
            if (DEBUG) {
            logger.logBroadcastEvent("onBroadcastStartFailed", reason)
                Log.d(TAG, "onBroadcastStartFailed(), reason = $reason")
            }
        }
        }


        override fun onBroadcastMetadataChanged(
        override fun onBroadcastMetadataChanged(
            broadcastId: Int,
            broadcastId: Int,
            metadata: BluetoothLeBroadcastMetadata
            metadata: BluetoothLeBroadcastMetadata
        ) {
        ) {
            if (DEBUG) {
            logger.logBroadcastMetadataChanged(broadcastId, metadata.toString())
                Log.d(
                    TAG,
                    "onBroadcastMetadataChanged(), broadcastId = $broadcastId , " +
                        "metadata = $metadata"
                )
            }
            updateCurrent()
            updateCurrent()
        }
        }


        override fun onBroadcastStopped(reason: Int, broadcastId: Int) {
        override fun onBroadcastStopped(reason: Int, broadcastId: Int) {
            if (DEBUG) {
            logger.logBroadcastEvent("onBroadcastStopped", reason, broadcastId)
                Log.d(TAG, "onBroadcastStopped(), reason = $reason , broadcastId = $broadcastId")
            }
            updateCurrent()
            updateCurrent()
        }
        }


        override fun onBroadcastStopFailed(reason: Int) {
        override fun onBroadcastStopFailed(reason: Int) {
            if (DEBUG) {
            logger.logBroadcastEvent("onBroadcastStopFailed", reason)
                Log.d(TAG, "onBroadcastStopFailed(), reason = $reason")
            }
        }
        }


        override fun onBroadcastUpdated(reason: Int, broadcastId: Int) {
        override fun onBroadcastUpdated(reason: Int, broadcastId: Int) {
            if (DEBUG) {
            logger.logBroadcastEvent("onBroadcastUpdated", reason, broadcastId)
                Log.d(TAG, "onBroadcastUpdated(), reason = $reason , broadcastId = $broadcastId")
            }
            updateCurrent()
            updateCurrent()
        }
        }


        override fun onBroadcastUpdateFailed(reason: Int, broadcastId: Int) {
        override fun onBroadcastUpdateFailed(reason: Int, broadcastId: Int) {
            if (DEBUG) {
            logger.logBroadcastEvent("onBroadcastUpdateFailed", reason, broadcastId)
                Log.d(
                    TAG,
                    "onBroadcastUpdateFailed(), reason = $reason , " + "broadcastId = $broadcastId"
                )
            }
        }
        }


        override fun onPlaybackStarted(reason: Int, broadcastId: Int) {}
        override fun onPlaybackStarted(reason: Int, broadcastId: Int) {}
@@ -381,12 +361,16 @@ constructor(
                                name = context.getString(R.string.media_seamless_other_device),
                                name = context.getString(R.string.media_seamless_other_device),
                                showBroadcastButton = false
                                showBroadcastButton = false
                            )
                            )
                    logger.logRemoteDevice(routingSession?.name, connectedDevice)
                } else {
                } else {
                    // Prefer SASS if available when playback is local.
                    // Prefer SASS if available when playback is local.
                    activeDevice = getSassDevice() ?: connectedDevice
                    val sassDevice = getSassDevice()
                    activeDevice = sassDevice ?: connectedDevice
                    logger.logLocalDevice(sassDevice, connectedDevice)
                }
                }


                current = activeDevice ?: EMPTY_AND_DISABLED_MEDIA_DEVICE_DATA
                current = activeDevice ?: EMPTY_AND_DISABLED_MEDIA_DEVICE_DATA
                logger.logNewDeviceName(current?.name?.toString())
            } else {
            } else {
                val aboutToConnect = aboutToConnectDeviceOverride
                val aboutToConnect = aboutToConnectDeviceOverride
                if (
                if (
@@ -407,9 +391,7 @@ constructor(
                val enabled = device != null && (controller == null || routingSession != null)
                val enabled = device != null && (controller == null || routingSession != null)


                val name = getDeviceName(device, routingSession)
                val name = getDeviceName(device, routingSession)
                if (DEBUG) {
                logger.logNewDeviceName(name)
                    Log.d(TAG, "new device name $name")
                }
                current =
                current =
                    MediaDeviceData(
                    MediaDeviceData(
                        enabled,
                        enabled,
@@ -463,14 +445,12 @@ constructor(
        ): String? {
        ): String? {
            val selectedRoutes = routingSession?.let { mr2manager.get().getSelectedRoutes(it) }
            val selectedRoutes = routingSession?.let { mr2manager.get().getSelectedRoutes(it) }


            if (DEBUG) {
            logger.logDeviceName(
                Log.d(
                device,
                    TAG,
                controller,
                    "device is $device, controller $controller," +
                routingSession?.name,
                        " routingSession ${routingSession?.name}" +
                selectedRoutes?.firstOrNull()?.name
                        " or ${selectedRoutes?.firstOrNull()?.name}"
            )
            )
            }


            if (controller == null) {
            if (controller == null) {
                // In resume state, we don't have a controller - just use the device name
                // In resume state, we don't have a controller - just use the device name
+4 −0
Original line number Original line Diff line number Diff line
@@ -54,6 +54,7 @@ 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.res.R
import com.android.systemui.res.R
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.testKosmos
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
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
@@ -125,6 +126,8 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
    private lateinit var mediaData: MediaData
    private lateinit var mediaData: MediaData
    @JvmField @Rule val mockito = MockitoJUnit.rule()
    @JvmField @Rule val mockito = MockitoJUnit.rule()


    private val kosmos = testKosmos()

    @Before
    @Before
    fun setUp() {
    fun setUp() {
        fakeFgExecutor = FakeExecutor(FakeSystemClock())
        fakeFgExecutor = FakeExecutor(FakeSystemClock())
@@ -141,6 +144,7 @@ public class MediaDeviceManagerTest : SysuiTestCase() {
                { localBluetoothManager },
                { localBluetoothManager },
                fakeFgExecutor,
                fakeFgExecutor,
                fakeBgExecutor,
                fakeBgExecutor,
                kosmos.mediaDeviceLogger,
            )
            )
        manager.addListener(listener)
        manager.addListener(listener)


Loading