Loading services/core/java/com/android/server/wm/DisplayContent.java +5 −7 Original line number Diff line number Diff line Loading @@ -3212,15 +3212,13 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp * If xPpi or yDpi is equal to {@link #INVALID_DPI}, the values are ignored. */ void setForcedSize(int width, int height, float xDPI, float yDPI) { // Can't force size higher than the maximal allowed mIsSizeForced = mInitialDisplayWidth != width || mInitialDisplayHeight != height; if (mIsSizeForced) { if (mMaxUiWidth > 0 && width > mMaxUiWidth) { final float ratio = mMaxUiWidth / (float) width; height = (int) (height * ratio); width = mMaxUiWidth; } mIsSizeForced = mInitialDisplayWidth != width || mInitialDisplayHeight != height; if (mIsSizeForced) { final Point size = getValidForcedSize(width, height); width = size.x; height = size.y; Loading services/core/java/com/android/server/wm/DisplayWindowSettings.java +1 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ class DisplayWindowSettings { mSettingsProvider.updateOverrideSettings(displayInfo, overrideSettings); } /** Stores the size override settings. If the width or height is zero, it means to clear. */ void setForcedSize(@NonNull DisplayContent displayContent, int width, int height) { if (displayContent.isDefaultDisplay) { final String sizeString = (width == 0 || height == 0) ? "" : (width + "," + height); Loading services/core/java/com/android/server/wm/WindowManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -6023,7 +6023,7 @@ public class WindowManagerService extends IWindowManager.Stub displayContent.setForcedSize(displayContent.mInitialDisplayWidth, displayContent.mInitialDisplayHeight, displayContent.mInitialPhysicalXDpi, displayContent.mInitialPhysicalXDpi); displayContent.mInitialPhysicalYDpi); } } } finally { Loading services/tests/wmtests/src/com/android/server/wm/DisplayWindowSettingsTests.java +13 −0 Original line number Diff line number Diff line Loading @@ -244,6 +244,19 @@ public class DisplayWindowSettingsTests extends WindowTestsBase { mWm.clearForcedDisplaySize(mSecondaryDisplay.getDisplayId()); assertEquals(mSecondaryDisplay.mInitialDisplayWidth, mSecondaryDisplay.mBaseDisplayWidth); assertEquals(mSecondaryDisplay.mInitialDisplayHeight, mSecondaryDisplay.mBaseDisplayHeight); // Forced size can be cleared even if the initial display size is smaller than max width. final int maxWidth = mSecondaryDisplay.mInitialDisplayWidth - 20; mSecondaryDisplay.setMaxUiWidth(maxWidth); assertEquals(maxWidth, mSecondaryDisplay.mBaseDisplayWidth); mSecondaryDisplay.setForcedSize(maxWidth - 10, maxWidth + 10); assertNotEquals(maxWidth, mSecondaryDisplay.mBaseDisplayHeight); assertTrue(mSecondaryDisplay.mIsSizeForced); mWm.clearForcedDisplaySize(mSecondaryDisplay.mDisplayId); assertFalse(mSecondaryDisplay.mIsSizeForced); assertEquals(maxWidth, mSecondaryDisplay.mBaseDisplayWidth); assertEquals(0, mSettingsProvider.getSettings(originalInfo).mForcedWidth); } @Test Loading Loading
services/core/java/com/android/server/wm/DisplayContent.java +5 −7 Original line number Diff line number Diff line Loading @@ -3212,15 +3212,13 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp * If xPpi or yDpi is equal to {@link #INVALID_DPI}, the values are ignored. */ void setForcedSize(int width, int height, float xDPI, float yDPI) { // Can't force size higher than the maximal allowed mIsSizeForced = mInitialDisplayWidth != width || mInitialDisplayHeight != height; if (mIsSizeForced) { if (mMaxUiWidth > 0 && width > mMaxUiWidth) { final float ratio = mMaxUiWidth / (float) width; height = (int) (height * ratio); width = mMaxUiWidth; } mIsSizeForced = mInitialDisplayWidth != width || mInitialDisplayHeight != height; if (mIsSizeForced) { final Point size = getValidForcedSize(width, height); width = size.x; height = size.y; Loading
services/core/java/com/android/server/wm/DisplayWindowSettings.java +1 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ class DisplayWindowSettings { mSettingsProvider.updateOverrideSettings(displayInfo, overrideSettings); } /** Stores the size override settings. If the width or height is zero, it means to clear. */ void setForcedSize(@NonNull DisplayContent displayContent, int width, int height) { if (displayContent.isDefaultDisplay) { final String sizeString = (width == 0 || height == 0) ? "" : (width + "," + height); Loading
services/core/java/com/android/server/wm/WindowManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -6023,7 +6023,7 @@ public class WindowManagerService extends IWindowManager.Stub displayContent.setForcedSize(displayContent.mInitialDisplayWidth, displayContent.mInitialDisplayHeight, displayContent.mInitialPhysicalXDpi, displayContent.mInitialPhysicalXDpi); displayContent.mInitialPhysicalYDpi); } } } finally { Loading
services/tests/wmtests/src/com/android/server/wm/DisplayWindowSettingsTests.java +13 −0 Original line number Diff line number Diff line Loading @@ -244,6 +244,19 @@ public class DisplayWindowSettingsTests extends WindowTestsBase { mWm.clearForcedDisplaySize(mSecondaryDisplay.getDisplayId()); assertEquals(mSecondaryDisplay.mInitialDisplayWidth, mSecondaryDisplay.mBaseDisplayWidth); assertEquals(mSecondaryDisplay.mInitialDisplayHeight, mSecondaryDisplay.mBaseDisplayHeight); // Forced size can be cleared even if the initial display size is smaller than max width. final int maxWidth = mSecondaryDisplay.mInitialDisplayWidth - 20; mSecondaryDisplay.setMaxUiWidth(maxWidth); assertEquals(maxWidth, mSecondaryDisplay.mBaseDisplayWidth); mSecondaryDisplay.setForcedSize(maxWidth - 10, maxWidth + 10); assertNotEquals(maxWidth, mSecondaryDisplay.mBaseDisplayHeight); assertTrue(mSecondaryDisplay.mIsSizeForced); mWm.clearForcedDisplaySize(mSecondaryDisplay.mDisplayId); assertFalse(mSecondaryDisplay.mIsSizeForced); assertEquals(maxWidth, mSecondaryDisplay.mBaseDisplayWidth); assertEquals(0, mSettingsProvider.getSettings(originalInfo).mForcedWidth); } @Test Loading