Loading libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java +11 −4 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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; Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java +31 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java +11 −4 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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; Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java +31 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) Loading