Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b8a82ce authored by Tiger's avatar Tiger
Browse files

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
parent 2767bf3c
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -2011,9 +2011,14 @@ public class DisplayPolicy {
            public String toString() {
            public String toString() {
                final StringBuilder tmpSb = new StringBuilder(32);
                final StringBuilder tmpSb = new StringBuilder(32);
                return "{nonDecorInsets=" + mNonDecorInsets.toShortString(tmpSb)
                return "{nonDecorInsets=" + mNonDecorInsets.toShortString(tmpSb)
                        + ", overrideNonDecorInsets=" + mOverrideNonDecorInsets.toShortString(tmpSb)
                        + ", configInsets=" + mConfigInsets.toShortString(tmpSb)
                        + ", configInsets=" + mConfigInsets.toShortString(tmpSb)
                        + ", overrideConfigInsets=" + mOverrideConfigInsets.toShortString(tmpSb)
                        + ", nonDecorFrame=" + mNonDecorFrame.toShortString(tmpSb)
                        + ", nonDecorFrame=" + mNonDecorFrame.toShortString(tmpSb)
                        + ", configFrame=" + mConfigFrame.toShortString(tmpSb) + '}';
                        + ", overrideNonDecorFrame=" + mOverrideNonDecorFrame.toShortString(tmpSb)
                        + ", configFrame=" + mConfigFrame.toShortString(tmpSb)
                        + ", overrideConfigFrame=" + mOverrideConfigFrame.toShortString(tmpSb)
                        + '}';
            }
            }
        }
        }


+3 −1
Original line number Original line Diff line number Diff line
@@ -1812,9 +1812,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
        if (mInsetsSourceProviders == null) {
        if (mInsetsSourceProviders == null) {
            return false;
            return false;
        }
        }
        final @InsetsType int decorInsetsTypes =
                mWmService.mConfigTypes | mWmService.mOverrideConfigTypes;
        for (int i = mInsetsSourceProviders.size() - 1; i >= 0; i--) {
        for (int i = mInsetsSourceProviders.size() - 1; i >= 0; i--) {
            final InsetsSource source = mInsetsSourceProviders.valueAt(i).getSource();
            final InsetsSource source = mInsetsSourceProviders.valueAt(i).getSource();
            if ((source.getType() & mWmService.mConfigTypes) != 0) {
            if ((source.getType() & decorInsetsTypes) != 0) {
                return true;
                return true;
            }
            }
        }
        }