diff options
| author | 2024-10-01 11:01:40 +0000 | |
|---|---|---|
| committer | 2024-10-01 11:02:04 +0000 | |
| commit | 9fcffe41632a4df8db34b3f67ac861d992d2b23d (patch) | |
| tree | 2d678412fdd4a9d236706b0c581ce5d9d28e5014 | |
| parent | c0baa675a6d382b28c35fc8e42be909ca995b44a (diff) | |
Register UserChangeListener in DesktopTasksController
This is to ensure that the controller is updated with the correct user id and context when the user changes.
Change-Id: I6aac7d423a1fba2edbe4c1338796d6d0a13b1dbb
Bug: 366397912
Flag: EXEMPT (no-op with no major logic changes)
2 files changed, 18 insertions, 1 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt index afa27f9f1309..acaad69e91b6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt @@ -17,6 +17,7 @@ package com.android.wm.shell.desktopmode import android.app.ActivityManager.RunningTaskInfo +import android.app.ActivityManager import android.app.ActivityOptions import android.app.KeyguardManager import android.app.PendingIntent @@ -101,6 +102,7 @@ import com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_DESKTO import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.sysui.ShellController import com.android.wm.shell.sysui.ShellInit +import com.android.wm.shell.sysui.UserChangeListener import com.android.wm.shell.transition.OneShotRemoteHandler import com.android.wm.shell.transition.Transitions import com.android.wm.shell.windowdecor.DragPositioningCallbackUtility @@ -146,10 +148,12 @@ class DesktopTasksController( ) : RemoteCallable<DesktopTasksController>, Transitions.TransitionHandler, - DragAndDropController.DragAndDropListener { + DragAndDropController.DragAndDropListener, + UserChangeListener { private val desktopMode: DesktopModeImpl private var visualIndicator: DesktopModeVisualIndicator? = null + private var userId: Int private val desktopModeShellCommandHandler: DesktopModeShellCommandHandler = DesktopModeShellCommandHandler(this) private val mOnAnimationFinishedCallback = @@ -193,6 +197,7 @@ class DesktopTasksController( if (DesktopModeStatus.canEnterDesktopMode(context)) { shellInit.addInitCallback({ onInit() }, this) } + userId = ActivityManager.getCurrentUser() } private fun onInit() { @@ -204,6 +209,7 @@ class DesktopTasksController( { createExternalInterface() }, this ) + shellController.addUserChangeListener(this); transitions.addHandler(this) dragToDesktopTransitionHandler.dragToDesktopStateListener = dragToDesktopStateListener recentsTransitionHandler.addTransitionStateListener( @@ -1779,6 +1785,11 @@ class DesktopTasksController( return true } + // TODO(b/366397912): Support full multi-user mode in Windowing. + override fun onUserChanged(newUserId: Int, userContext: Context) { + userId = newUserId + } + private fun dump(pw: PrintWriter, prefix: String) { val innerPrefix = "$prefix " pw.println("${prefix}DesktopTasksController") diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt index 94e361659090..8870846efed4 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt @@ -144,6 +144,7 @@ import org.mockito.Mockito.clearInvocations import org.mockito.Mockito.mock import org.mockito.Mockito.spy import org.mockito.Mockito.verify +import org.mockito.Mockito.times import org.mockito.kotlin.any import org.mockito.kotlin.anyOrNull import org.mockito.kotlin.atLeastOnce @@ -3201,6 +3202,11 @@ class DesktopTasksControllerTest : ShellTestCase() { Rect()) } + @Test + fun shellController_registersUserChangeListener() { + verify(shellController, times(1)).addUserChangeListener(any()) + } + /** * Assert that an unhandled drag event launches a PendingIntent with the * windowing mode and bounds we are expecting. |