summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeEventLogger.kt133
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt40
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeEventLoggerTest.kt348
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserverTest.kt156
4 files changed, 427 insertions, 250 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeEventLogger.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeEventLogger.kt
index 5a277316ffd4..349c8e2b3c22 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeEventLogger.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeEventLogger.kt
@@ -21,17 +21,39 @@ import com.android.internal.protolog.ProtoLog
import com.android.internal.util.FrameworkStatsLog
import com.android.window.flags.Flags
import com.android.wm.shell.EventLogTags
-import com.android.wm.shell.protolog.ShellProtoLogGroup
+import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
+import java.security.SecureRandom
+import java.util.Random
+import java.util.concurrent.atomic.AtomicInteger
+
/** Event logger for logging desktop mode session events */
class DesktopModeEventLogger {
+ private val random: Random = SecureRandom()
+
+ /** The session id for the current desktop mode session */
+ @VisibleForTesting
+ val currentSessionId: AtomicInteger = AtomicInteger(NO_SESSION_ID)
+
+ private fun generateSessionId() = 1 + random.nextInt(1 shl 20)
+
/**
- * Logs the enter of desktop mode having session id [sessionId] and the reason [enterReason] for
- * entering desktop mode
+ * Logs enter into desktop mode with [enterReason]
*/
- fun logSessionEnter(sessionId: Int, enterReason: EnterReason) {
+ fun logSessionEnter(enterReason: EnterReason) {
+ val sessionId = generateSessionId()
+ val previousSessionId = currentSessionId.getAndSet(sessionId)
+ if (previousSessionId != NO_SESSION_ID) {
+ ProtoLog.w(
+ WM_SHELL_DESKTOP_MODE,
+ "DesktopModeLogger: Existing desktop mode session id: %s found on desktop "
+ + "mode enter",
+ previousSessionId
+ )
+ }
+
ProtoLog.v(
- ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
+ WM_SHELL_DESKTOP_MODE,
"DesktopModeLogger: Logging session enter, session: %s reason: %s",
sessionId,
enterReason.name
@@ -47,12 +69,20 @@ class DesktopModeEventLogger {
}
/**
- * Logs the exit of desktop mode having session id [sessionId] and the reason [exitReason] for
- * exiting desktop mode
+ * Logs exit from desktop mode session with [exitReason]
*/
- fun logSessionExit(sessionId: Int, exitReason: ExitReason) {
+ fun logSessionExit(exitReason: ExitReason) {
+ val sessionId = currentSessionId.getAndSet(NO_SESSION_ID)
+ if (sessionId == NO_SESSION_ID) {
+ ProtoLog.w(
+ WM_SHELL_DESKTOP_MODE,
+ "DesktopModeLogger: No session id found for logging exit from desktop mode"
+ )
+ return
+ }
+
ProtoLog.v(
- ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
+ WM_SHELL_DESKTOP_MODE,
"DesktopModeLogger: Logging session exit, session: %s reason: %s",
sessionId,
exitReason.name
@@ -68,12 +98,20 @@ class DesktopModeEventLogger {
}
/**
- * Logs that the task with update [taskUpdate] was added in the desktop mode session having
- * session id [sessionId]
+ * Logs that a task with [taskUpdate] was added in a desktop mode session
*/
- fun logTaskAdded(sessionId: Int, taskUpdate: TaskUpdate) {
+ fun logTaskAdded(taskUpdate: TaskUpdate) {
+ val sessionId = currentSessionId.get()
+ if (sessionId == NO_SESSION_ID) {
+ ProtoLog.w(
+ WM_SHELL_DESKTOP_MODE,
+ "DesktopModeLogger: No session id found for logging task added"
+ )
+ return
+ }
+
ProtoLog.v(
- ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
+ WM_SHELL_DESKTOP_MODE,
"DesktopModeLogger: Logging task added, session: %s taskId: %s",
sessionId,
taskUpdate.instanceId
@@ -85,12 +123,20 @@ class DesktopModeEventLogger {
}
/**
- * Logs that the task with update [taskUpdate] was removed in the desktop mode session having
- * session id [sessionId]
+ * Logs that a task with [taskUpdate] was removed from a desktop mode session
*/
- fun logTaskRemoved(sessionId: Int, taskUpdate: TaskUpdate) {
+ fun logTaskRemoved(taskUpdate: TaskUpdate) {
+ val sessionId = currentSessionId.get()
+ if (sessionId == NO_SESSION_ID) {
+ ProtoLog.w(
+ WM_SHELL_DESKTOP_MODE,
+ "DesktopModeLogger: No session id found for logging task removed"
+ )
+ return
+ }
+
ProtoLog.v(
- ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
+ WM_SHELL_DESKTOP_MODE,
"DesktopModeLogger: Logging task remove, session: %s taskId: %s",
sessionId,
taskUpdate.instanceId
@@ -102,12 +148,20 @@ class DesktopModeEventLogger {
}
/**
- * Logs that the task with update [taskUpdate] had it's info changed in the desktop mode session
- * having session id [sessionId]
+ * Logs that a task with [taskUpdate] had it's info changed in a desktop mode session
*/
- fun logTaskInfoChanged(sessionId: Int, taskUpdate: TaskUpdate) {
+ fun logTaskInfoChanged(taskUpdate: TaskUpdate) {
+ val sessionId = currentSessionId.get()
+ if (sessionId == NO_SESSION_ID) {
+ ProtoLog.w(
+ WM_SHELL_DESKTOP_MODE,
+ "DesktopModeLogger: No session id found for logging task info changed"
+ )
+ return
+ }
+
ProtoLog.v(
- ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
+ WM_SHELL_DESKTOP_MODE,
"DesktopModeLogger: Logging task info changed, session: %s taskId: %s",
sessionId,
taskUpdate.instanceId
@@ -119,14 +173,23 @@ class DesktopModeEventLogger {
}
/**
- * Logs that a task resize event is starting with [taskSizeUpdate] within a
- * Desktop mode [sessionId].
+ * Logs that a task resize event is starting with [taskSizeUpdate] within a Desktop mode
+ * session.
*/
- fun logTaskResizingStarted(sessionId: Int, taskSizeUpdate: TaskSizeUpdate) {
+ fun logTaskResizingStarted(taskSizeUpdate: TaskSizeUpdate) {
if (!Flags.enableResizingMetrics()) return
+ val sessionId = currentSessionId.get()
+ if (sessionId == NO_SESSION_ID) {
+ ProtoLog.w(
+ WM_SHELL_DESKTOP_MODE,
+ "DesktopModeLogger: No session id found for logging start of task resizing"
+ )
+ return
+ }
+
ProtoLog.v(
- ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
+ WM_SHELL_DESKTOP_MODE,
"DesktopModeLogger: Logging task resize is starting, session: %s taskId: %s",
sessionId,
taskSizeUpdate.instanceId
@@ -138,14 +201,22 @@ class DesktopModeEventLogger {
}
/**
- * Logs that a task resize event is ending with [taskSizeUpdate] within a
- * Desktop mode [sessionId].
+ * Logs that a task resize event is ending with [taskSizeUpdate] within a Desktop mode session.
*/
- fun logTaskResizingEnded(sessionId: Int, taskSizeUpdate: TaskSizeUpdate) {
+ fun logTaskResizingEnded(taskSizeUpdate: TaskSizeUpdate) {
if (!Flags.enableResizingMetrics()) return
+ val sessionId = currentSessionId.get()
+ if (sessionId == NO_SESSION_ID) {
+ ProtoLog.w(
+ WM_SHELL_DESKTOP_MODE,
+ "DesktopModeLogger: No session id found for logging end of task resizing"
+ )
+ return
+ }
+
ProtoLog.v(
- ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
+ WM_SHELL_DESKTOP_MODE,
"DesktopModeLogger: Logging task resize is ending, session: %s taskId: %s",
sessionId,
taskSizeUpdate.instanceId
@@ -233,6 +304,7 @@ class DesktopModeEventLogger {
}
companion object {
+
/**
* Describes a task position and dimensions.
*
@@ -450,5 +522,6 @@ class DesktopModeEventLogger {
FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE
private const val DESKTOP_MODE_TASK_SIZE_UPDATED_ATOM_ID =
FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED
+ @VisibleForTesting const val NO_SESSION_ID = 0
}
-}
+} \ No newline at end of file
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt
index b8507e3b2764..d2b483dff2ef 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt
@@ -35,8 +35,6 @@ import androidx.core.util.isEmpty
import androidx.core.util.isNotEmpty
import androidx.core.util.plus
import androidx.core.util.putAll
-import com.android.internal.logging.InstanceId
-import com.android.internal.logging.InstanceIdSequence
import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.EnterReason
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ExitReason
@@ -48,8 +46,8 @@ import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG
import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
-import com.android.wm.shell.shared.desktopmode.DesktopModeStatus
import com.android.wm.shell.shared.TransitionUtil
+import com.android.wm.shell.shared.desktopmode.DesktopModeStatus
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.transition.Transitions
@@ -65,8 +63,6 @@ class DesktopModeLoggerTransitionObserver(
private val desktopModeEventLogger: DesktopModeEventLogger
) : Transitions.TransitionObserver {
- private val idSequence: InstanceIdSequence by lazy { InstanceIdSequence(Int.MAX_VALUE) }
-
init {
if (DesktopModeStatus.canEnterDesktopMode(context)) {
shellInit.addInitCallback(this::onInit, this)
@@ -87,15 +83,7 @@ class DesktopModeLoggerTransitionObserver(
// following enter reason could be Screen On
private var wasPreviousTransitionExitByScreenOff: Boolean = false
- // The instanceId for the current logging session
- private var loggerInstanceId: InstanceId? = null
-
- private val isSessionActive: Boolean
- get() = loggerInstanceId != null
-
- private fun setSessionInactive() {
- loggerInstanceId = null
- }
+ @VisibleForTesting var isSessionActive: Boolean = false
fun onInit() {
transitions.registerObserver(this)
@@ -246,38 +234,32 @@ class DesktopModeLoggerTransitionObserver(
) {
// Sessions is finishing, log task updates followed by an exit event
identifyAndLogTaskUpdates(
- loggerInstanceId!!.id,
preTransitionVisibleFreeformTasks,
postTransitionVisibleFreeformTasks
)
desktopModeEventLogger.logSessionExit(
- loggerInstanceId!!.id,
getExitReason(transitionInfo)
)
-
- setSessionInactive()
+ isSessionActive = false
} else if (
postTransitionVisibleFreeformTasks.isNotEmpty() &&
preTransitionVisibleFreeformTasks.isEmpty() &&
!isSessionActive
) {
// Session is starting, log enter event followed by task updates
- loggerInstanceId = idSequence.newInstanceId()
+ isSessionActive = true
desktopModeEventLogger.logSessionEnter(
- loggerInstanceId!!.id,
getEnterReason(transitionInfo)
)
identifyAndLogTaskUpdates(
- loggerInstanceId!!.id,
preTransitionVisibleFreeformTasks,
postTransitionVisibleFreeformTasks
)
} else if (isSessionActive) {
// Session is neither starting, nor finishing, log task updates if there are any
identifyAndLogTaskUpdates(
- loggerInstanceId!!.id,
preTransitionVisibleFreeformTasks,
postTransitionVisibleFreeformTasks
)
@@ -290,7 +272,6 @@ class DesktopModeLoggerTransitionObserver(
/** Compare the old and new state of taskInfos and identify and log the changes */
private fun identifyAndLogTaskUpdates(
- sessionId: Int,
preTransitionVisibleFreeformTasks: SparseArray<TaskInfo>,
postTransitionVisibleFreeformTasks: SparseArray<TaskInfo>
) {
@@ -301,7 +282,7 @@ class DesktopModeLoggerTransitionObserver(
when {
// new tasks added
previousTaskInfo == null -> {
- desktopModeEventLogger.logTaskAdded(sessionId, currentTaskUpdate)
+ desktopModeEventLogger.logTaskAdded(currentTaskUpdate)
Trace.setCounter(
Trace.TRACE_TAG_WINDOW_MANAGER,
VISIBLE_TASKS_COUNTER_NAME,
@@ -314,14 +295,14 @@ class DesktopModeLoggerTransitionObserver(
// TODO(b/347935387): Log changes only once they are stable.
buildTaskUpdateForTask(previousTaskInfo, postTransitionVisibleFreeformTasks.size())
!= currentTaskUpdate ->
- desktopModeEventLogger.logTaskInfoChanged(sessionId, currentTaskUpdate)
+ desktopModeEventLogger.logTaskInfoChanged(currentTaskUpdate)
}
}
// find old tasks that were removed
preTransitionVisibleFreeformTasks.forEach { taskId, taskInfo ->
if (!postTransitionVisibleFreeformTasks.containsKey(taskId)) {
- desktopModeEventLogger.logTaskRemoved(sessionId,
+ desktopModeEventLogger.logTaskRemoved(
buildTaskUpdateForTask(taskInfo, postTransitionVisibleFreeformTasks.size()))
Trace.setCounter(
Trace.TRACE_TAG_WINDOW_MANAGER,
@@ -416,13 +397,6 @@ class DesktopModeLoggerTransitionObserver(
visibleFreeformTaskInfos.set(taskInfo.taskId, taskInfo)
}
- @VisibleForTesting fun getLoggerSessionId(): Int? = loggerInstanceId?.id
-
- @VisibleForTesting
- fun setLoggerSessionId(id: Int) {
- loggerInstanceId = InstanceId.fakeInstanceId(id)
- }
-
private fun TransitionInfo.Change.requireTaskInfo(): RunningTaskInfo {
return this.taskInfo ?: throw IllegalStateException("Expected TaskInfo in the Change")
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeEventLoggerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeEventLoggerTest.kt
index d7a132dfa1be..f2741a622539 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeEventLoggerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeEventLoggerTest.kt
@@ -16,10 +16,12 @@
package com.android.wm.shell.desktopmode
-import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.flag.junit.SetFlagsRule
+import com.android.dx.mockito.inline.extended.ExtendedMockito.clearInvocations
+import com.android.dx.mockito.inline.extended.ExtendedMockito.staticMockMarker
import com.android.dx.mockito.inline.extended.ExtendedMockito.verify
+import com.android.dx.mockito.inline.extended.ExtendedMockito.verifyZeroInteractions
import com.android.internal.util.FrameworkStatsLog
import com.android.modules.utils.testing.ExtendedMockitoRule
import com.android.window.flags.Flags
@@ -27,15 +29,16 @@ import com.android.wm.shell.EventLogTags
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.EnterReason
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ExitReason
+import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.InputMethod
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.MinimizeReason
+import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.NO_SESSION_ID
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.ResizeTrigger
-import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.InputMethod
-import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.TaskUpdate
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.TaskSizeUpdate
-import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UnminimizeReason
+import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.TaskUpdate
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UNSET_MINIMIZE_REASON
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UNSET_UNMINIMIZE_REASON
-import kotlinx.coroutines.runBlocking
+import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UnminimizeReason
+import com.google.common.truth.Truth.assertThat
import org.junit.Rule
import org.junit.Test
import org.mockito.kotlin.eq
@@ -50,40 +53,87 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
@JvmField
@Rule(order = 0)
val extendedMockitoRule = ExtendedMockitoRule.Builder(this)
- .mockStatic(FrameworkStatsLog::class.java)
- .mockStatic(EventLogTags::class.java).build()!!
+ .mockStatic(FrameworkStatsLog::class.java)
+ .mockStatic(EventLogTags::class.java).build()!!
@JvmField
@Rule(order = 1)
val setFlagsRule = SetFlagsRule()
@Test
- fun logSessionEnter_enterReason() = runBlocking {
- desktopModeEventLogger.logSessionEnter(sessionId = SESSION_ID, EnterReason.UNKNOWN_ENTER)
+ fun logSessionEnter_logsEnterReasonWithNewSessionId() {
+ desktopModeEventLogger.logSessionEnter(EnterReason.KEYBOARD_SHORTCUT_ENTER)
+ val sessionId = desktopModeEventLogger.currentSessionId.get()
+ assertThat(sessionId).isNotEqualTo(NO_SESSION_ID)
verify {
FrameworkStatsLog.write(
eq(FrameworkStatsLog.DESKTOP_MODE_UI_CHANGED),
/* event */
eq(FrameworkStatsLog.DESKTOP_MODE_UICHANGED__EVENT__ENTER),
/* enter_reason */
- eq(FrameworkStatsLog.DESKTOP_MODE_UICHANGED__ENTER_REASON__UNKNOWN_ENTER),
+ eq(FrameworkStatsLog.DESKTOP_MODE_UICHANGED__ENTER_REASON__KEYBOARD_SHORTCUT_ENTER),
/* exit_reason */
eq(0),
/* sessionId */
- eq(SESSION_ID)
+ eq(sessionId)
)
}
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
verify {
EventLogTags.writeWmShellEnterDesktopMode(
- eq(EnterReason.UNKNOWN_ENTER.reason),
- eq(SESSION_ID))
+ eq(EnterReason.KEYBOARD_SHORTCUT_ENTER.reason),
+ eq(sessionId)
+ )
}
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
}
@Test
- fun logSessionExit_exitReason() = runBlocking {
- desktopModeEventLogger.logSessionExit(sessionId = SESSION_ID, ExitReason.UNKNOWN_EXIT)
+ fun logSessionEnter_ongoingSession_logsEnterReasonWithNewSessionId() {
+ val previousSessionId = startDesktopModeSession()
+
+ desktopModeEventLogger.logSessionEnter(EnterReason.KEYBOARD_SHORTCUT_ENTER)
+
+ val sessionId = desktopModeEventLogger.currentSessionId.get()
+ assertThat(sessionId).isNotEqualTo(NO_SESSION_ID)
+ assertThat(sessionId).isNotEqualTo(previousSessionId)
+ verify {
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DESKTOP_MODE_UI_CHANGED),
+ /* event */
+ eq(FrameworkStatsLog.DESKTOP_MODE_UICHANGED__EVENT__ENTER),
+ /* enter_reason */
+ eq(FrameworkStatsLog.DESKTOP_MODE_UICHANGED__ENTER_REASON__KEYBOARD_SHORTCUT_ENTER),
+ /* exit_reason */
+ eq(0),
+ /* sessionId */
+ eq(sessionId)
+ )
+ }
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
+ verify {
+ EventLogTags.writeWmShellEnterDesktopMode(
+ eq(EnterReason.KEYBOARD_SHORTCUT_ENTER.reason),
+ eq(sessionId)
+ )
+ }
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
+ }
+
+ @Test
+ fun logSessionExit_noOngoingSession_doesNotLog() {
+ desktopModeEventLogger.logSessionExit(ExitReason.DRAG_TO_EXIT)
+
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
+ }
+
+ @Test
+ fun logSessionExit_logsExitReasonAndClearsSessionId() {
+ val sessionId = startDesktopModeSession()
+
+ desktopModeEventLogger.logSessionExit(ExitReason.DRAG_TO_EXIT)
verify {
FrameworkStatsLog.write(
@@ -93,24 +143,39 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
/* enter_reason */
eq(0),
/* exit_reason */
- eq(FrameworkStatsLog.DESKTOP_MODE_UICHANGED__EXIT_REASON__UNKNOWN_EXIT),
+ eq(FrameworkStatsLog.DESKTOP_MODE_UICHANGED__EXIT_REASON__DRAG_TO_EXIT),
/* sessionId */
- eq(SESSION_ID)
+ eq(sessionId)
)
}
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
verify {
EventLogTags.writeWmShellExitDesktopMode(
- eq(ExitReason.UNKNOWN_EXIT.reason),
- eq(SESSION_ID))
+ eq(ExitReason.DRAG_TO_EXIT.reason),
+ eq(sessionId)
+ )
}
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
+ assertThat(desktopModeEventLogger.currentSessionId.get()).isEqualTo(NO_SESSION_ID)
}
@Test
- fun logTaskAdded_taskUpdate() = runBlocking {
- desktopModeEventLogger.logTaskAdded(sessionId = SESSION_ID, TASK_UPDATE)
+ fun logTaskAdded_noOngoingSession_doesNotLog() {
+ desktopModeEventLogger.logTaskAdded(TASK_UPDATE)
+
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
+ }
+
+ @Test
+ fun logTaskAdded_logsTaskUpdate() {
+ val sessionId = startDesktopModeSession()
+
+ desktopModeEventLogger.logTaskAdded(TASK_UPDATE)
verify {
- FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE),
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE),
/* task_event */
eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_ADDED),
/* instance_id */
@@ -126,36 +191,52 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
/* task_y */
eq(TASK_UPDATE.taskY),
/* session_id */
- eq(SESSION_ID),
+ eq(sessionId),
eq(UNSET_MINIMIZE_REASON),
eq(UNSET_UNMINIMIZE_REASON),
/* visible_task_count */
- eq(TASK_COUNT))
+ eq(TASK_COUNT)
+ )
}
-
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
verify {
EventLogTags.writeWmShellDesktopModeTaskUpdate(
- eq(FrameworkStatsLog
- .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_ADDED),
+ eq(
+ FrameworkStatsLog
+ .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_ADDED
+ ),
eq(TASK_UPDATE.instanceId),
eq(TASK_UPDATE.uid),
eq(TASK_UPDATE.taskHeight),
eq(TASK_UPDATE.taskWidth),
eq(TASK_UPDATE.taskX),
eq(TASK_UPDATE.taskY),
- eq(SESSION_ID),
+ eq(sessionId),
eq(UNSET_MINIMIZE_REASON),
eq(UNSET_UNMINIMIZE_REASON),
- eq(TASK_COUNT))
+ eq(TASK_COUNT)
+ )
}
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
}
@Test
- fun logTaskRemoved_taskUpdate() = runBlocking {
- desktopModeEventLogger.logTaskRemoved(sessionId = SESSION_ID, TASK_UPDATE)
+ fun logTaskRemoved_noOngoingSession_doesNotLog() {
+ desktopModeEventLogger.logTaskRemoved(TASK_UPDATE)
+
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
+ }
+
+ @Test
+ fun logTaskRemoved_taskUpdate() {
+ val sessionId = startDesktopModeSession()
+
+ desktopModeEventLogger.logTaskRemoved(TASK_UPDATE)
verify {
- FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE),
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE),
/* task_event */
eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_REMOVED),
/* instance_id */
@@ -171,39 +252,57 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
/* task_y */
eq(TASK_UPDATE.taskY),
/* session_id */
- eq(SESSION_ID),
+ eq(sessionId),
eq(UNSET_MINIMIZE_REASON),
eq(UNSET_UNMINIMIZE_REASON),
/* visible_task_count */
- eq(TASK_COUNT))
+ eq(TASK_COUNT)
+ )
}
-
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
verify {
EventLogTags.writeWmShellDesktopModeTaskUpdate(
- eq(FrameworkStatsLog
- .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_REMOVED),
+ eq(
+ FrameworkStatsLog
+ .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_REMOVED
+ ),
eq(TASK_UPDATE.instanceId),
eq(TASK_UPDATE.uid),
eq(TASK_UPDATE.taskHeight),
eq(TASK_UPDATE.taskWidth),
eq(TASK_UPDATE.taskX),
eq(TASK_UPDATE.taskY),
- eq(SESSION_ID),
+ eq(sessionId),
eq(UNSET_MINIMIZE_REASON),
eq(UNSET_UNMINIMIZE_REASON),
- eq(TASK_COUNT))
+ eq(TASK_COUNT)
+ )
}
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
+ }
+
+ @Test
+ fun logTaskInfoChanged_noOngoingSession_doesNotLog() {
+ desktopModeEventLogger.logTaskInfoChanged(TASK_UPDATE)
+
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
}
@Test
- fun logTaskInfoChanged_taskUpdate() = runBlocking {
- desktopModeEventLogger.logTaskInfoChanged(sessionId = SESSION_ID, TASK_UPDATE)
+ fun logTaskInfoChanged_taskUpdate() {
+ val sessionId = startDesktopModeSession()
+
+ desktopModeEventLogger.logTaskInfoChanged(TASK_UPDATE)
verify {
- FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE),
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE),
/* task_event */
- eq(FrameworkStatsLog
- .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED),
+ eq(
+ FrameworkStatsLog
+ .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED
+ ),
/* instance_id */
eq(TASK_UPDATE.instanceId),
/* uid */
@@ -217,40 +316,51 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
/* task_y */
eq(TASK_UPDATE.taskY),
/* session_id */
- eq(SESSION_ID),
+ eq(sessionId),
eq(UNSET_MINIMIZE_REASON),
eq(UNSET_UNMINIMIZE_REASON),
/* visible_task_count */
- eq(TASK_COUNT))
+ eq(TASK_COUNT)
+ )
}
-
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
verify {
EventLogTags.writeWmShellDesktopModeTaskUpdate(
- eq(FrameworkStatsLog
- .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED),
+ eq(
+ FrameworkStatsLog
+ .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED
+ ),
eq(TASK_UPDATE.instanceId),
eq(TASK_UPDATE.uid),
eq(TASK_UPDATE.taskHeight),
eq(TASK_UPDATE.taskWidth),
eq(TASK_UPDATE.taskX),
eq(TASK_UPDATE.taskY),
- eq(SESSION_ID),
+ eq(sessionId),
eq(UNSET_MINIMIZE_REASON),
eq(UNSET_UNMINIMIZE_REASON),
- eq(TASK_COUNT))
+ eq(TASK_COUNT)
+ )
}
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
}
@Test
- fun logTaskInfoChanged_logsTaskUpdateWithMinimizeReason() = runBlocking {
- desktopModeEventLogger.logTaskInfoChanged(sessionId = SESSION_ID,
- createTaskUpdate(minimizeReason = MinimizeReason.TASK_LIMIT))
+ fun logTaskInfoChanged_logsTaskUpdateWithMinimizeReason() {
+ val sessionId = startDesktopModeSession()
+
+ desktopModeEventLogger.logTaskInfoChanged(
+ createTaskUpdate(minimizeReason = MinimizeReason.TASK_LIMIT)
+ )
verify {
- FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE),
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE),
/* task_event */
- eq(FrameworkStatsLog
- .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED),
+ eq(
+ FrameworkStatsLog
+ .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED
+ ),
/* instance_id */
eq(TASK_UPDATE.instanceId),
/* uid */
@@ -264,42 +374,53 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
/* task_y */
eq(TASK_UPDATE.taskY),
/* session_id */
- eq(SESSION_ID),
+ eq(sessionId),
/* minimize_reason */
eq(MinimizeReason.TASK_LIMIT.reason),
/* unminimize_reason */
eq(UNSET_UNMINIMIZE_REASON),
/* visible_task_count */
- eq(TASK_COUNT))
+ eq(TASK_COUNT)
+ )
}
-
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
verify {
EventLogTags.writeWmShellDesktopModeTaskUpdate(
- eq(FrameworkStatsLog
- .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED),
+ eq(
+ FrameworkStatsLog
+ .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED
+ ),
eq(TASK_UPDATE.instanceId),
eq(TASK_UPDATE.uid),
eq(TASK_UPDATE.taskHeight),
eq(TASK_UPDATE.taskWidth),
eq(TASK_UPDATE.taskX),
eq(TASK_UPDATE.taskY),
- eq(SESSION_ID),
+ eq(sessionId),
eq(MinimizeReason.TASK_LIMIT.reason),
eq(UNSET_UNMINIMIZE_REASON),
- eq(TASK_COUNT))
+ eq(TASK_COUNT)
+ )
}
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
}
@Test
- fun logTaskInfoChanged_logsTaskUpdateWithUnminimizeReason() = runBlocking {
- desktopModeEventLogger.logTaskInfoChanged(sessionId = SESSION_ID,
- createTaskUpdate(unminimizeReason = UnminimizeReason.TASKBAR_TAP))
+ fun logTaskInfoChanged_logsTaskUpdateWithUnminimizeReason() {
+ val sessionId = startDesktopModeSession()
+
+ desktopModeEventLogger.logTaskInfoChanged(
+ createTaskUpdate(unminimizeReason = UnminimizeReason.TASKBAR_TAP)
+ )
verify {
- FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE),
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DESKTOP_MODE_SESSION_TASK_UPDATE),
/* task_event */
- eq(FrameworkStatsLog
- .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED),
+ eq(
+ FrameworkStatsLog
+ .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED
+ ),
/* instance_id */
eq(TASK_UPDATE.instanceId),
/* uid */
@@ -313,39 +434,55 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
/* task_y */
eq(TASK_UPDATE.taskY),
/* session_id */
- eq(SESSION_ID),
+ eq(sessionId),
/* minimize_reason */
eq(UNSET_MINIMIZE_REASON),
/* unminimize_reason */
eq(UnminimizeReason.TASKBAR_TAP.reason),
/* visible_task_count */
- eq(TASK_COUNT))
+ eq(TASK_COUNT)
+ )
}
-
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
verify {
EventLogTags.writeWmShellDesktopModeTaskUpdate(
- eq(FrameworkStatsLog
- .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED),
+ eq(
+ FrameworkStatsLog
+ .DESKTOP_MODE_SESSION_TASK_UPDATE__TASK_EVENT__TASK_INFO_CHANGED
+ ),
eq(TASK_UPDATE.instanceId),
eq(TASK_UPDATE.uid),
eq(TASK_UPDATE.taskHeight),
eq(TASK_UPDATE.taskWidth),
eq(TASK_UPDATE.taskX),
eq(TASK_UPDATE.taskY),
- eq(SESSION_ID),
+ eq(sessionId),
eq(UNSET_MINIMIZE_REASON),
eq(UnminimizeReason.TASKBAR_TAP.reason),
- eq(TASK_COUNT))
+ eq(TASK_COUNT)
+ )
}
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
+ }
+
+ @Test
+ fun logTaskResizingStarted_noOngoingSession_doesNotLog() {
+ desktopModeEventLogger.logTaskResizingStarted(TASK_SIZE_UPDATE)
+
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
}
@Test
@EnableFlags(Flags.FLAG_ENABLE_RESIZING_METRICS)
- fun logTaskResizingStarted_logsTaskSizeUpdatedWithStartResizingStage() = runBlocking {
- desktopModeEventLogger.logTaskResizingStarted(sessionId = SESSION_ID, createTaskSizeUpdate())
+ fun logTaskResizingStarted_logsTaskSizeUpdatedWithStartResizingStage() {
+ val sessionId = startDesktopModeSession()
+
+ desktopModeEventLogger.logTaskResizingStarted(TASK_SIZE_UPDATE)
verify {
- FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED),
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED),
/* resize_trigger */
eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__UNKNOWN_RESIZE_TRIGGER),
/* resizing_stage */
@@ -353,7 +490,7 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
/* input_method */
eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__UNKNOWN_INPUT_METHOD),
/* desktop_mode_session_id */
- eq(SESSION_ID),
+ eq(sessionId),
/* instance_id */
eq(TASK_SIZE_UPDATE.instanceId),
/* uid */
@@ -366,15 +503,27 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
eq(TASK_SIZE_UPDATE.displayArea),
)
}
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
+ }
+
+ @Test
+ fun logTaskResizingEnded_noOngoingSession_doesNotLog() {
+ desktopModeEventLogger.logTaskResizingEnded(TASK_SIZE_UPDATE)
+
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
+ verifyZeroInteractions(staticMockMarker(EventLogTags::class.java))
}
@Test
@EnableFlags(Flags.FLAG_ENABLE_RESIZING_METRICS)
- fun logTaskResizingEnded_logsTaskSizeUpdatedWithEndResizingStage() = runBlocking {
- desktopModeEventLogger.logTaskResizingEnded(sessionId = SESSION_ID, createTaskSizeUpdate())
+ fun logTaskResizingEnded_logsTaskSizeUpdatedWithEndResizingStage() {
+ val sessionId = startDesktopModeSession()
+
+ desktopModeEventLogger.logTaskResizingEnded(TASK_SIZE_UPDATE)
verify {
- FrameworkStatsLog.write(eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED),
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED),
/* resize_trigger */
eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__RESIZE_TRIGGER__UNKNOWN_RESIZE_TRIGGER),
/* resizing_stage */
@@ -382,7 +531,7 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
/* input_method */
eq(FrameworkStatsLog.DESKTOP_MODE_TASK_SIZE_UPDATED__INPUT_METHOD__UNKNOWN_INPUT_METHOD),
/* desktop_mode_session_id */
- eq(SESSION_ID),
+ eq(sessionId),
/* instance_id */
eq(TASK_SIZE_UPDATE.instanceId),
/* uid */
@@ -395,10 +544,18 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
eq(TASK_SIZE_UPDATE.displayArea),
)
}
+ verifyZeroInteractions(staticMockMarker(FrameworkStatsLog::class.java))
+ }
+
+ private fun startDesktopModeSession(): Int {
+ desktopModeEventLogger.logSessionEnter(EnterReason.KEYBOARD_SHORTCUT_ENTER)
+ clearInvocations(staticMockMarker(FrameworkStatsLog::class.java))
+ clearInvocations(staticMockMarker(EventLogTags::class.java))
+ return desktopModeEventLogger.currentSessionId.get()
}
private companion object {
- private const val SESSION_ID = 1
+ private const val sessionId = 1
private const val TASK_ID = 1
private const val TASK_UID = 1
private const val TASK_X = 0
@@ -423,23 +580,12 @@ class DesktopModeEventLoggerTest : ShellTestCase() {
DISPLAY_AREA,
)
- private fun createTaskSizeUpdate(
- resizeTrigger: ResizeTrigger = ResizeTrigger.UNKNOWN_RESIZE_TRIGGER,
- inputMethod: InputMethod = InputMethod.UNKNOWN_INPUT_METHOD,
- ) = TaskSizeUpdate(
- resizeTrigger,
- inputMethod,
- TASK_ID,
- TASK_UID,
- TASK_HEIGHT,
- TASK_WIDTH,
- DISPLAY_AREA,
- )
-
private fun createTaskUpdate(
minimizeReason: MinimizeReason? = null,
unminimizeReason: UnminimizeReason? = null,
- ) = TaskUpdate(TASK_ID, TASK_UID, TASK_HEIGHT, TASK_WIDTH, TASK_X, TASK_Y, minimizeReason,
- unminimizeReason, TASK_COUNT)
+ ) = TaskUpdate(
+ TASK_ID, TASK_UID, TASK_HEIGHT, TASK_WIDTH, TASK_X, TASK_Y, minimizeReason,
+ unminimizeReason, TASK_COUNT
+ )
}
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserverTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserverTest.kt
index daf7e7d5397b..15d5e6ed558c 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserverTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserverTest.kt
@@ -59,8 +59,8 @@ import com.android.wm.shell.shared.desktopmode.DesktopModeStatus
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.transition.TransitionInfoBuilder
import com.android.wm.shell.transition.Transitions
-import junit.framework.Assert.assertNotNull
-import junit.framework.Assert.assertNull
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -139,8 +139,8 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
callOnTransitionReady(transitionInfo)
- verify(desktopModeEventLogger, never()).logSessionEnter(any(), any())
- verify(desktopModeEventLogger, never()).logTaskAdded(any(), any())
+ verify(desktopModeEventLogger, never()).logSessionEnter(any())
+ verify(desktopModeEventLogger, never()).logTaskAdded(any())
}
@Test
@@ -225,11 +225,10 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
@Test
fun transitToFront_previousTransitionExitToOverview_logTaskAddedAndEnterReasonOverview() {
// previous exit to overview transition
- val previousSessionId = 1
// add a freeform task
val previousTaskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM)
transitionObserver.addTaskInfosToCachedMap(previousTaskInfo)
- transitionObserver.setLoggerSessionId(previousSessionId)
+ transitionObserver.isSessionActive = true
val previousTransitionInfo =
TransitionInfoBuilder(TRANSIT_TO_FRONT, TRANSIT_FLAG_IS_RECENTS)
.addChange(createChange(TRANSIT_TO_BACK, previousTaskInfo))
@@ -238,7 +237,8 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
callOnTransitionReady(previousTransitionInfo)
verifyTaskRemovedAndExitLogging(
- previousSessionId, ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE)
+ ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE
+ )
// Enter desktop mode from cancelled recents has no transition. Enter is detected on the
// next transition involving freeform windows
@@ -256,11 +256,10 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
@Test
fun transitChange_previousTransitionExitToOverview_logTaskAddedAndEnterReasonOverview() {
// previous exit to overview transition
- val previousSessionId = 1
// add a freeform task
val previousTaskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM)
transitionObserver.addTaskInfosToCachedMap(previousTaskInfo)
- transitionObserver.setLoggerSessionId(previousSessionId)
+ transitionObserver.isSessionActive = true
val previousTransitionInfo =
TransitionInfoBuilder(TRANSIT_TO_FRONT, TRANSIT_FLAG_IS_RECENTS)
.addChange(createChange(TRANSIT_TO_BACK, previousTaskInfo))
@@ -269,7 +268,8 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
callOnTransitionReady(previousTransitionInfo)
verifyTaskRemovedAndExitLogging(
- previousSessionId, ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE)
+ ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE
+ )
// Enter desktop mode from cancelled recents has no transition. Enter is detected on the
// next transition involving freeform windows
@@ -287,11 +287,10 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
@Test
fun transitOpen_previousTransitionExitToOverview_logTaskAddedAndEnterReasonOverview() {
// previous exit to overview transition
- val previousSessionId = 1
// add a freeform task
val previousTaskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM)
transitionObserver.addTaskInfosToCachedMap(previousTaskInfo)
- transitionObserver.setLoggerSessionId(previousSessionId)
+ transitionObserver.isSessionActive = true
val previousTransitionInfo =
TransitionInfoBuilder(TRANSIT_TO_FRONT, TRANSIT_FLAG_IS_RECENTS)
.addChange(createChange(TRANSIT_TO_BACK, previousTaskInfo))
@@ -300,7 +299,8 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
callOnTransitionReady(previousTransitionInfo)
verifyTaskRemovedAndExitLogging(
- previousSessionId, ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE)
+ ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE
+ )
// Enter desktop mode from cancelled recents has no transition. Enter is detected on the
// next transition involving freeform windows
@@ -321,11 +321,10 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
// Tests for AppFromOverview precedence in compared to cancelled Overview
// previous exit to overview transition
- val previousSessionId = 1
// add a freeform task
val previousTaskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM)
transitionObserver.addTaskInfosToCachedMap(previousTaskInfo)
- transitionObserver.setLoggerSessionId(previousSessionId)
+ transitionObserver.isSessionActive = true
val previousTransitionInfo =
TransitionInfoBuilder(TRANSIT_TO_FRONT, TRANSIT_FLAG_IS_RECENTS)
.addChange(createChange(TRANSIT_TO_BACK, previousTaskInfo))
@@ -334,7 +333,8 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
callOnTransitionReady(previousTransitionInfo)
verifyTaskRemovedAndExitLogging(
- previousSessionId, ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE)
+ ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE
+ )
// TRANSIT_ENTER_DESKTOP_FROM_APP_FROM_OVERVIEW
val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(WINDOWING_MODE_FREEFORM))
@@ -376,11 +376,10 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
fun transitBack_previousExitReasonScreenOff_logTaskAddedAndEnterReasonScreenOn() {
val freeformTask = createTaskInfo(WINDOWING_MODE_FREEFORM)
// Previous Exit reason recorded as Screen Off
- val sessionId = 1
transitionObserver.addTaskInfosToCachedMap(freeformTask)
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
callOnTransitionReady(TransitionInfoBuilder(TRANSIT_SLEEP).build())
- verifyTaskRemovedAndExitLogging(sessionId, ExitReason.SCREEN_OFF, DEFAULT_TASK_UPDATE)
+ verifyTaskRemovedAndExitLogging(ExitReason.SCREEN_OFF, DEFAULT_TASK_UPDATE)
// Enter desktop through back transition, this happens when user enters after dismissing
// keyguard
val change = createChange(TRANSIT_TO_FRONT, freeformTask)
@@ -396,11 +395,10 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
fun transitEndDragToDesktop_previousExitReasonScreenOff_logTaskAddedAndEnterReasonAppDrag() {
val freeformTask = createTaskInfo(WINDOWING_MODE_FREEFORM)
// Previous Exit reason recorded as Screen Off
- val sessionId = 1
transitionObserver.addTaskInfosToCachedMap(freeformTask)
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
callOnTransitionReady(TransitionInfoBuilder(TRANSIT_SLEEP).build())
- verifyTaskRemovedAndExitLogging(sessionId, ExitReason.SCREEN_OFF, DEFAULT_TASK_UPDATE)
+ verifyTaskRemovedAndExitLogging(ExitReason.SCREEN_OFF, DEFAULT_TASK_UPDATE)
// Enter desktop through app handle drag. This represents cases where instead of moving to
// desktop right after turning the screen on, we move to fullscreen then move another task
@@ -416,24 +414,22 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
}
@Test
- fun transitSleep_logTaskRemovedAndExitReasonScreenOff_sessionIdNull() {
- val sessionId = 1
+ fun transitSleep_logTaskRemovedAndExitReasonScreenOff() {
// add a freeform task
transitionObserver.addTaskInfosToCachedMap(createTaskInfo(WINDOWING_MODE_FREEFORM))
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
val transitionInfo = TransitionInfoBuilder(TRANSIT_SLEEP).build()
callOnTransitionReady(transitionInfo)
- verifyTaskRemovedAndExitLogging(sessionId, ExitReason.SCREEN_OFF, DEFAULT_TASK_UPDATE)
+ verifyTaskRemovedAndExitLogging(ExitReason.SCREEN_OFF, DEFAULT_TASK_UPDATE)
}
@Test
- fun transitExitDesktopTaskDrag_logTaskRemovedAndExitReasonDragToExit_sessionIdNull() {
- val sessionId = 1
+ fun transitExitDesktopTaskDrag_logTaskRemovedAndExitReasonDragToExit() {
// add a freeform task
transitionObserver.addTaskInfosToCachedMap(createTaskInfo(WINDOWING_MODE_FREEFORM))
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// window mode changing from FREEFORM to FULLSCREEN
val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(WINDOWING_MODE_FULLSCREEN))
@@ -441,15 +437,14 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
TransitionInfoBuilder(TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG).addChange(change).build()
callOnTransitionReady(transitionInfo)
- verifyTaskRemovedAndExitLogging(sessionId, ExitReason.DRAG_TO_EXIT, DEFAULT_TASK_UPDATE)
+ verifyTaskRemovedAndExitLogging(ExitReason.DRAG_TO_EXIT, DEFAULT_TASK_UPDATE)
}
@Test
- fun transitExitDesktopAppHandleButton_logTaskRemovedAndExitReasonButton_sessionIdNull() {
- val sessionId = 1
+ fun transitExitDesktopAppHandleButton_logTaskRemovedAndExitReasonButton() {
// add a freeform task
transitionObserver.addTaskInfosToCachedMap(createTaskInfo(WINDOWING_MODE_FREEFORM))
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// window mode changing from FREEFORM to FULLSCREEN
val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(WINDOWING_MODE_FULLSCREEN))
@@ -459,16 +454,14 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
.build()
callOnTransitionReady(transitionInfo)
- verifyTaskRemovedAndExitLogging(
- sessionId, ExitReason.APP_HANDLE_MENU_BUTTON_EXIT, DEFAULT_TASK_UPDATE)
+ verifyTaskRemovedAndExitLogging(ExitReason.APP_HANDLE_MENU_BUTTON_EXIT, DEFAULT_TASK_UPDATE)
}
@Test
- fun transitExitDesktopUsingKeyboard_logTaskRemovedAndExitReasonKeyboard_sessionIdNull() {
- val sessionId = 1
+ fun transitExitDesktopUsingKeyboard_logTaskRemovedAndExitReasonKeyboard() {
// add a freeform task
transitionObserver.addTaskInfosToCachedMap(createTaskInfo(WINDOWING_MODE_FREEFORM))
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// window mode changing from FREEFORM to FULLSCREEN
val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(WINDOWING_MODE_FULLSCREEN))
@@ -476,16 +469,14 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
TransitionInfoBuilder(TRANSIT_EXIT_DESKTOP_MODE_KEYBOARD_SHORTCUT).addChange(change).build()
callOnTransitionReady(transitionInfo)
- verifyTaskRemovedAndExitLogging(
- sessionId, ExitReason.KEYBOARD_SHORTCUT_EXIT, DEFAULT_TASK_UPDATE)
+ verifyTaskRemovedAndExitLogging(ExitReason.KEYBOARD_SHORTCUT_EXIT, DEFAULT_TASK_UPDATE)
}
@Test
- fun transitExitDesktopUnknown_logTaskRemovedAndExitReasonUnknown_sessionIdNull() {
- val sessionId = 1
+ fun transitExitDesktopUnknown_logTaskRemovedAndExitReasonUnknown() {
// add a freeform task
transitionObserver.addTaskInfosToCachedMap(createTaskInfo(WINDOWING_MODE_FREEFORM))
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// window mode changing from FREEFORM to FULLSCREEN
val change = createChange(TRANSIT_TO_FRONT, createTaskInfo(WINDOWING_MODE_FULLSCREEN))
@@ -493,15 +484,14 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
TransitionInfoBuilder(TRANSIT_EXIT_DESKTOP_MODE_UNKNOWN).addChange(change).build()
callOnTransitionReady(transitionInfo)
- verifyTaskRemovedAndExitLogging(sessionId, ExitReason.UNKNOWN_EXIT, DEFAULT_TASK_UPDATE)
+ verifyTaskRemovedAndExitLogging(ExitReason.UNKNOWN_EXIT, DEFAULT_TASK_UPDATE)
}
@Test
- fun transitToFrontWithFlagRecents_logTaskRemovedAndExitReasonOverview_sessionIdNull() {
- val sessionId = 1
+ fun transitToFrontWithFlagRecents_logTaskRemovedAndExitReasonOverview() {
// add a freeform task
transitionObserver.addTaskInfosToCachedMap(createTaskInfo(WINDOWING_MODE_FREEFORM))
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// recents transition
val change = createChange(TRANSIT_TO_BACK, createTaskInfo(WINDOWING_MODE_FREEFORM))
@@ -510,31 +500,30 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
callOnTransitionReady(transitionInfo)
verifyTaskRemovedAndExitLogging(
- sessionId, ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE)
+ ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE
+ )
}
@Test
- fun transitClose_logTaskRemovedAndExitReasonTaskFinished_sessionIdNull() {
- val sessionId = 1
+ fun transitClose_logTaskRemovedAndExitReasonTaskFinished() {
// add a freeform task
transitionObserver.addTaskInfosToCachedMap(createTaskInfo(WINDOWING_MODE_FREEFORM))
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// task closing
val change = createChange(TRANSIT_CLOSE, createTaskInfo(WINDOWING_MODE_FULLSCREEN))
val transitionInfo = TransitionInfoBuilder(TRANSIT_CLOSE).addChange(change).build()
callOnTransitionReady(transitionInfo)
- verifyTaskRemovedAndExitLogging(sessionId, ExitReason.TASK_FINISHED, DEFAULT_TASK_UPDATE)
+ verifyTaskRemovedAndExitLogging(ExitReason.TASK_FINISHED, DEFAULT_TASK_UPDATE)
}
@Test
fun sessionExitByRecents_cancelledAnimation_sessionRestored() {
- val sessionId = 1
// add a freeform task to an existing session
val taskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM)
transitionObserver.addTaskInfosToCachedMap(taskInfo)
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// recents transition sent freeform window to back
val change = createChange(TRANSIT_TO_BACK, taskInfo)
@@ -543,7 +532,8 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
callOnTransitionReady(transitionInfo1)
verifyTaskRemovedAndExitLogging(
- sessionId, ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE)
+ ExitReason.RETURN_HOME_OR_OVERVIEW, DEFAULT_TASK_UPDATE
+ )
val transitionInfo2 = TransitionInfoBuilder(TRANSIT_NONE).build()
callOnTransitionReady(transitionInfo2)
@@ -554,10 +544,9 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
@Test
fun sessionAlreadyStarted_newFreeformTaskAdded_logsTaskAdded() {
- val sessionId = 1
// add an existing freeform task
transitionObserver.addTaskInfosToCachedMap(createTaskInfo(WINDOWING_MODE_FREEFORM))
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// new freeform task added
val change = createChange(TRANSIT_OPEN, createTaskInfo(WINDOWING_MODE_FREEFORM, id = 2))
@@ -565,18 +554,16 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
callOnTransitionReady(transitionInfo)
verify(desktopModeEventLogger, times(1))
- .logTaskAdded(eq(sessionId),
- eq(DEFAULT_TASK_UPDATE.copy(instanceId = 2, visibleTaskCount = 2)))
- verify(desktopModeEventLogger, never()).logSessionEnter(any(), any())
+ .logTaskAdded(eq(DEFAULT_TASK_UPDATE.copy(instanceId = 2, visibleTaskCount = 2)))
+ verify(desktopModeEventLogger, never()).logSessionEnter(any())
}
@Test
fun sessionAlreadyStarted_taskPositionChanged_logsTaskUpdate() {
- val sessionId = 1
// add an existing freeform task
val taskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM)
transitionObserver.addTaskInfosToCachedMap(taskInfo)
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// task position changed
val newTaskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM, taskX = DEFAULT_TASK_X + 100)
@@ -588,18 +575,17 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
verify(desktopModeEventLogger, times(1))
.logTaskInfoChanged(
- eq(sessionId),
- eq(DEFAULT_TASK_UPDATE.copy(taskX = DEFAULT_TASK_X + 100, visibleTaskCount = 1)))
+ eq(DEFAULT_TASK_UPDATE.copy(taskX = DEFAULT_TASK_X + 100, visibleTaskCount = 1))
+ )
verifyZeroInteractions(desktopModeEventLogger)
}
@Test
fun sessionAlreadyStarted_taskResized_logsTaskUpdate() {
- val sessionId = 1
// add an existing freeform task
val taskInfo = createTaskInfo(WINDOWING_MODE_FREEFORM)
transitionObserver.addTaskInfosToCachedMap(taskInfo)
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// task resized
val newTaskInfo =
@@ -615,23 +601,22 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
verify(desktopModeEventLogger, times(1))
.logTaskInfoChanged(
- eq(sessionId),
eq(
DEFAULT_TASK_UPDATE.copy(
taskWidth = DEFAULT_TASK_WIDTH + 100, taskHeight = DEFAULT_TASK_HEIGHT - 100,
- visibleTaskCount = 1)))
+ visibleTaskCount = 1))
+ )
verifyZeroInteractions(desktopModeEventLogger)
}
@Test
fun sessionAlreadyStarted_multipleTasksUpdated_logsTaskUpdateForCorrectTask() {
- val sessionId = 1
// add 2 existing freeform task
val taskInfo1 = createTaskInfo(WINDOWING_MODE_FREEFORM)
val taskInfo2 = createTaskInfo(WINDOWING_MODE_FREEFORM, id = 2)
transitionObserver.addTaskInfosToCachedMap(taskInfo1)
transitionObserver.addTaskInfosToCachedMap(taskInfo2)
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// task 1 position update
val newTaskInfo1 = createTaskInfo(WINDOWING_MODE_FREEFORM, taskX = DEFAULT_TASK_X + 100)
@@ -643,8 +628,9 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
verify(desktopModeEventLogger, times(1))
.logTaskInfoChanged(
- eq(sessionId), eq(DEFAULT_TASK_UPDATE.copy(
- taskX = DEFAULT_TASK_X + 100, visibleTaskCount = 2)))
+ eq(DEFAULT_TASK_UPDATE.copy(
+ taskX = DEFAULT_TASK_X + 100, visibleTaskCount = 2))
+ )
verifyZeroInteractions(desktopModeEventLogger)
// task 2 resize
@@ -663,7 +649,6 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
verify(desktopModeEventLogger, times(1))
.logTaskInfoChanged(
- eq(sessionId),
eq(
DEFAULT_TASK_UPDATE.copy(
instanceId = 2,
@@ -676,11 +661,10 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
@Test
fun sessionAlreadyStarted_freeformTaskRemoved_logsTaskRemoved() {
- val sessionId = 1
// add two existing freeform tasks
transitionObserver.addTaskInfosToCachedMap(createTaskInfo(WINDOWING_MODE_FREEFORM))
transitionObserver.addTaskInfosToCachedMap(createTaskInfo(WINDOWING_MODE_FREEFORM, id = 2))
- transitionObserver.setLoggerSessionId(sessionId)
+ transitionObserver.isSessionActive = true
// new freeform task closed
val change = createChange(TRANSIT_CLOSE, createTaskInfo(WINDOWING_MODE_FREEFORM, id = 2))
@@ -688,9 +672,11 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
callOnTransitionReady(transitionInfo)
verify(desktopModeEventLogger, times(1))
- .logTaskRemoved(eq(sessionId), eq(DEFAULT_TASK_UPDATE.copy(
- instanceId = 2, visibleTaskCount = 1)))
- verify(desktopModeEventLogger, never()).logSessionExit(any(), any())
+ .logTaskRemoved(
+ eq(DEFAULT_TASK_UPDATE.copy(
+ instanceId = 2, visibleTaskCount = 1))
+ )
+ verify(desktopModeEventLogger, never()).logSessionExit(any())
}
/** Simulate calling the onTransitionReady() method */
@@ -703,10 +689,9 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
}
private fun verifyTaskAddedAndEnterLogging(enterReason: EnterReason, taskUpdate: TaskUpdate) {
- val sessionId = transitionObserver.getLoggerSessionId()
- assertNotNull(sessionId)
- verify(desktopModeEventLogger, times(1)).logSessionEnter(eq(sessionId!!), eq(enterReason))
- verify(desktopModeEventLogger, times(1)).logTaskAdded(eq(sessionId), eq(taskUpdate))
+ assertTrue(transitionObserver.isSessionActive)
+ verify(desktopModeEventLogger, times(1)).logSessionEnter(eq(enterReason))
+ verify(desktopModeEventLogger, times(1)).logTaskAdded(eq(taskUpdate))
ExtendedMockito.verify {
Trace.setCounter(
eq(Trace.TRACE_TAG_WINDOW_MANAGER),
@@ -722,14 +707,13 @@ class DesktopModeLoggerTransitionObserverTest : ShellTestCase() {
}
private fun verifyTaskRemovedAndExitLogging(
- sessionId: Int,
exitReason: ExitReason,
taskUpdate: TaskUpdate
) {
- verify(desktopModeEventLogger, times(1)).logTaskRemoved(eq(sessionId), eq(taskUpdate))
- verify(desktopModeEventLogger, times(1)).logSessionExit(eq(sessionId), eq(exitReason))
+ assertFalse(transitionObserver.isSessionActive)
+ verify(desktopModeEventLogger, times(1)).logTaskRemoved(eq(taskUpdate))
+ verify(desktopModeEventLogger, times(1)).logSessionExit(eq(exitReason))
verifyZeroInteractions(desktopModeEventLogger)
- assertNull(transitionObserver.getLoggerSessionId())
}
private companion object {