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

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

Merge "Run ktmft on...

Merge "Run ktmft on WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode" into main
parents 0e3555ea 0fd07ff9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp
               tests/
               tools/
bpfmt = -d
ktfmt = --kotlinlang-style --include-dirs=services/permission,packages/SystemUI,libs/WindowManager/Shell/src/com/android/wm/shell/freeform,libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode
ktfmt = --kotlinlang-style --include-dirs=services/permission,packages/SystemUI,libs/WindowManager/Shell/src/com/android/wm/shell/freeform,libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode,libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode

[Hook Scripts]
checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
+8 −8
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ class CloseDesktopTaskTransitionHandlerTest : ShellTestCase() {
                context,
                testExecutor,
                testExecutor,
                transactionSupplier
                transactionSupplier,
            )
    }

@@ -81,11 +81,11 @@ class CloseDesktopTaskTransitionHandlerTest : ShellTestCase() {
                info =
                    createTransitionInfo(
                        type = WindowManager.TRANSIT_OPEN,
                        task = createTask(WINDOWING_MODE_FREEFORM)
                        task = createTask(WINDOWING_MODE_FREEFORM),
                    ),
                startTransaction = mock(),
                finishTransaction = mock(),
                finishCallback = {}
                finishCallback = {},
            )

        assertFalse("Should not animate open transition", animates)
@@ -99,7 +99,7 @@ class CloseDesktopTaskTransitionHandlerTest : ShellTestCase() {
                info = createTransitionInfo(task = createTask(WINDOWING_MODE_FULLSCREEN)),
                startTransaction = mock(),
                finishTransaction = mock(),
                finishCallback = {}
                finishCallback = {},
            )

        assertFalse("Should not animate fullscreen task close transition", animates)
@@ -113,11 +113,11 @@ class CloseDesktopTaskTransitionHandlerTest : ShellTestCase() {
                info =
                    createTransitionInfo(
                        changeMode = WindowManager.TRANSIT_OPEN,
                        task = createTask(WINDOWING_MODE_FREEFORM)
                        task = createTask(WINDOWING_MODE_FREEFORM),
                    ),
                startTransaction = mock(),
                finishTransaction = mock(),
                finishCallback = {}
                finishCallback = {},
            )

        assertFalse("Should not animate opening freeform task close transition", animates)
@@ -131,7 +131,7 @@ class CloseDesktopTaskTransitionHandlerTest : ShellTestCase() {
                info = createTransitionInfo(task = createTask(WINDOWING_MODE_FREEFORM)),
                startTransaction = mock(),
                finishTransaction = mock(),
                finishCallback = {}
                finishCallback = {},
            )

        assertTrue("Should animate closing freeform task close transition", animates)
@@ -140,7 +140,7 @@ class CloseDesktopTaskTransitionHandlerTest : ShellTestCase() {
    private fun createTransitionInfo(
        type: Int = WindowManager.TRANSIT_CLOSE,
        changeMode: Int = WindowManager.TRANSIT_CLOSE,
        task: RunningTaskInfo
        task: RunningTaskInfo,
    ): TransitionInfo =
        TransitionInfo(type, 0 /* flags */).apply {
            addChange(
+51 −26
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ import com.android.dx.mockito.inline.extended.ExtendedMockito.never
import com.android.dx.mockito.inline.extended.StaticMockitoSession
import com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE
import com.android.window.flags.Flags.FLAG_RESPECT_ORIENTATION_CHANGE_FOR_UNRESIZEABLE
import com.android.wm.shell.sysui.ShellController
import com.android.wm.shell.ShellTaskOrganizer
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.common.ShellExecutor
@@ -47,6 +46,7 @@ import com.android.wm.shell.desktopmode.persistence.Desktop
import com.android.wm.shell.desktopmode.persistence.DesktopPersistentRepository
import com.android.wm.shell.desktopmode.persistence.DesktopRepositoryInitializer
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus
import com.android.wm.shell.sysui.ShellController
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.transition.Transitions
import junit.framework.Assert.assertEquals
@@ -129,16 +129,22 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
                persistentRepository,
                repositoryInitializer,
                testScope,
                userManager
                userManager,
            )
        whenever(shellTaskOrganizer.getRunningTasks(anyInt())).thenAnswer { runningTasks }
        whenever(transitions.startTransition(anyInt(), any(), isNull())).thenAnswer { Binder() }
        whenever(runBlocking { persistentRepository.readDesktop(any(), any()) }).thenReturn(
            Desktop.getDefaultInstance()
        )
        whenever(runBlocking { persistentRepository.readDesktop(any(), any()) })
            .thenReturn(Desktop.getDefaultInstance())

        handler = DesktopActivityOrientationChangeHandler(context, shellInit, shellTaskOrganizer,
            taskStackListener, resizeTransitionHandler, userRepositories)
        handler =
            DesktopActivityOrientationChangeHandler(
                context,
                shellInit,
                shellTaskOrganizer,
                taskStackListener,
                resizeTransitionHandler,
                userRepositories,
            )

        shellInit.init()
    }
@@ -161,19 +167,28 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
        whenever(DesktopModeStatus.canEnterDesktopMode(context)).thenReturn(false)
        clearInvocations(shellInit)

        handler = DesktopActivityOrientationChangeHandler(context, shellInit, shellTaskOrganizer,
            taskStackListener, resizeTransitionHandler, userRepositories)
        handler =
            DesktopActivityOrientationChangeHandler(
                context,
                shellInit,
                shellTaskOrganizer,
                taskStackListener,
                resizeTransitionHandler,
                userRepositories,
            )

        verify(shellInit, never()).addInitCallback(any(),
            any<DesktopActivityOrientationChangeHandler>())
        verify(shellInit, never())
            .addInitCallback(any(), any<DesktopActivityOrientationChangeHandler>())
    }

    @Test
    fun handleActivityOrientationChange_resizeable_doNothing() {
        val task = setUpFreeformTask()

        taskStackListener.onActivityRequestedOrientationChanged(task.taskId,
            SCREEN_ORIENTATION_LANDSCAPE)
        taskStackListener.onActivityRequestedOrientationChanged(
            task.taskId,
            SCREEN_ORIENTATION_LANDSCAPE,
        )

        verify(resizeTransitionHandler, never()).startTransition(any(), any())
    }
@@ -189,8 +204,10 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
        userRepositories.current.addTask(DEFAULT_DISPLAY, task.taskId, isVisible = true)
        runningTasks.add(task)

        taskStackListener.onActivityRequestedOrientationChanged(task.taskId,
            SCREEN_ORIENTATION_LANDSCAPE)
        taskStackListener.onActivityRequestedOrientationChanged(
            task.taskId,
            SCREEN_ORIENTATION_LANDSCAPE,
        )

        verify(resizeTransitionHandler, never()).startTransition(any(), any())
    }
@@ -198,8 +215,11 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
    @Test
    fun handleActivityOrientationChange_nonResizeablePortrait_requestSameOrientation_doNothing() {
        val task = setUpFreeformTask(isResizeable = false)
        val newTask = setUpFreeformTask(isResizeable = false,
            orientation = SCREEN_ORIENTATION_SENSOR_PORTRAIT)
        val newTask =
            setUpFreeformTask(
                isResizeable = false,
                orientation = SCREEN_ORIENTATION_SENSOR_PORTRAIT,
            )

        handler.handleActivityOrientationChange(task, newTask)

@@ -211,8 +231,10 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
        val task = setUpFreeformTask(isResizeable = false)
        userRepositories.current.updateTask(task.displayId, task.taskId, isVisible = false)

        taskStackListener.onActivityRequestedOrientationChanged(task.taskId,
            SCREEN_ORIENTATION_LANDSCAPE)
        taskStackListener.onActivityRequestedOrientationChanged(
            task.taskId,
            SCREEN_ORIENTATION_LANDSCAPE,
        )

        verify(resizeTransitionHandler, never()).startTransition(any(), any())
    }
@@ -221,8 +243,8 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
    fun handleActivityOrientationChange_nonResizeablePortrait_respectLandscapeRequest() {
        val task = setUpFreeformTask(isResizeable = false)
        val oldBounds = task.configuration.windowConfiguration.bounds
        val newTask = setUpFreeformTask(isResizeable = false,
            orientation = SCREEN_ORIENTATION_LANDSCAPE)
        val newTask =
            setUpFreeformTask(isResizeable = false, orientation = SCREEN_ORIENTATION_LANDSCAPE)

        handler.handleActivityOrientationChange(task, newTask)

@@ -242,8 +264,11 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
    @Test
    fun handleActivityOrientationChange_nonResizeableLandscape_respectPortraitRequest() {
        val oldBounds = Rect(0, 0, 500, 200)
        val task = setUpFreeformTask(
            isResizeable = false, orientation = SCREEN_ORIENTATION_LANDSCAPE, bounds = oldBounds
        val task =
            setUpFreeformTask(
                isResizeable = false,
                orientation = SCREEN_ORIENTATION_LANDSCAPE,
                bounds = oldBounds,
            )
        val newTask = setUpFreeformTask(isResizeable = false, bounds = oldBounds)

@@ -266,7 +291,7 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
        displayId: Int = DEFAULT_DISPLAY,
        isResizeable: Boolean = true,
        orientation: Int = SCREEN_ORIENTATION_PORTRAIT,
        bounds: Rect? = Rect(0, 0, 200, 500)
        bounds: Rect? = Rect(0, 0, 200, 500),
    ): RunningTaskInfo {
        val task = createFreeformTask(displayId, bounds)
        val activityInfo = ActivityInfo()
+22 −24
Original line number Diff line number Diff line
@@ -56,11 +56,7 @@ class DesktopBackNavigationTransitionHandlerTest : ShellTestCase() {
    @Before
    fun setUp() {
        handler =
            DesktopBackNavigationTransitionHandler(
                testExecutor,
                testExecutor,
                displayController
            )
            DesktopBackNavigationTransitionHandler(testExecutor, testExecutor, displayController)
        whenever(displayController.getDisplayContext(any())).thenReturn(mContext)
    }

@@ -77,11 +73,11 @@ class DesktopBackNavigationTransitionHandlerTest : ShellTestCase() {
                info =
                    createTransitionInfo(
                        type = WindowManager.TRANSIT_OPEN,
                    task = createTask(WINDOWING_MODE_FREEFORM)
                        task = createTask(WINDOWING_MODE_FREEFORM),
                    ),
                startTransaction = mock(),
                finishTransaction = mock(),
                finishCallback = {}
                finishCallback = {},
            )

        assertFalse("Should not animate open transition", animates)
@@ -95,7 +91,7 @@ class DesktopBackNavigationTransitionHandlerTest : ShellTestCase() {
                info = createTransitionInfo(task = createTask(WINDOWING_MODE_FULLSCREEN)),
                startTransaction = mock(),
                finishTransaction = mock(),
                finishCallback = {}
                finishCallback = {},
            )

        assertFalse("Should not animate fullscreen task to back transition", animates)
@@ -109,11 +105,11 @@ class DesktopBackNavigationTransitionHandlerTest : ShellTestCase() {
                info =
                    createTransitionInfo(
                        changeMode = WindowManager.TRANSIT_OPEN,
                    task = createTask(WINDOWING_MODE_FREEFORM)
                        task = createTask(WINDOWING_MODE_FREEFORM),
                    ),
                startTransaction = mock(),
                finishTransaction = mock(),
                finishCallback = {}
                finishCallback = {},
            )

        assertFalse("Should not animate opening freeform task to back transition", animates)
@@ -127,7 +123,7 @@ class DesktopBackNavigationTransitionHandlerTest : ShellTestCase() {
                info = createTransitionInfo(task = createTask(WINDOWING_MODE_FREEFORM)),
                startTransaction = mock(),
                finishTransaction = mock(),
                finishCallback = {}
                finishCallback = {},
            )

        assertTrue("Should animate going to back freeform task close transition", animates)
@@ -138,22 +134,24 @@ class DesktopBackNavigationTransitionHandlerTest : ShellTestCase() {
        val animates =
            handler.startAnimation(
                transition = mock(),
                info = createTransitionInfo(
                info =
                    createTransitionInfo(
                        type = TRANSIT_CLOSE,
                        changeMode = TRANSIT_CLOSE,
                    task = createTask(WINDOWING_MODE_FREEFORM)
                        task = createTask(WINDOWING_MODE_FREEFORM),
                    ),
                startTransaction = mock(),
                finishTransaction = mock(),
                finishCallback = {}
                finishCallback = {},
            )

        assertTrue("Should animate going to back freeform task close transition", animates)
    }

    private fun createTransitionInfo(
        type: Int = WindowManager.TRANSIT_TO_BACK,
        changeMode: Int = WindowManager.TRANSIT_TO_BACK,
        task: RunningTaskInfo
        task: RunningTaskInfo,
    ): TransitionInfo =
        TransitionInfo(type, 0 /* flags */).apply {
            addChange(
+99 −93
Original line number Diff line number Diff line
@@ -93,7 +93,7 @@ class DesktopDisplayEventHandlerTest : ShellTestCase() {
    private fun testDisplayWindowingModeSwitch(
        defaultWindowingMode: Int,
        extendedDisplayEnabled: Boolean,
    expectTransition: Boolean
        expectTransition: Boolean,
    ) {
        val externalDisplayId = 100
        val captor = ArgumentCaptor.forClass(OnDisplaysChangedListener::class.java)
@@ -101,8 +101,11 @@ class DesktopDisplayEventHandlerTest : ShellTestCase() {
        val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
        tda.configuration.windowConfiguration.windowingMode = defaultWindowingMode
        whenever(mockWindowManager.getWindowingMode(anyInt())).thenAnswer { defaultWindowingMode }
    val settingsSession = ExtendedDisplaySettingsSession(
      context.contentResolver, if (extendedDisplayEnabled) 1 else 0)
        val settingsSession =
            ExtendedDisplaySettingsSession(
                context.contentResolver,
                if (extendedDisplayEnabled) 1 else 0,
            )

        settingsSession.use {
            // The external display connected.
@@ -117,7 +120,8 @@ class DesktopDisplayEventHandlerTest : ShellTestCase() {

            if (expectTransition) {
                val arg = argumentCaptor<WindowContainerTransaction>()
        verify(transitions, times(2)).startTransition(eq(TRANSIT_CHANGE), arg.capture(), isNull())
                verify(transitions, times(2))
                    .startTransition(eq(TRANSIT_CHANGE), arg.capture(), isNull())
                assertThat(arg.firstValue.changes[tda.token.asBinder()]?.windowingMode)
                    .isEqualTo(WINDOWING_MODE_FREEFORM)
                assertThat(arg.secondValue.changes[tda.token.asBinder()]?.windowingMode)
@@ -133,7 +137,7 @@ class DesktopDisplayEventHandlerTest : ShellTestCase() {
        testDisplayWindowingModeSwitch(
            defaultWindowingMode = WINDOWING_MODE_FULLSCREEN,
            extendedDisplayEnabled = false,
      expectTransition = false
            expectTransition = false,
        )
    }

@@ -142,7 +146,7 @@ class DesktopDisplayEventHandlerTest : ShellTestCase() {
        testDisplayWindowingModeSwitch(
            defaultWindowingMode = WINDOWING_MODE_FULLSCREEN,
            extendedDisplayEnabled = true,
      expectTransition = true
            expectTransition = true,
        )
    }

@@ -151,18 +155,20 @@ class DesktopDisplayEventHandlerTest : ShellTestCase() {
        testDisplayWindowingModeSwitch(
            defaultWindowingMode = WINDOWING_MODE_FREEFORM,
            extendedDisplayEnabled = true,
      expectTransition = false
            expectTransition = false,
        )
    }

    private class ExtendedDisplaySettingsSession(
        private val contentResolver: ContentResolver,
      private val overrideValue: Int
        private val overrideValue: Int,
    ) : AutoCloseable {
        private val settingName = DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS
        private val initialValue = Settings.Global.getInt(contentResolver, settingName, 0)

    init { Settings.Global.putInt(contentResolver, settingName, overrideValue) }
        init {
            Settings.Global.putInt(contentResolver, settingName, overrideValue)
        }

        override fun close() {
            Settings.Global.putInt(contentResolver, settingName, initialValue)
Loading