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

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

Merge "Ensure that display settings fallsback to DApolicy" into main

parents b31e37a5 c4371ef0
Loading
Loading
Loading
Loading
+20 −8
Original line number Diff line number Diff line
@@ -129,21 +129,33 @@ class DisplayWindowSettings {
    @WindowConfiguration.WindowingMode
    private int getWindowingModeLocked(@NonNull SettingsProvider.SettingsEntry settings,
            @NonNull DisplayContent dc) {
        int windowingMode = settings.mWindowingMode;
        final int windowingModeFromDisplaySettings = settings.mWindowingMode;
        // This display used to be in freeform, but we don't support freeform anymore, so fall
        // back to fullscreen.
        if (windowingMode == WindowConfiguration.WINDOWING_MODE_FREEFORM
        if (windowingModeFromDisplaySettings == WindowConfiguration.WINDOWING_MODE_FREEFORM
                && !mService.mAtmService.mSupportsFreeformWindowManagement) {
            return WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
        }
        if (windowingModeFromDisplaySettings != WindowConfiguration.WINDOWING_MODE_UNDEFINED) {
            return windowingModeFromDisplaySettings;
        }
        // No record is present so use default windowing mode policy.
        if (windowingMode == WindowConfiguration.WINDOWING_MODE_UNDEFINED) {
            windowingMode = mService.mAtmService.mSupportsFreeformWindowManagement
                    && (mService.mIsPc || dc.forceDesktopMode())
                    ? WindowConfiguration.WINDOWING_MODE_FREEFORM
                    : WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
        final boolean forceFreeForm = mService.mAtmService.mSupportsFreeformWindowManagement
                && (mService.mIsPc || dc.forceDesktopMode());
        if (forceFreeForm) {
            return WindowConfiguration.WINDOWING_MODE_FREEFORM;
        }
        final int currentWindowingMode = dc.getDefaultTaskDisplayArea().getWindowingMode();
        if (currentWindowingMode == WindowConfiguration.WINDOWING_MODE_UNDEFINED) {
            // No record preset in settings + no mode set via the display area policy.
            // Move to fullscreen as a fallback.
            return WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
        }
        if (currentWindowingMode == WindowConfiguration.WINDOWING_MODE_FREEFORM) {
            // Freeform was enabled before but disabled now, the TDA should now move to fullscreen.
            return WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
        }
        return windowingMode;
        return currentWindowingMode;
    }

    @WindowConfiguration.WindowingMode
+11 −0
Original line number Diff line number Diff line
@@ -114,6 +114,17 @@ public class DisplayWindowSettingsTests extends WindowTestsBase {
                mPrimaryDisplay.getDefaultTaskDisplayArea().getWindowingMode());
    }

    @Test
    public void testPrimaryDisplayUnchanged_whenWindowingModeAlreadySet_NoFreeformSupport() {
        mPrimaryDisplay.getDefaultTaskDisplayArea().setWindowingMode(
                WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW);

        mDisplayWindowSettings.applySettingsToDisplayLocked(mPrimaryDisplay);

        assertEquals(WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW,
                mPrimaryDisplay.getDefaultTaskDisplayArea().getWindowingMode());
    }

    @Test
    public void testPrimaryDisplayDefaultToFullscreen_HasFreeformSupport_NonPc_NoDesktopMode() {
        mWm.mAtmService.mSupportsFreeformWindowManagement = true;