Also check with mOverrideConfigTypes in providesDisplayDecorInsets
If a window provides an insets source which will affect DecorInsets,
WindowState#providesDisplayDecorInsets should return true. Since
DecorInsets contains mOverrideConfigInsets and mOverrideNonDecorInsets
now, we should take mOverrideConfigTypes and mOverrideDecorTypes into
account.
Note that mOverrideConfigTypes always include mOverrideDecorTypes, so
this CL only adds the check of mOverrideConfigTypes.
Fix: 344828981
Bug: 151861875
Flag: com.android.window.flags.insets_decoupled_configuration
Test: execute: "dumpsys window display" and see if overrideConfigInsets
includes the navigation bar insets
Change-Id: Id0d105622e0d87c66cc5e95657ac34a3234214c0
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java
index d0086aa..2f23955 100644
--- a/services/core/java/com/android/server/wm/DisplayPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayPolicy.java
@@ -2011,9 +2011,14 @@
public String toString() {
final StringBuilder tmpSb = new StringBuilder(32);
return "{nonDecorInsets=" + mNonDecorInsets.toShortString(tmpSb)
+ + ", overrideNonDecorInsets=" + mOverrideNonDecorInsets.toShortString(tmpSb)
+ ", configInsets=" + mConfigInsets.toShortString(tmpSb)
+ + ", overrideConfigInsets=" + mOverrideConfigInsets.toShortString(tmpSb)
+ ", nonDecorFrame=" + mNonDecorFrame.toShortString(tmpSb)
- + ", configFrame=" + mConfigFrame.toShortString(tmpSb) + '}';
+ + ", overrideNonDecorFrame=" + mOverrideNonDecorFrame.toShortString(tmpSb)
+ + ", configFrame=" + mConfigFrame.toShortString(tmpSb)
+ + ", overrideConfigFrame=" + mOverrideConfigFrame.toShortString(tmpSb)
+ + '}';
}
}
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index d7c49ac..15927b4 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -1812,9 +1812,11 @@
if (mInsetsSourceProviders == null) {
return false;
}
+ final @InsetsType int decorInsetsTypes =
+ mWmService.mConfigTypes | mWmService.mOverrideConfigTypes;
for (int i = mInsetsSourceProviders.size() - 1; i >= 0; i--) {
final InsetsSource source = mInsetsSourceProviders.valueAt(i).getSource();
- if ((source.getType() & mWmService.mConfigTypes) != 0) {
+ if ((source.getType() & decorInsetsTypes) != 0) {
return true;
}
}