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

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

Move home task to back on core launch

In some launches, e.g gmail compose from taskbar, the intent has the
flag TASK_ON_HOME. This flag moves the home task behind the task being
launched. In desktop mode, we don't want this to happen so move home to
back when shell handles this launch.

Bug: 341753779
Test: atest DesktopTasksControllerTest
Flag: EXEMPT bugfix
Change-Id: I14714e7c19cf602864f83436af8d71b9cd5adfc1
parent a3c08e42
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -399,7 +399,7 @@ class DesktopTasksController(
        )
        val wct = WindowContainerTransaction()
        exitSplitIfApplicable(wct, taskInfo)
        moveHomeTaskToFront(wct)
        moveHomeTask(wct, true /* toTop */)
        val taskToMinimize =
            bringDesktopAppsToFrontBeforeShowingNewTask(taskInfo.displayId, wct, taskInfo.taskId)
        addMoveToDesktopChanges(wct, taskInfo)
@@ -749,7 +749,7 @@ class DesktopTasksController(
            addWallpaperActivity(wct)
        } else {
            // Move home to front
            moveHomeTaskToFront(wct)
            moveHomeTask(wct, true /* toTop */)
        }

        val nonMinimizedTasksOrderedFrontToBack =
@@ -775,11 +775,11 @@ class DesktopTasksController(
        return taskToMinimize
    }

    private fun moveHomeTaskToFront(wct: WindowContainerTransaction) {
    private fun moveHomeTask(wct: WindowContainerTransaction, toTop: Boolean) {
        shellTaskOrganizer
            .getRunningTasks(context.displayId)
            .firstOrNull { task -> task.activityType == ACTIVITY_TYPE_HOME }
            ?.let { homeTask -> wct.reorder(homeTask.getToken(), true /* onTop */) }
            ?.let { homeTask -> wct.reorder(homeTask.getToken(), toTop /* onTop */) }
    }

    private fun addWallpaperActivity(wct: WindowContainerTransaction) {
@@ -987,6 +987,9 @@ class DesktopTasksController(
            )
            return WindowContainerTransaction().also { wct ->
                addMoveToDesktopChanges(wct, task)
                // In some launches home task is moved behind new task being launched. Make sure
                // that's not the case for launches in desktop.
                moveHomeTask(wct, false /* toTop */)
                // Desktop Mode is already showing and we're launching a new Task - we might need to
                // minimize another Task.
                val taskToMinimize = addAndGetMinimizeChangesIfNeeded(task.displayId, wct, task)
+6 −2
Original line number Diff line number Diff line
@@ -988,13 +988,17 @@ class DesktopTasksControllerTest : ShellTestCase() {
  fun handleRequest_fullscreenTask_freeformVisible_returnSwitchToFreeformWCT() {
    assumeTrue(ENABLE_SHELL_TRANSITIONS)

    val homeTask = setUpHomeTask()
    val freeformTask = setUpFreeformTask()
    markTaskVisible(freeformTask)
    val fullscreenTask = createFullscreenTask()

    val result = controller.handleRequest(Binder(), createTransition(fullscreenTask))
    assertThat(result?.changes?.get(fullscreenTask.token.asBinder())?.windowingMode)
    val wct = controller.handleRequest(Binder(), createTransition(fullscreenTask))
    assertThat(wct?.changes?.get(fullscreenTask.token.asBinder())?.windowingMode)
        .isEqualTo(WINDOWING_MODE_FREEFORM)

    assertThat(wct!!.hierarchyOps.size).isEqualTo(2)
    wct.assertReorderAt(1, homeTask, toTop = false)
  }

  @Test