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 Original line Diff line number Diff line
@@ -1658,7 +1658,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
        if (mDesktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing(taskInfo)) {
        if (mDesktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing(taskInfo)) {
            return false;
            return false;
        }
        }
        final boolean isOnLargeScreen = taskInfo.getConfiguration().smallestScreenWidthDp
        final boolean isOnLargeScreen =
                mDisplayController.getDisplay(taskInfo.displayId).getMinSizeDimensionDp()
                        >= WindowManager.LARGE_SCREEN_SMALLEST_SCREEN_WIDTH_DP;
                        >= WindowManager.LARGE_SCREEN_SMALLEST_SCREEN_WIDTH_DP;
        if (!DesktopModeStatus.canEnterDesktopMode(mContext)
        if (!DesktopModeStatus.canEnterDesktopMode(mContext)
                && DesktopModeStatus.overridesShowAppHandle(mContext) && !isOnLargeScreen) {
                && DesktopModeStatus.overridesShowAppHandle(mContext) && !isOnLargeScreen) {
+12 −4
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.pm.ActivityInfo
import android.platform.test.annotations.EnableFlags
import android.platform.test.annotations.EnableFlags
import android.testing.AndroidTestingRunner
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper.RunWithLooper
import android.testing.TestableLooper.RunWithLooper
import android.view.Display
import android.view.Display.DEFAULT_DISPLAY
import android.view.Display.DEFAULT_DISPLAY
import android.view.SurfaceControl
import android.view.SurfaceControl
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
@@ -38,10 +39,13 @@ import junit.framework.Assert.assertTrue
import org.junit.Before
import org.junit.Before
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mockito.times
import org.mockito.Mockito.times
import org.mockito.kotlin.any
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
import org.mockito.quality.Strictness
import org.mockito.quality.Strictness


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


    protected val mockDisplay = mock<Display>()

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


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




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


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