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

Commit 4370d139 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Skip overriding windowing mode with multi-desks enabled" into main

parents f7801c7f 947afa23
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -143,7 +143,18 @@ class DesktopDisplayModeController(
            .getRunningTasks(displayId)
            .filter { it.activityType == ACTIVITY_TYPE_STANDARD }
            .forEach {
                // TODO: b/391965153 - Reconsider the logic under multi-desk window hierarchy
                if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) {
                    // With multi-desks, display windowing mode doesn't affect the windowing
                    // mode of freeform tasks but fullscreen tasks which are the direct children
                    // of TDA.
                    if (it.windowingMode == WINDOWING_MODE_FULLSCREEN) {
                        if (targetDisplayWindowingMode == WINDOWING_MODE_FREEFORM) {
                            wct.setWindowingMode(it.token, WINDOWING_MODE_FULLSCREEN)
                        } else {
                            wct.setWindowingMode(it.token, WINDOWING_MODE_UNDEFINED)
                        }
                    }
                } else {
                    when (it.windowingMode) {
                        currentDisplayWindowingMode -> {
                            wct.setWindowingMode(it.token, currentDisplayWindowingMode)
@@ -153,6 +164,7 @@ class DesktopDisplayModeController(
                        }
                    }
                }
            }
        // The override windowing mode of DesktopWallpaper can be UNDEFINED on fullscreen-display
        // right after the first launch while its resolved windowing mode is FULLSCREEN. We here
        // it has the FULLSCREEN override windowing mode.
+46 −2
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.google.testing.junit.testparameterinjector.TestParameter
import com.google.testing.junit.testparameterinjector.TestParameterInjector
import com.google.testing.junit.testparameterinjector.TestParameterValuesProvider
import org.junit.After
import org.junit.Assert.assertNull
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -258,7 +259,8 @@ class DesktopDisplayModeControllerTest(

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING)
    fun displayWindowingModeSwitch_existingTasksOnConnected() {
    @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
    fun displayWindowingModeSwitch_existingTasksOnConnected_multidesk_disabled() {
        defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN
        whenever(mockWindowManager.getWindowingMode(anyInt())).thenReturn(WINDOWING_MODE_FULLSCREEN)
        setExtendedMode(true)
@@ -275,7 +277,8 @@ class DesktopDisplayModeControllerTest(

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING)
    fun displayWindowingModeSwitch_existingTasksOnDisconnected() {
    @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
    fun displayWindowingModeSwitch_existingTasksOnDisconnected_multidesk_disabled() {
        defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM
        whenever(mockWindowManager.getWindowingMode(anyInt())).thenAnswer {
            WINDOWING_MODE_FULLSCREEN
@@ -292,6 +295,46 @@ class DesktopDisplayModeControllerTest(
            .isEqualTo(WINDOWING_MODE_UNDEFINED)
    }

    @Test
    @EnableFlags(
        Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING,
        Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
    )
    fun displayWindowingModeSwitch_existingTasksOnConnected() {
        defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN
        whenever(mockWindowManager.getWindowingMode(anyInt())).thenReturn(WINDOWING_MODE_FULLSCREEN)
        setExtendedMode(true)

        connectExternalDisplay()

        val arg = argumentCaptor<WindowContainerTransaction>()
        verify(transitions, times(1)).startTransition(eq(TRANSIT_CHANGE), arg.capture(), isNull())
        assertNull(arg.firstValue.changes[freeformTask.token.asBinder()])
        assertThat(arg.firstValue.changes[fullscreenTask.token.asBinder()]?.windowingMode)
            .isEqualTo(WINDOWING_MODE_FULLSCREEN)
    }

    @Test
    @EnableFlags(
        Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING,
        Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
    )
    fun displayWindowingModeSwitch_existingTasksOnDisconnected() {
        defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM
        whenever(mockWindowManager.getWindowingMode(anyInt())).thenAnswer {
            WINDOWING_MODE_FULLSCREEN
        }
        setExtendedMode(true)

        disconnectExternalDisplay()

        val arg = argumentCaptor<WindowContainerTransaction>()
        verify(transitions, times(1)).startTransition(eq(TRANSIT_CHANGE), arg.capture(), isNull())
        assertNull(arg.firstValue.changes[freeformTask.token.asBinder()])
        assertThat(arg.firstValue.changes[fullscreenTask.token.asBinder()]?.windowingMode)
            .isEqualTo(WINDOWING_MODE_UNDEFINED)
    }

    @Test
    @EnableFlags(DisplayFlags.FLAG_ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT)
    fun externalDisplayWindowingMode() {
@@ -364,6 +407,7 @@ class DesktopDisplayModeControllerTest(
            return FlagsParameterization.allCombinationsOf(
                Flags.FLAG_FORM_FACTOR_BASED_DESKTOP_FIRST_SWITCH,
                DisplayFlags.FLAG_ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT,
                Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
            )
        }
    }