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

Commit fb8c9c61 authored by Marzia Favaro's avatar Marzia Favaro
Browse files

Show app handle based on screen size rather than activity's

Otherwise there would be no app handle on split screen

Fix: 392084559
Test: app handle shows on split screen on foldable
Test: DesktopModeWindowDecorViewModelAppHandleOnlyTest
Flag: EXEMPT this was the intended behavior
Change-Id: I7971fe1ba4215817ef106d48fd6e7d1d4af48798
parent 7acbff03
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1658,7 +1658,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
        if (mDesktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing(taskInfo)) {
            return false;
        }
        final boolean isOnLargeScreen = taskInfo.getConfiguration().smallestScreenWidthDp
        final boolean isOnLargeScreen =
                mDisplayController.getDisplay(taskInfo.displayId).getMinSizeDimensionDp()
                        >= WindowManager.LARGE_SCREEN_SMALLEST_SCREEN_WIDTH_DP;
        if (!DesktopModeStatus.canEnterDesktopMode(mContext)
                && DesktopModeStatus.overridesShowAppHandle(mContext) && !isOnLargeScreen) {
+12 −4
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.pm.ActivityInfo
import android.platform.test.annotations.EnableFlags
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper.RunWithLooper
import android.view.Display
import android.view.Display.DEFAULT_DISPLAY
import android.view.SurfaceControl
import androidx.test.filters.SmallTest
@@ -38,10 +39,13 @@ import junit.framework.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mockito.times
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
import org.mockito.quality.Strictness

/**
@@ -59,6 +63,8 @@ import org.mockito.quality.Strictness
class DesktopModeWindowDecorViewModelAppHandleOnlyTest :
    DesktopModeWindowDecorViewModelTestsBase() {

    protected val mockDisplay = mock<Display>()

    @Before
    fun setUp() {
        mockitoSession =
@@ -70,6 +76,7 @@ class DesktopModeWindowDecorViewModelAppHandleOnlyTest :
        doReturn(false).`when` { DesktopModeStatus.isDeviceEligibleForDesktopMode(any()) }
        doReturn(true).`when` { DesktopModeStatus.overridesShowAppHandle(any())}
        setUpCommon()
        whenever(mockDisplayController.getDisplay(anyInt())).thenReturn(mockDisplay)
    }

    @Test
@@ -156,7 +163,7 @@ class DesktopModeWindowDecorViewModelAppHandleOnlyTest :
        assertTrue(windowDecorByTaskIdSpy.contains(task.taskId))


        task.setOnLargeScreen(false)
        setLargeScreen(false)
        setUpMockDecorationForTask(task)
        onTaskChanging(task, taskSurface)
        assertFalse(windowDecorByTaskIdSpy.contains(task.taskId))
@@ -172,11 +179,12 @@ class DesktopModeWindowDecorViewModelAppHandleOnlyTest :
    ): RunningTaskInfo {
        val task = createTask(
            displayId, windowingMode, activityType, activityInfo, requestingImmersive)
        task.setOnLargeScreen(shouldShowAspectRatioButton)
        setLargeScreen(shouldShowAspectRatioButton)
        return task
    }

    private fun RunningTaskInfo.setOnLargeScreen(large: Boolean) {
        configuration.smallestScreenWidthDp = if (large) 1000 else 100
    private fun setLargeScreen(large: Boolean) {
        val size: Float = if (large) 1000f else 100f
        whenever(mockDisplay.getMinSizeDimensionDp()).thenReturn(size)
    }
}