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

Commit a37999be authored by Louis Chang's avatar Louis Chang Committed by Hung-ying Tyan
Browse files

Avoid using secondary displays as launch params when not support

Activities were moved on secondary displays when layouting tasks by
LaunchParamsController while the device has no multi-displays support.

Bug: 136607870
Test: atest TaskLaunchParamsModifierTests
Change-Id: If17f119008cb2fa9ab08090f128c83215f8523a0
(cherry picked from commit 740448f0)
parent 7bb64fcf
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -292,6 +292,10 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier {

    private int getPreferredLaunchDisplay(@Nullable TaskRecord task,
            @Nullable ActivityOptions options, ActivityRecord source, LaunchParams currentParams) {
        if (!mSupervisor.mService.mSupportsMultiDisplay) {
            return DEFAULT_DISPLAY;
        }

        int displayId = INVALID_DISPLAY;
        final int optionLaunchId = options != null ? options.getLaunchDisplayId() : INVALID_DISPLAY;
        if (optionLaunchId != INVALID_DISPLAY) {
+16 −0
Original line number Diff line number Diff line
@@ -1225,6 +1225,22 @@ public class TaskLaunchParamsModifierTests extends ActivityTestsBase {
        assertEquals(startingBounds, adjustedBounds);
    }

    @Test
    public void testNoMultiDisplaySupports() {
        final boolean orgValue = mService.mSupportsMultiDisplay;
        final TestActivityDisplay display = createNewActivityDisplay(WINDOWING_MODE_FULLSCREEN);
        mCurrent.mPreferredDisplayId = display.mDisplayId;

        try {
            mService.mSupportsMultiDisplay = false;
            assertEquals(RESULT_CONTINUE, mTarget.onCalculate(/* task */ null, /* layout */ null,
                    mActivity, /* source */ null, /* options */ null, mCurrent, mResult));
            assertEquals(DEFAULT_DISPLAY, mResult.mPreferredDisplayId);
        } finally {
            mService.mSupportsMultiDisplay = orgValue;
        }
    }

    private TestActivityDisplay createNewActivityDisplay(int windowingMode) {
        final TestActivityDisplay display = addNewActivityDisplayAt(ActivityDisplay.POSITION_TOP);
        display.setWindowingMode(windowingMode);