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

Commit bd2c2216 authored by Pierre Barbier de Reuille's avatar Pierre Barbier de Reuille
Browse files

Update DesktopTasksController to use UserProfileContexts

To make sure we don't try to get the package info from a package only
available on a different profile.

Bug: 388824382
Test: atest DesktopTasksControllerTest
Flag: EXEMPT bug fix
Change-Id: I0fc41db957c9b7af00280cae958cb332b671ca3d
parent a1d171f1
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -755,7 +755,8 @@ public abstract class WMShellModule {
            DesktopWallpaperActivityTokenProvider desktopWallpaperActivityTokenProvider,
            Optional<BubbleController> bubbleController,
            OverviewToDesktopTransitionObserver overviewToDesktopTransitionObserver,
            DesksOrganizer desksOrganizer) {
            DesksOrganizer desksOrganizer,
            UserProfileContexts userProfileContexts) {
        return new DesktopTasksController(
                context,
                shellInit,
@@ -790,7 +791,8 @@ public abstract class WMShellModule {
                desktopWallpaperActivityTokenProvider,
                bubbleController,
                overviewToDesktopTransitionObserver,
                desksOrganizer);
                desksOrganizer,
                userProfileContexts);
    }

    @WMSingleton
+5 −1
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ import com.android.wm.shell.common.RemoteCallable
import com.android.wm.shell.common.ShellExecutor
import com.android.wm.shell.common.SingleInstanceRemoteListener
import com.android.wm.shell.common.SyncTransactionQueue
import com.android.wm.shell.common.UserProfileContexts
import com.android.wm.shell.compatui.isTopActivityExemptFromDesktopWindowing
import com.android.wm.shell.compatui.isTransparentTask
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.InputMethod
@@ -183,6 +184,7 @@ class DesktopTasksController(
    private val bubbleController: Optional<BubbleController>,
    private val overviewToDesktopTransitionObserver: OverviewToDesktopTransitionObserver,
    private val desksOrganizer: DesksOrganizer,
    private val userProfileContexts: UserProfileContexts,
) :
    RemoteCallable<DesktopTasksController>,
    Transitions.TransitionHandler,
@@ -1859,7 +1861,9 @@ class DesktopTasksController(
        //  need updates in some cases.
        val baseActivity = callingTaskInfo.baseActivity ?: return
        val fillIn: Intent =
            context.packageManager.getLaunchIntentForPackage(baseActivity.packageName) ?: return
            userProfileContexts[callingTaskInfo.userId]
                ?.packageManager
                ?.getLaunchIntentForPackage(baseActivity.packageName) ?: return
        fillIn.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
        val launchIntent =
            PendingIntent.getActivity(
+4 −0
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@ import com.android.wm.shell.common.DisplayLayout
import com.android.wm.shell.common.MultiInstanceHelper
import com.android.wm.shell.common.ShellExecutor
import com.android.wm.shell.common.SyncTransactionQueue
import com.android.wm.shell.common.UserProfileContexts
import com.android.wm.shell.desktopmode.DesktopImmersiveController.ExitResult
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.InputMethod
import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.MinimizeReason
@@ -251,6 +252,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
    @Mock
    private lateinit var overviewToDesktopTransitionObserver: OverviewToDesktopTransitionObserver
    @Mock private lateinit var desksOrganizer: DesksOrganizer
    @Mock private lateinit var userProfileContexts: UserProfileContexts

    private lateinit var controller: DesktopTasksController
    private lateinit var shellInit: ShellInit
@@ -345,6 +347,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            )
            .thenReturn(ExitResult.NoExit)
        whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(wallpaperToken)
        whenever(userProfileContexts[anyInt()]).thenReturn(context)

        controller = createController()
        controller.setSplitScreenController(splitScreenController)
@@ -402,6 +405,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            Optional.of(bubbleController),
            overviewToDesktopTransitionObserver,
            desksOrganizer,
            userProfileContexts,
        )

    @After