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

Commit f854580d authored by Michael Mikhail's avatar Michael Mikhail Committed by Automerger Merge Worker
Browse files

Merge "Revert^2 "Add UiEventLogger to TemporaryView"" into udc-dev am: f6966492 am: 1afe4478

parents 81c9e17a 1afe4478
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.view.View.ACCESSIBILITY_LIVE_REGION_NONE
import com.android.internal.widget.CachingIconView
import com.android.systemui.R
import com.android.app.animation.Interpolators
import com.android.internal.logging.InstanceId
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.ui.binder.TintedIconViewBinder
import com.android.systemui.dagger.SysUISingleton
@@ -49,6 +50,7 @@ import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.temporarydisplay.TemporaryViewDisplayController
import com.android.systemui.temporarydisplay.TemporaryViewInfo
import com.android.systemui.temporarydisplay.TemporaryViewUiEventLogger
import com.android.systemui.temporarydisplay.ViewPriority
import com.android.systemui.util.animation.AnimationUtil.Companion.frames
import com.android.systemui.util.concurrency.DelayableExecutor
@@ -82,6 +84,7 @@ open class MediaTttChipControllerReceiver @Inject constructor(
        wakeLockBuilder: WakeLock.Builder,
        systemClock: SystemClock,
        private val rippleController: MediaTttReceiverRippleController,
        private val temporaryViewUiEventLogger: TemporaryViewUiEventLogger,
) : TemporaryViewDisplayController<ChipReceiverInfo, MediaTttReceiverLogger>(
        context,
        logger,
@@ -94,6 +97,7 @@ open class MediaTttChipControllerReceiver @Inject constructor(
        R.layout.media_ttt_chip_receiver,
        wakeLockBuilder,
        systemClock,
        temporaryViewUiEventLogger,
) {
    @SuppressLint("WrongConstant") // We're allowed to use LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
    override val windowLayoutParams = commonWindowLayoutParams.apply {
@@ -125,6 +129,11 @@ open class MediaTttChipControllerReceiver @Inject constructor(
        }
    }

    // A map to store instance id per route info id.
    private var instanceMap: MutableMap<String, InstanceId> = mutableMapOf()

    private val displayListener = Listener { id, _ -> instanceMap.remove(id) }

    private fun updateMediaTapToTransferReceiverDisplay(
        @StatusBarManager.MediaTransferReceiverState displayState: Int,
        routeInfo: MediaRoute2Info,
@@ -139,12 +148,18 @@ open class MediaTttChipControllerReceiver @Inject constructor(
            logger.logStateChangeError(displayState)
            return
        }
        uiEventLogger.logReceiverStateChange(chipState)

        val instanceId: InstanceId = instanceMap[routeInfo.id]
                ?: temporaryViewUiEventLogger.getNewInstanceId()
        uiEventLogger.logReceiverStateChange(chipState, instanceId)

        if (chipState != ChipStateReceiver.CLOSE_TO_SENDER) {
            removeView(routeInfo.id, removalReason = chipState.name)
            return
        }

        // Save instance id to use for logging view events.
        instanceMap[routeInfo.id] = instanceId
        if (appIcon == null) {
            displayView(
                ChipReceiverInfo(
@@ -152,6 +167,7 @@ open class MediaTttChipControllerReceiver @Inject constructor(
                    appIconDrawableOverride = null,
                    appName,
                    id = routeInfo.id,
                    instanceId = instanceId,
                )
            )
            return
@@ -166,6 +182,7 @@ open class MediaTttChipControllerReceiver @Inject constructor(
                            drawable,
                            appName,
                            id = routeInfo.id,
                            instanceId = instanceId,
                        )
                    )
                },
@@ -180,6 +197,7 @@ open class MediaTttChipControllerReceiver @Inject constructor(
        if (mediaTttFlags.isMediaTttEnabled()) {
            commandQueue.addCallback(commandQueueCallbacks)
        }
        registerListener(displayListener)
    }

    override fun updateView(newInfo: ChipReceiverInfo, currentView: ViewGroup) {
@@ -342,4 +360,5 @@ data class ChipReceiverInfo(
    override val wakeReason: String = MediaTttUtils.WAKE_REASON_RECEIVER,
    override val id: String,
    override val priority: ViewPriority = ViewPriority.NORMAL,
    override val instanceId: InstanceId,
) : TemporaryViewInfo()
+3 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.media.taptotransfer.receiver

import com.android.internal.logging.InstanceId
import com.android.internal.logging.UiEvent
import com.android.internal.logging.UiEventLogger
import com.android.systemui.dagger.SysUISingleton
@@ -25,8 +26,8 @@ import javax.inject.Inject
@SysUISingleton
class MediaTttReceiverUiEventLogger @Inject constructor(private val logger: UiEventLogger) {
    /** Logs that the receiver chip has changed states. */
    fun logReceiverStateChange(chipState: ChipStateReceiver) {
        logger.log(chipState.uiEvent)
    fun logReceiverStateChange(chipState: ChipStateReceiver, instanceId: InstanceId) {
        logger.log(chipState.uiEvent, instanceId)
    }
}

+15 −6
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.StatusBarManager
import android.content.Context
import android.media.MediaRoute2Info
import android.view.View
import com.android.internal.logging.InstanceId
import com.android.internal.logging.UiEventLogger
import com.android.internal.statusbar.IUndoMediaTransferCallback
import com.android.systemui.CoreStartable
@@ -59,8 +60,8 @@ constructor(
    // Since the media transfer display is similar to a heads-up notification, use the same timeout.
    private val defaultTimeout = context.resources.getInteger(R.integer.heads_up_notification_decay)

    // A map to store current chip state per id.
    private var stateMap: MutableMap<String, ChipStateSender> = mutableMapOf()
    // A map to store instance id and current chip state per id.
    private var stateMap: MutableMap<String, Pair<InstanceId, ChipStateSender>> = mutableMapOf()

    private val commandQueueCallbacks =
        object : CommandQueue.Callbacks {
@@ -98,7 +99,10 @@ constructor(
            return
        }

        val currentStateForId: ChipStateSender? = stateMap[routeInfo.id]
        val currentStateForId: ChipStateSender? = stateMap[routeInfo.id]?.second
        val instanceId: InstanceId =
            stateMap[routeInfo.id]?.first
                ?: chipbarCoordinator.tempViewUiEventLogger.getNewInstanceId()
        if (!ChipStateSender.isValidStateTransition(currentStateForId, chipState)) {
            // ChipStateSender.FAR_FROM_RECEIVER is the default state when there is no state.
            logger.logInvalidStateTransitionError(
@@ -107,7 +111,7 @@ constructor(
            )
            return
        }
        uiEventLogger.logSenderStateChange(chipState)
        uiEventLogger.logSenderStateChange(chipState, instanceId)

        if (chipState == ChipStateSender.FAR_FROM_RECEIVER) {
            // Return early if we're not displaying a chip for this ID anyway
@@ -131,7 +135,7 @@ constructor(
            removeIdFromStore(routeInfo.id, reason = removalReason)
            chipbarCoordinator.removeView(routeInfo.id, removalReason)
        } else {
            stateMap[routeInfo.id] = chipState
            stateMap[routeInfo.id] = Pair(instanceId, chipState)
            logger.logStateMap(stateMap)
            chipbarCoordinator.registerListener(displayListener)
            chipbarCoordinator.displayView(
@@ -141,6 +145,7 @@ constructor(
                    undoCallback,
                    context,
                    logger,
                    instanceId,
                )
            )
        }
@@ -155,6 +160,7 @@ constructor(
        undoCallback: IUndoMediaTransferCallback?,
        context: Context,
        logger: MediaTttSenderLogger,
        instanceId: InstanceId,
    ): ChipbarInfo {
        val packageName = routeInfo.clientPackageName
        val otherDeviceName =
@@ -190,6 +196,7 @@ constructor(
                                chipStateSender.endItem.uiEventOnClick,
                                chipStateSender.endItem.newState,
                                routeInfo,
                                instanceId,
                            )
                        } else {
                            null
@@ -203,6 +210,7 @@ constructor(
            timeoutMs = timeout,
            id = routeInfo.id,
            priority = ViewPriority.NORMAL,
            instanceId = instanceId,
        )
    }

@@ -217,10 +225,11 @@ constructor(
        uiEvent: UiEventLogger.UiEventEnum,
        @StatusBarManager.MediaTransferSenderState newState: Int,
        routeInfo: MediaRoute2Info,
        instanceId: InstanceId,
    ): ChipbarEndItem.Button {
        val onClickListener =
            View.OnClickListener {
                uiEventLogger.logUndoClicked(uiEvent)
                uiEventLogger.logUndoClicked(uiEvent, instanceId)
                undoCallback.onUndoTriggered()

                // The external service should eventually send us a new TransferTriggered state, but
+2 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.media.taptotransfer.sender

import android.app.StatusBarManager
import com.android.internal.logging.InstanceId
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.LogLevel
@@ -86,7 +87,7 @@ constructor(
    }

    /** Logs the current contents of the state map. */
    fun logStateMap(map: Map<String, ChipStateSender>) {
    fun logStateMap(map: Map<String, Pair<InstanceId, ChipStateSender>>) {
        buffer.log(
            TAG,
            LogLevel.DEBUG,
+8 −6
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.media.taptotransfer.sender

import android.util.Log
import com.android.internal.logging.InstanceId
import com.android.internal.logging.UiEvent
import com.android.internal.logging.UiEventLogger
import com.android.systemui.dagger.SysUISingleton
@@ -26,8 +27,8 @@ import javax.inject.Inject
@SysUISingleton
class MediaTttSenderUiEventLogger @Inject constructor(private val logger: UiEventLogger) {
    /** Logs that the sender chip has changed states. */
    fun logSenderStateChange(chipState: ChipStateSender) {
        logger.log(chipState.uiEvent)
    fun logSenderStateChange(chipState: ChipStateSender, instanceId: InstanceId) {
        logger.log(chipState.uiEvent, instanceId)
    }

    /**
@@ -35,10 +36,11 @@ class MediaTttSenderUiEventLogger @Inject constructor(private val logger: UiEven
     *
     * @param undoUiEvent the uiEvent specific to which undo button was clicked.
     */
    fun logUndoClicked(undoUiEvent: UiEventLogger.UiEventEnum) {
    fun logUndoClicked(undoUiEvent: UiEventLogger.UiEventEnum, instanceId: InstanceId) {
        val isUndoEvent =
            undoUiEvent == MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED
                    || undoUiEvent ==
            undoUiEvent ==
                    MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_RECEIVER_CLICKED ||
                    undoUiEvent ==
                    MediaTttSenderUiEvents.MEDIA_TTT_SENDER_UNDO_TRANSFER_TO_THIS_DEVICE_CLICKED
        if (!isUndoEvent) {
            Log.w(
@@ -47,7 +49,7 @@ class MediaTttSenderUiEventLogger @Inject constructor(private val logger: UiEven
            )
            return
        }
        logger.log(undoUiEvent)
        logger.log(undoUiEvent, instanceId)
    }
}

Loading