summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrii Kulian <akulian@google.com> 2020-12-07 17:28:18 -0800
committer Andrii Kulian <akulian@google.com> 2020-12-08 01:52:15 +0000
commit10fce9ce7f829cbbcb33d836862e56fc9f449a42 (patch)
tree478ec2f58708746a7c8d418de53a7d0195f98f78
parentfdd9b804d77de929ad96c1fc9318a2ebfcdb26a5 (diff)
Add an option to ignore display cutout in DisplayWindowSettings
This is useful in a case when display size is also overridden to avoid insets and achieve a more accurate simulation. Bug: 173543736 Test: Change override DisplayWindowSettings on a device with cutout Change-Id: Id92bfdcdc6521a0e0399d338dd900e31581ff5c5
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java4
-rw-r--r--services/core/java/com/android/server/wm/DisplayWindowSettings.java25
-rw-r--r--services/core/java/com/android/server/wm/DisplayWindowSettingsProvider.java6
3 files changed, 30 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index e88f8e390833..296faad64fb3 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -326,6 +326,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
DisplayCutout mInitialDisplayCutout;
private final RotationCache<DisplayCutout, WmDisplayCutout> mDisplayCutoutCache
= new RotationCache<>(this::calculateDisplayCutoutForRotationUncached);
+ boolean mIgnoreDisplayCutout;
/**
* Overridden display size. Initialized with {@link #mInitialDisplayWidth}
@@ -2459,7 +2460,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 5d4dbc8388c4..b82fdd237f2b 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 57c947f572d9..5f3ab43eca7c 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");
}