From 9563acf6dba6224f6275f0ff7bfa3ecb494ed16b Mon Sep 17 00:00:00 2001 From: Jorge Gil Date: Tue, 19 Nov 2024 23:58:05 +0000 Subject: 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 --- .../com/android/wm/shell/dagger/WMShellModule.java | 9 ++++ .../shell/desktopmode/DesktopModeUiEventLogger.kt | 56 +++++++++++----------- .../desktopmode/DesktopModeUiEventLoggerTest.kt | 6 +-- 3 files changed, 40 insertions(+), 31 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java index 37ba63e9e0a9..c11d6faca782 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java @@ -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 // diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUiEventLogger.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUiEventLogger.kt index a9d4e5f3216e..dff56c13e03a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUiEventLogger.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUiEventLogger.kt @@ -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,28 +64,32 @@ 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) } - companion object { - /** Enums for logging desktop windowing mode UiEvents. */ - enum class DesktopUiEventEnum(private val mId: Int) : UiEventLogger.UiEventEnum { + private fun logD(msg: String, vararg arguments: Any?) { + ProtoLog.d(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments) + } - @UiEvent(doc = "Resize the window in desktop windowing mode by dragging the edge") - DESKTOP_WINDOW_EDGE_DRAG_RESIZE(1721), - @UiEvent(doc = "Resize the window in desktop windowing mode by dragging the corner") - DESKTOP_WINDOW_CORNER_DRAG_RESIZE(1722), - @UiEvent(doc = "Tap on the window header maximize button in desktop windowing mode") - DESKTOP_WINDOW_MAXIMIZE_BUTTON_TAP(1723), - @UiEvent(doc = "Double tap on window header to maximize it in desktop windowing mode") - DESKTOP_WINDOW_HEADER_DOUBLE_TAP_TO_MAXIMIZE(1724); + /** Enums for logging desktop windowing mode UiEvents. */ + enum class DesktopUiEventEnum(private val mId: Int) : UiEventEnum { - override fun getId(): Int = mId - } + @UiEvent(doc = "Resize the window in desktop windowing mode by dragging the edge") + DESKTOP_WINDOW_EDGE_DRAG_RESIZE(1721), + @UiEvent(doc = "Resize the window in desktop windowing mode by dragging the corner") + DESKTOP_WINDOW_CORNER_DRAG_RESIZE(1722), + @UiEvent(doc = "Tap on the window header maximize button in desktop windowing mode") + DESKTOP_WINDOW_MAXIMIZE_BUTTON_TAP(1723), + @UiEvent(doc = "Double tap on window header to maximize it in desktop windowing mode") + DESKTOP_WINDOW_HEADER_DOUBLE_TAP_TO_MAXIMIZE(1724); + override fun getId(): Int = mId + } + + companion object { private const val TAG = "DesktopModeUiEventLogger" } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeUiEventLoggerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeUiEventLoggerTest.kt index 51b291c0b7a4..a8b2811e46be 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeUiEventLoggerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeUiEventLoggerTest.kt @@ -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 -- cgit v1.2.3-59-g8ed1b