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

Commit 6f2f5423 authored by Jordan Demeulenaere's avatar Jordan Demeulenaere Committed by Android (Google) Code Review
Browse files

Revert "Revert "Revert "Make extra navigation bar count towards non decor frame (3/3)"""

This reverts commit 2c9d5a5e.

Reason for revert: This broke SystemUI screenshot tests, see b/267764961#comment11

Change-Id: I0372e5bcab10a73658c92ae03243da767def1e86
parent 2c9d5a5e
Loading
Loading
Loading
Loading
+26 −4
Original line number Diff line number Diff line
@@ -2006,8 +2006,7 @@ public class DisplayPolicy {
                dc.getDisplayPolicy().simulateLayoutDisplay(df);
                final InsetsState insetsState = df.mInsetsState;
                final Rect displayFrame = insetsState.getDisplayFrame();
                final Insets decor = insetsState.calculateInsets(displayFrame, DECOR_TYPES,
                        true /* ignoreVisibility */);
                final Insets decor = calculateDecorInsetsWithInternalTypes(insetsState);
                final Insets statusBar = insetsState.calculateInsets(displayFrame,
                        Type.statusBars(), true /* ignoreVisibility */);
                mNonDecorInsets.set(decor.left, decor.top, decor.right, decor.bottom);
@@ -2039,8 +2038,17 @@ public class DisplayPolicy {
            }
        }


        static final int DECOR_TYPES = Type.displayCutout() | Type.navigationBars();
        // TODO (b/235842600): Use public type once we can treat task bar as navigation bar.
        static final int[] INTERNAL_DECOR_TYPES;
        static {
            final ArraySet<Integer> decorTypes = InsetsState.toInternalType(
                    Type.displayCutout() | Type.navigationBars());
            decorTypes.remove(ITYPE_EXTRA_NAVIGATION_BAR);
            INTERNAL_DECOR_TYPES = new int[decorTypes.size()];
            for (int i = 0; i < INTERNAL_DECOR_TYPES.length; i++) {
                INTERNAL_DECOR_TYPES[i] = decorTypes.valueAt(i);
            }
        }

        private final DisplayContent mDisplayContent;
        private final Info[] mInfoForRotation = new Info[4];
@@ -2067,6 +2075,20 @@ public class DisplayPolicy {
                info.mNeedUpdate = true;
            }
        }

        // TODO (b/235842600): Remove this method once we can treat task bar as navigation bar.
        private static Insets calculateDecorInsetsWithInternalTypes(InsetsState state) {
            final Rect frame = state.getDisplayFrame();
            Insets insets = Insets.NONE;
            for (int i = INTERNAL_DECOR_TYPES.length - 1; i >= 0; i--) {
                final InsetsSource source = state.peekSource(INTERNAL_DECOR_TYPES[i]);
                if (source != null) {
                    insets = Insets.max(source.calculateInsets(frame, true /* ignoreVisibility */),
                            insets);
                }
            }
            return insets;
        }
    }

    /**