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

Commit 2ede2ad0 authored by Jorge Gil's avatar Jorge Gil Committed by Android (Google) Code Review
Browse files

Merge "Make DesktopModeUiEventLogger injectable" into main

parents c8eda708 9563acf6
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -83,6 +83,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;
@@ -1230,6 +1231,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