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

Commit 078be49f authored by Maryam Dehaini's avatar Maryam Dehaini
Browse files

Restore window when maximize window button clicked when task is

maximized

Bug: 84747669
Test: manual testing
Flag: com.android.window.flags.enable_fully_immersive_in_desktop
Change-Id: I37b15336758942de66258846d710f407a84465d4
parent 20c9033e
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -935,10 +935,12 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
                //  back to the decoration using
                //  {@link DesktopModeWindowDecoration#setOnMaximizeOrRestoreClickListener}, which
                //  should shared with the maximize menu's maximize/restore actions.
                final DesktopRepository desktopRepository = mDesktopUserRepositories.getProfile(
                        decoration.mTaskInfo.userId);
                if (Flags.enableFullyImmersiveInDesktop()
                        && TaskInfoKt.getRequestingImmersive(decoration.mTaskInfo)) {
                    // Task is requesting immersive, so it should either enter or exit immersive,
                    // depending on immersive state.
                        && desktopRepository.isTaskInFullImmersiveState(
                                decoration.mTaskInfo.taskId)) {
                    // Task is in immersive and should exit.
                    onEnterOrExitImmersive(decoration.mTaskInfo);
                } else {
                    // Full immersive is disabled or task doesn't request/support it, so just
+0 −20
Original line number Diff line number Diff line
@@ -1052,26 +1052,6 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest
        assertEquals(decor.mTaskInfo.token.asBinder(), wct.getHierarchyOps().get(0).getContainer())
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_FULLY_IMMERSIVE_IN_DESKTOP)
    fun testImmersiveButtonClick_entersImmersiveMode() {
        val onClickListenerCaptor = forClass(View.OnClickListener::class.java)
                as ArgumentCaptor<View.OnClickListener>
        val decor = createOpenTaskDecoration(
            windowingMode = WINDOWING_MODE_FREEFORM,
            onCaptionButtonClickListener = onClickListenerCaptor,
            requestingImmersive = true,
        )
        val view = mock(View::class.java)
        whenever(view.id).thenReturn(R.id.maximize_window)
        whenever(mockDesktopRepository.isTaskInFullImmersiveState(decor.mTaskInfo.taskId))
            .thenReturn(false)

        onClickListenerCaptor.value.onClick(view)

        verify(mockDesktopImmersiveController).moveTaskToImmersive(decor.mTaskInfo)
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_FULLY_IMMERSIVE_IN_DESKTOP)
    fun testImmersiveRestoreButtonClick_exitsImmersiveMode() {