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

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

Disable desktop mode button on app handle unless desktop mode enabled

Test: HandleMenuTest
Bug: 377689543
Flag: com.android.window.flags.show_app_handle_large_screens
Change-Id: Ib85e4023cdf655ac46a68663499628ce38059e82
parent edc51ab0
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import static android.window.DesktopModeFlags.ENABLE_CAPTION_COMPAT_INSET_FORCE_

import static com.android.launcher3.icons.BaseIconFactory.MODE_DEFAULT;
import static com.android.wm.shell.shared.desktopmode.DesktopModeStatus.canEnterDesktopMode;
import static com.android.wm.shell.shared.desktopmode.DesktopModeStatus.canEnterDesktopModeOrShowAppHandle;
import static com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT;
import static com.android.wm.shell.windowdecor.DragResizeWindowGeometry.DisabledEdge;
@@ -1397,10 +1398,11 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
                mAppIconBitmap,
                mAppName,
                mSplitScreenController,
                canEnterDesktopMode(mContext),
                canEnterDesktopModeOrShowAppHandle(mContext),
                supportsMultiInstance,
                shouldShowManageWindowsButton,
                shouldShowChangeAspectRatioButton,
                canEnterDesktopMode(mContext),
                isBrowserApp,
                isBrowserApp ? getAppLink() : getBrowserLink(),
                mResult.mCaptionWidth,
+7 −0
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ class HandleMenu(
    private val shouldShowNewWindowButton: Boolean,
    private val shouldShowManageWindowsButton: Boolean,
    private val shouldShowChangeAspectRatioButton: Boolean,
    private val shouldShowDesktopModeButton: Boolean,
    private val isBrowserApp: Boolean,
    private val openInAppOrBrowserIntent: Intent?,
    private val captionWidth: Int,
@@ -186,6 +187,7 @@ class HandleMenu(
            shouldShowNewWindowButton = shouldShowNewWindowButton,
            shouldShowManageWindowsButton = shouldShowManageWindowsButton,
            shouldShowChangeAspectRatioButton = shouldShowChangeAspectRatioButton,
            shouldShowDesktopModeButton = shouldShowDesktopModeButton,
            isBrowserApp = isBrowserApp
        ).apply {
            bind(taskInfo, appIconBitmap, appName, shouldShowMoreActionsPill)
@@ -464,6 +466,7 @@ class HandleMenu(
        private val shouldShowNewWindowButton: Boolean,
        private val shouldShowManageWindowsButton: Boolean,
        private val shouldShowChangeAspectRatioButton: Boolean,
        private val shouldShowDesktopModeButton: Boolean,
        private val isBrowserApp: Boolean
    ) {
        val rootView = LayoutInflater.from(context)
@@ -660,6 +663,7 @@ class HandleMenu(
            floatingBtn.isSelected = taskInfo.isPinned
            floatingBtn.isEnabled = !taskInfo.isPinned
            floatingBtn.imageTintList = style.windowingButtonColor
            desktopBtn.isGone = !shouldShowDesktopModeButton
            desktopBtn.isSelected = taskInfo.isFreeform
            desktopBtn.isEnabled = !taskInfo.isFreeform
            desktopBtn.imageTintList = style.windowingButtonColor
@@ -740,6 +744,7 @@ interface HandleMenuFactory {
        shouldShowNewWindowButton: Boolean,
        shouldShowManageWindowsButton: Boolean,
        shouldShowChangeAspectRatioButton: Boolean,
        shouldShowDesktopModeButton: Boolean,
        isBrowserApp: Boolean,
        openInAppOrBrowserIntent: Intent?,
        captionWidth: Int,
@@ -762,6 +767,7 @@ object DefaultHandleMenuFactory : HandleMenuFactory {
        shouldShowNewWindowButton: Boolean,
        shouldShowManageWindowsButton: Boolean,
        shouldShowChangeAspectRatioButton: Boolean,
        shouldShowDesktopModeButton: Boolean,
        isBrowserApp: Boolean,
        openInAppOrBrowserIntent: Intent?,
        captionWidth: Int,
@@ -780,6 +786,7 @@ object DefaultHandleMenuFactory : HandleMenuFactory {
            shouldShowNewWindowButton,
            shouldShowManageWindowsButton,
            shouldShowChangeAspectRatioButton,
            shouldShowDesktopModeButton,
            isBrowserApp,
            openInAppOrBrowserIntent,
            captionWidth,
+4 −3
Original line number Diff line number Diff line
@@ -265,8 +265,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
        doReturn(defaultDisplay).when(mMockDisplayController).getDisplay(Display.DEFAULT_DISPLAY);
        doReturn(mInsetsState).when(mMockDisplayController).getInsetsState(anyInt());
        when(mMockHandleMenuFactory.create(any(), any(), anyInt(), any(), any(), any(),
                anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean(), any(),
                anyInt(), anyInt(), anyInt(), anyInt()))
                anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean(),
                any(), anyInt(), anyInt(), anyInt(), anyInt()))
                .thenReturn(mMockHandleMenu);
        when(mMockMultiInstanceHelper.supportsMultiInstanceSplit(any())).thenReturn(false);
        when(mMockAppHeaderViewHolderFactory.create(any(), any(), any(), any(), any(), any(), any(),
@@ -1577,7 +1577,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
    private void verifyHandleMenuCreated(@Nullable Uri uri) {
        verify(mMockHandleMenuFactory).create(any(), any(), anyInt(), any(), any(),
                any(), anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean(),
                argThat(intent -> (uri == null && intent == null) || intent.getData().equals(uri)),
                anyBoolean(), argThat(intent ->
                        (uri == null && intent == null) || intent.getData().equals(uri)),
                anyInt(), anyInt(), anyInt(), anyInt());
    }

+2 −2
Original line number Diff line number Diff line
@@ -266,8 +266,8 @@ class HandleMenuTest : ShellTestCase() {
            WindowManagerWrapper(mockWindowManager),
            layoutId, appIcon, appName, splitScreenController, shouldShowWindowingPill = true,
            shouldShowNewWindowButton = true, shouldShowManageWindowsButton = false,
            shouldShowChangeAspectRatioButton = false, isBrowserApp = false,
            null /* openInAppOrBrowserIntent */, captionWidth = HANDLE_WIDTH,
            shouldShowChangeAspectRatioButton = false, shouldShowDesktopModeButton = true,
            isBrowserApp = false, null /* openInAppOrBrowserIntent */, captionWidth = HANDLE_WIDTH,
            captionHeight = 50,
            captionX = captionX,
            captionY = 0,