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

Commit e95d5331 authored by mattsziklay's avatar mattsziklay Committed by Matt Sziklay
Browse files

Reroute Manage Windows open instance transition through shell transition

Prevents a crash in non-desktop Manage Windows by routing the task start
through StageCoordinator instead of SplitScreenController, the former of which uses shell transition.

Bug: 392053741
Test: Manual
Flag: com.android.window.flags.enable_desktop_windowing_multi_instance_features
Change-Id: Ibf24f09f18defb1b9af45cbc306771287ebcc0e9
parent 44a905df
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1999,6 +1999,9 @@ class DesktopTasksController(
                splitPosition,
                options.toBundle(),
                /* hideTaskToken= */ null,
                if (enableFlexibleSplit())
                    splitScreenController.determineNewInstanceIndex(callingTask)
                else SPLIT_INDEX_UNDEFINED,
            )
        }
    }
+8 −0
Original line number Diff line number Diff line
@@ -637,6 +637,14 @@ public class SplitScreenController implements SplitDragPolicy.Starter,
        }
    }

    /**
     * Starts an existing task via StageCoordinator.
     */
    public void startTask(int taskId, @SplitPosition int position, @Nullable Bundle options,
            @Nullable WindowContainerToken hideTaskToken, @SplitIndex int index) {
        mStageCoordinator.startTask(taskId, position, options, hideTaskToken, index);
    }

    /**
     * See {@link #startShortcut(String, String, int, Bundle, UserHandle)}
     * @param instanceId to be used by {@link SplitscreenEventLogger}
+2 −2
Original line number Diff line number Diff line
@@ -4857,7 +4857,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        val optionsCaptor = argumentCaptor<Bundle>()
        runOpenInstance(task, taskToRequest.taskId)
        verify(splitScreenController)
            .startTask(anyInt(), anyInt(), optionsCaptor.capture(), anyOrNull())
            .startTask(anyInt(), anyInt(), optionsCaptor.capture(), anyOrNull(), any())
        assertThat(ActivityOptions.fromBundle(optionsCaptor.firstValue).launchWindowingMode)
            .isEqualTo(WINDOWING_MODE_MULTI_WINDOW)
    }
@@ -4871,7 +4871,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
        val optionsCaptor = argumentCaptor<Bundle>()
        runOpenInstance(task, taskToRequest.taskId)
        verify(splitScreenController)
            .startTask(anyInt(), anyInt(), optionsCaptor.capture(), anyOrNull())
            .startTask(anyInt(), anyInt(), optionsCaptor.capture(), anyOrNull(), any())
        assertThat(ActivityOptions.fromBundle(optionsCaptor.firstValue).launchWindowingMode)
            .isEqualTo(WINDOWING_MODE_MULTI_WINDOW)
    }