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

Commit e87b983a authored by Orhan Uysal's avatar Orhan Uysal
Browse files

Register DesktopUserRepos with ShellController

...so that it gets the user change callbacks.

Bug: 383069779
Test: Manual
Flag: com.android.window.flags.enable_desktop_windowing_hsum
Change-Id: I5293b6d4c0a50f29fdcd454e086cde6aa329c8b2
parent 6ff074b1
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1016,12 +1016,14 @@ public abstract class WMShellModule {
    static DesktopUserRepositories provideDesktopUserRepositories(
            Context context,
            ShellInit shellInit,
            ShellController shellController,
            DesktopPersistentRepository desktopPersistentRepository,
            DesktopRepositoryInitializer desktopRepositoryInitializer,
            @ShellMainThread CoroutineScope mainScope,
            UserManager userManager
    ) {
        return new DesktopUserRepositories(context, shellInit, desktopPersistentRepository,
        return new DesktopUserRepositories(context, shellInit, shellController,
                desktopPersistentRepository,
                desktopRepositoryInitializer,
                mainScope, userManager);
    }
+5 −2
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.wm.shell.desktopmode.persistence.DesktopRepositoryInitializer
import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
import com.android.wm.shell.shared.annotations.ShellMainThread
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus
import com.android.wm.shell.sysui.ShellController
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.sysui.UserChangeListener
import kotlinx.coroutines.CoroutineScope
@@ -36,6 +37,7 @@ import kotlinx.coroutines.CoroutineScope
class DesktopUserRepositories(
    context: Context,
    shellInit: ShellInit,
    private val shellController: ShellController,
    private val persistentRepository: DesktopPersistentRepository,
    private val repositoryInitializer: DesktopRepositoryInitializer,
    @ShellMainThread private val mainCoroutineScope: CoroutineScope,
@@ -61,15 +63,16 @@ class DesktopUserRepositories(
    init {
        userId = ActivityManager.getCurrentUser()
        if (DesktopModeStatus.canEnterDesktopMode(context)) {
            shellInit.addInitCallback(::initRepoFromPersistentStorage, this)
            shellInit.addInitCallback(::onInit, this)
        }
        if (Flags.enableDesktopWindowingHsum()) {
            userIdToProfileIdsMap[userId] = userManager.getProfiles(userId).map { it.id }
        }
    }

    private fun initRepoFromPersistentStorage() {
    private fun onInit() {
        repositoryInitializer.initialize(this)
        shellController.addUserChangeListener(this)
    }

    /** Returns [DesktopRepository] for the parent user id. */
+3 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.dx.mockito.inline.extended.ExtendedMockito.never
import com.android.dx.mockito.inline.extended.StaticMockitoSession
import com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE
import com.android.window.flags.Flags.FLAG_RESPECT_ORIENTATION_CHANGE_FOR_UNRESIZEABLE
import com.android.wm.shell.sysui.ShellController
import com.android.wm.shell.ShellTaskOrganizer
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.common.ShellExecutor
@@ -98,6 +99,7 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
    @Mock lateinit var persistentRepository: DesktopPersistentRepository
    @Mock lateinit var repositoryInitializer: DesktopRepositoryInitializer
    @Mock lateinit var userManager: UserManager
    @Mock lateinit var shellController: ShellController

    private lateinit var mockitoSession: StaticMockitoSession
    private lateinit var handler: DesktopActivityOrientationChangeHandler
@@ -123,6 +125,7 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
            DesktopUserRepositories(
                context,
                shellInit,
                shellController,
                persistentRepository,
                repositoryInitializer,
                testScope,
+1 −1
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ class DesktopImmersiveControllerTest : ShellTestCase() {
    @Before
    fun setUp() {
        userRepositories = DesktopUserRepositories(
            context, ShellInit(TestShellExecutor()), mock(), mock(), mock(), mock()
            context, ShellInit(TestShellExecutor()), mock(), mock(), mock(), mock(), mock()
        )
        whenever(mockDisplayController.getDisplayLayout(DEFAULT_DISPLAY))
            .thenReturn(mockDisplayLayout)
+2 −1
Original line number Diff line number Diff line
@@ -275,6 +275,7 @@ class DesktopTasksControllerTest : ShellTestCase() {
      DesktopUserRepositories(
        context,
        shellInit,
        shellController,
        persistentRepository,
        repositoryInitializer,
        testScope,
@@ -3851,7 +3852,7 @@ class DesktopTasksControllerTest : ShellTestCase() {

  @Test
  fun shellController_registersUserChangeListener() {
      verify(shellController, times(1)).addUserChangeListener(any())
      verify(shellController, times(2)).addUserChangeListener(any())
  }

  @Test
Loading