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

Commit 9563acf6 authored by Jorge Gil's avatar Jorge Gil
Browse files

Make DesktopModeUiEventLogger injectable

Provide the logger using @Provides in WMShellModule instead of @Inject,
and remove the InstanceIdSequence dependency since there is no provider
of that in the dagger graph and thus this logger wasn't able to be
injected as is.

Also makes a couple of styling changes to the logger class:
1) Removed hungarian notation
2) Moved event enum out of the companion object to avoid compilation
   warnings
3) Converted android.util.Log to Protologs

Bug: 341319606
Test: m WMShellUnitTests
Flag: EXEMPT refactor
Change-Id: Iefe177beada997878dce961fc50cea247709c3ea
parent 2ad2f908
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ import com.android.wm.shell.desktopmode.DesktopModeDragAndDropTransitionHandler;
import com.android.wm.shell.desktopmode.DesktopModeEventLogger;
import com.android.wm.shell.desktopmode.DesktopModeKeyGestureHandler;
import com.android.wm.shell.desktopmode.DesktopModeLoggerTransitionObserver;
import com.android.wm.shell.desktopmode.DesktopModeUiEventLogger;
import com.android.wm.shell.desktopmode.DesktopRepository;
import com.android.wm.shell.desktopmode.DesktopTaskChangeListener;
import com.android.wm.shell.desktopmode.DesktopTasksController;
@@ -1208,6 +1209,14 @@ public abstract class WMShellModule {
                mainScope);
    }

    @WMSingleton
    @Provides
    static DesktopModeUiEventLogger provideDesktopUiEventLogger(
            UiEventLogger uiEventLogger
    ) {
        return new DesktopModeUiEventLogger(uiEventLogger);
    }

    //
    // Drag and drop
    //
+29 −27
Original line number Diff line number Diff line
@@ -16,22 +16,20 @@

package com.android.wm.shell.desktopmode

import android.util.Log
import com.android.internal.logging.InstanceId
import com.android.internal.logging.InstanceIdSequence
import com.android.internal.logging.UiEvent
import com.android.internal.logging.UiEventLogger
import com.android.wm.shell.dagger.WMSingleton
import javax.inject.Inject
import com.android.internal.logging.UiEventLogger.UiEventEnum
import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE

/** Log Aster UIEvents for desktop windowing mode. */
@WMSingleton
class DesktopModeUiEventLogger
@Inject
constructor(
    private val mUiEventLogger: UiEventLogger,
    private val mInstanceIdSequence: InstanceIdSequence
class DesktopModeUiEventLogger(
    private val uiEventLogger: UiEventLogger,
) {
    private val instanceIdSequence = InstanceIdSequence(Integer.MAX_VALUE)

    /**
     * Logs an event for a CUI, on a particular package.
     *
@@ -41,14 +39,14 @@ constructor(
     */
    fun log(uid: Int, packageName: String, event: DesktopUiEventEnum) {
        if (packageName.isEmpty() || uid < 0) {
            Log.d(TAG, "Skip logging since package name is empty or bad uid")
            logD("Skip logging since package name is empty or bad uid")
            return
        }
        mUiEventLogger.log(event, uid, packageName)
        uiEventLogger.log(event, uid, packageName)
    }

    /** Retrieves a new instance id for a new interaction. */
    fun getNewInstanceId(): InstanceId = mInstanceIdSequence.newInstanceId()
    fun getNewInstanceId(): InstanceId = instanceIdSequence.newInstanceId()

    /**
     * Logs an event as part of a particular CUI, on a particular package.
@@ -66,15 +64,18 @@ constructor(
        event: DesktopUiEventEnum
    ) {
        if (packageName.isEmpty() || uid < 0) {
            Log.d(TAG, "Skip logging since package name is empty or bad uid")
            logD("Skip logging since package name is empty or bad uid")
            return
        }
        mUiEventLogger.logWithInstanceId(event, uid, packageName, instanceId)
        uiEventLogger.logWithInstanceId(event, uid, packageName, instanceId)
    }

    private fun logD(msg: String, vararg arguments: Any?) {
        ProtoLog.d(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments)
    }

    companion object {
    /** Enums for logging desktop windowing mode UiEvents. */
        enum class DesktopUiEventEnum(private val mId: Int) : UiEventLogger.UiEventEnum {
    enum class DesktopUiEventEnum(private val mId: Int) : UiEventEnum {

        @UiEvent(doc = "Resize the window in desktop windowing mode by dragging the edge")
        DESKTOP_WINDOW_EDGE_DRAG_RESIZE(1721),
@@ -88,6 +89,7 @@ constructor(
        override fun getId(): Int = mId
    }

    companion object {
        private const val TAG = "DesktopModeUiEventLogger"
    }
}
+2 −4
Original line number Diff line number Diff line
@@ -20,10 +20,9 @@ package com.android.wm.shell.desktopmode
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.internal.logging.InstanceIdSequence
import com.android.internal.logging.testing.UiEventLoggerFake
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.desktopmode.DesktopModeUiEventLogger.Companion.DesktopUiEventEnum.DESKTOP_WINDOW_EDGE_DRAG_RESIZE
import com.android.wm.shell.desktopmode.DesktopModeUiEventLogger.DesktopUiEventEnum.DESKTOP_WINDOW_EDGE_DRAG_RESIZE
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
@@ -39,13 +38,12 @@ import org.junit.runner.RunWith
class DesktopModeUiEventLoggerTest : ShellTestCase() {
    private lateinit var uiEventLoggerFake: UiEventLoggerFake
    private lateinit var logger: DesktopModeUiEventLogger
    private val instanceIdSequence = InstanceIdSequence(/* instanceIdMax */ 1 shl 20)


    @Before
    fun setUp() {
        uiEventLoggerFake = UiEventLoggerFake()
        logger = DesktopModeUiEventLogger(uiEventLoggerFake, instanceIdSequence)
        logger = DesktopModeUiEventLogger(uiEventLoggerFake)
    }

    @Test