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

This reverts commit 2c9d5a5ea5.

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

Change-Id: I0372e5bcab10a73658c92ae03243da767def1e86
This commit is contained in:
Jordan Demeulenaere
2023-02-09 09:36:27 +00:00
committed by Android (Google) Code Review
parent 2c9d5a5ea5
commit 6f2f542365

View File

@@ -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;
}
}
/**