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

Commit efd04186 authored by Massimo Carli's avatar Massimo Carli
Browse files

Remove LetterboxEdu in DesktopWindowing

The LetterboxEducation will be removed when already displayed and
the user enters DesktopWindow.

Flag: com.android.window.flags.skip_compat_ui_education_in_desktop_mode
Fix: 416501619
Test: atest WMShellUnitTests:CompatUIControllerTest

Change-Id: I4ebcbd9a89e9687a69bf4b9dfb78b1cbe7baabee
parent 2d78fe26
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -788,10 +788,7 @@ public class CompatUIController implements OnDisplaysChangedListener,
            mActiveCompatLayouts.remove(taskId);
        }

        if (mActiveLetterboxEduLayout != null && mActiveLetterboxEduLayout.getTaskId() == taskId) {
            mActiveLetterboxEduLayout.release();
            mActiveLetterboxEduLayout = null;
        }
        removeLetterboxEdu(taskId);

        final RestartDialogWindowManager restartLayout =
                mTaskIdToRestartDialogWindowManagerMap.get(taskId);
@@ -813,6 +810,16 @@ public class CompatUIController implements OnDisplaysChangedListener,
        }
    }

    @VisibleForTesting
    void removeLetterboxEdu(int taskId) {
        // When in desktop windowing the dialog will be removed in any case.
        if (mActiveLetterboxEduLayout != null && (mActiveLetterboxEduLayout.getTaskId() == taskId
                || mIsInDesktopMode)) {
            mActiveLetterboxEduLayout.release();
            mActiveLetterboxEduLayout = null;
        }
    }

    private Context getOrCreateDisplayContext(int displayId) {
        if (displayId == Display.DEFAULT_DISPLAY) {
            return mContext;
+31 −0
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ import java.util.Optional;
public class CompatUIControllerTest extends ShellTestCase {
    private static final int DISPLAY_ID = 0;
    private static final int TASK_ID = 12;
    private static final int TASK_ID_2 = 18;

    private CompatUIController mController;
    private ShellInit mShellInit;
@@ -727,6 +728,36 @@ public class CompatUIControllerTest extends ShellTestCase {
        verify(mController).removeLayouts(taskInfo.taskId);
    }

    @Test
    @RequiresFlagsDisabled(Flags.FLAG_APP_COMPAT_UI_FRAMEWORK)
    @EnableFlags(Flags.FLAG_SKIP_COMPAT_UI_EDUCATION_IN_DESKTOP_MODE)
    public void testUpdateActiveTaskInfo_alwaysRemoveLetterboxEdu() {
        TaskInfo taskInfo = createTaskInfo(DISPLAY_ID, TASK_ID, /* hasSizeCompat= */ true);

        // When not in Desktop Mode the LetterboxEdu is removed only if the taskId is the one used
        // when created.
        when(mDesktopUserRepositories.getCurrent().isAnyDeskActive(DISPLAY_ID)).thenReturn(false);

        mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener));
        mController.removeLetterboxEdu(TASK_ID_2);
        verify(mMockLetterboxEduLayout, never()).release();

        mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener));
        mController.removeLetterboxEdu(TASK_ID);
        verify(mMockLetterboxEduLayout).release();

        // When in Desktop Mode the LetterboxEdu is always removed
        when(mDesktopUserRepositories.getCurrent().isAnyDeskActive(DISPLAY_ID)).thenReturn(true);

        mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener));
        mController.removeLetterboxEdu(TASK_ID);
        verify(mMockLetterboxEduLayout).release();

        mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener));
        mController.removeLetterboxEdu(TASK_ID_2);
        verify(mMockLetterboxEduLayout).release();
    }

    @Test
    @RequiresFlagsDisabled(Flags.FLAG_APP_COMPAT_UI_FRAMEWORK)
    @DisableFlags(Flags.FLAG_SKIP_COMPAT_UI_EDUCATION_IN_DESKTOP_MODE)