Loading services/core/java/com/android/server/wm/DisplayWindowSettings.java +20 −8 Original line number Diff line number Diff line Loading @@ -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 Loading services/tests/wmtests/src/com/android/server/wm/DisplayWindowSettingsTests.java +11 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading
services/core/java/com/android/server/wm/DisplayWindowSettings.java +20 −8 Original line number Diff line number Diff line Loading @@ -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 Loading
services/tests/wmtests/src/com/android/server/wm/DisplayWindowSettingsTests.java +11 −0 Original line number Diff line number Diff line Loading @@ -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; Loading