summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pragya Bajoria <pragyabajoria@google.com> 2024-10-01 11:01:40 +0000
committer Pragya Bajoria <pragyabajoria@google.com> 2024-10-01 11:02:04 +0000
commit9fcffe41632a4df8db34b3f67ac861d992d2b23d (patch)
tree2d678412fdd4a9d236706b0c581ce5d9d28e5014
parentc0baa675a6d382b28c35fc8e42be909ca995b44a (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)
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt13
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt6
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.