diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 4c60a3d4a1a66..c3a754279f80d 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -332,6 +332,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp DisplayCutout mInitialDisplayCutout; private final RotationCache mDisplayCutoutCache = new RotationCache<>(this::calculateDisplayCutoutForRotationUncached); + boolean mIgnoreDisplayCutout; /** * Overridden display size. Initialized with {@link #mInitialDisplayWidth} @@ -2507,7 +2508,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp final int newWidth = rotated ? mDisplayInfo.logicalHeight : mDisplayInfo.logicalWidth; final int newHeight = rotated ? mDisplayInfo.logicalWidth : mDisplayInfo.logicalHeight; final int newDensity = mDisplayInfo.logicalDensityDpi; - final DisplayCutout newCutout = mDisplayInfo.displayCutout; + final DisplayCutout newCutout = mIgnoreDisplayCutout + ? DisplayCutout.NO_CUTOUT : mDisplayInfo.displayCutout; final String newUniqueId = mDisplayInfo.uniqueId; final boolean displayMetricsChanged = mInitialDisplayWidth != newWidth diff --git a/services/core/java/com/android/server/wm/DisplayWindowSettings.java b/services/core/java/com/android/server/wm/DisplayWindowSettings.java index 5d4dbc8388c4e..b82fdd237f2b9 100644 --- a/services/core/java/com/android/server/wm/DisplayWindowSettings.java +++ b/services/core/java/com/android/server/wm/DisplayWindowSettings.java @@ -261,6 +261,10 @@ class DisplayWindowSettings { ? settings.mIgnoreOrientationRequest : false; dc.setIgnoreOrientationRequest(ignoreOrientationRequest); + final boolean ignoreDisplayCutout = settings.mIgnoreDisplayCutout != null + ? settings.mIgnoreDisplayCutout : false; + dc.mIgnoreDisplayCutout = ignoreDisplayCutout; + final int width = hasSizeOverride ? settings.mForcedWidth : dc.mInitialDisplayWidth; final int height = hasSizeOverride ? settings.mForcedHeight : dc.mInitialDisplayHeight; final int density = hasDensityOverride ? settings.mForcedDensity @@ -352,6 +356,8 @@ class DisplayWindowSettings { Integer mFixedToUserRotation; @Nullable Boolean mIgnoreOrientationRequest; + @Nullable + Boolean mIgnoreDisplayCutout; SettingsEntry() {} @@ -422,6 +428,10 @@ class DisplayWindowSettings { mIgnoreOrientationRequest = other.mIgnoreOrientationRequest; changed = true; } + if (other.mIgnoreDisplayCutout != mIgnoreDisplayCutout) { + mIgnoreDisplayCutout = other.mIgnoreDisplayCutout; + changed = true; + } return changed; } @@ -500,6 +510,11 @@ class DisplayWindowSettings { mIgnoreOrientationRequest = delta.mIgnoreOrientationRequest; changed = true; } + if (delta.mIgnoreDisplayCutout != null + && delta.mIgnoreDisplayCutout != mIgnoreDisplayCutout) { + mIgnoreDisplayCutout = delta.mIgnoreDisplayCutout; + changed = true; + } return changed; } @@ -515,7 +530,8 @@ class DisplayWindowSettings { && mShouldShowSystemDecors == null && mImePolicy == null && mFixedToUserRotation == null - && mIgnoreOrientationRequest == null; + && mIgnoreOrientationRequest == null + && mIgnoreDisplayCutout == null; } @Override @@ -536,8 +552,8 @@ class DisplayWindowSettings { && Objects.equals(mShouldShowSystemDecors, that.mShouldShowSystemDecors) && Objects.equals(mImePolicy, that.mImePolicy) && Objects.equals(mFixedToUserRotation, that.mFixedToUserRotation) - && Objects.equals(mIgnoreOrientationRequest, - that.mIgnoreOrientationRequest); + && Objects.equals(mIgnoreOrientationRequest, that.mIgnoreOrientationRequest) + && Objects.equals(mIgnoreDisplayCutout, that.mIgnoreDisplayCutout); } @Override @@ -545,7 +561,7 @@ class DisplayWindowSettings { return Objects.hash(mWindowingMode, mUserRotationMode, mUserRotation, mForcedWidth, mForcedHeight, mForcedDensity, mForcedScalingMode, mRemoveContentMode, mShouldShowWithInsecureKeyguard, mShouldShowSystemDecors, mImePolicy, - mFixedToUserRotation, mIgnoreOrientationRequest); + mFixedToUserRotation, mIgnoreOrientationRequest, mIgnoreDisplayCutout); } @Override @@ -564,6 +580,7 @@ class DisplayWindowSettings { + ", mShouldShowIme=" + mImePolicy + ", mFixedToUserRotation=" + mFixedToUserRotation + ", mIgnoreOrientationRequest=" + mIgnoreOrientationRequest + + ", mIgnoreDisplayCutout=" + mIgnoreDisplayCutout + '}'; } } diff --git a/services/core/java/com/android/server/wm/DisplayWindowSettingsProvider.java b/services/core/java/com/android/server/wm/DisplayWindowSettingsProvider.java index 57c947f572d9c..5f3ab43eca7c4 100644 --- a/services/core/java/com/android/server/wm/DisplayWindowSettingsProvider.java +++ b/services/core/java/com/android/server/wm/DisplayWindowSettingsProvider.java @@ -403,6 +403,8 @@ class DisplayWindowSettingsProvider implements SettingsProvider { null /* defaultValue */); settingsEntry.mIgnoreOrientationRequest = getBooleanAttribute(parser, "ignoreOrientationRequest", null /* defaultValue */); + settingsEntry.mIgnoreDisplayCutout = getBooleanAttribute(parser, + "ignoreDisplayCutout", null /* defaultValue */); fileData.mSettings.put(name, settingsEntry); } XmlUtils.skipCurrentTag(parser); @@ -490,6 +492,10 @@ class DisplayWindowSettingsProvider implements SettingsProvider { out.attributeBoolean(null, "ignoreOrientationRequest", settingsEntry.mIgnoreOrientationRequest); } + if (settingsEntry.mIgnoreDisplayCutout != null) { + out.attributeBoolean(null, "ignoreDisplayCutout", + settingsEntry.mIgnoreDisplayCutout); + } out.endTag(null, "display"); }