[DO NOT MERGE] Revert "PossibleMaximumWindowMetrics reports physical display insets for each"

This reverts commit a77d7425a4.

Reason for revert: remove from sc-v2
Test: manual
Bug: 206649452

Change-Id: I461e6cec8ff2a14a57cf019861da2babd82d0a2a
This commit is contained in:
Naomi Musgrave
2021-11-17 11:46:44 +00:00
parent f1650d861b
commit f1012018bf
3 changed files with 28 additions and 38 deletions

View File

@@ -352,11 +352,25 @@ public final class WindowManagerImpl implements WindowManager {
throw e.rethrowFromSystemServer();
}
Set<WindowMetrics> maxMetrics = new HashSet<>();
WindowInsets windowInsets;
int size = possibleDisplayInfos.size();
DisplayInfo currentDisplayInfo;
final WindowManager.LayoutParams params = new WindowManager.LayoutParams();
for (int i = 0; i < possibleDisplayInfos.size(); i++) {
WindowInsets windowInsets = null;
if (size > 0) {
currentDisplayInfo = possibleDisplayInfos.get(0);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams();
final boolean isScreenRound = (currentDisplayInfo.flags & Display.FLAG_ROUND) != 0;
// TODO(181127261) not computing insets correctly - need to have underlying
// frame reflect the faked orientation.
windowInsets = getWindowInsetsFromServerForDisplay(
currentDisplayInfo.displayId, params,
new Rect(0, 0, currentDisplayInfo.getNaturalWidth(),
currentDisplayInfo.getNaturalHeight()), isScreenRound,
WINDOWING_MODE_FULLSCREEN);
}
Set<WindowMetrics> maxMetrics = new HashSet<>();
for (int i = 0; i < size; i++) {
currentDisplayInfo = possibleDisplayInfos.get(i);
// Calculate max bounds for this rotation and state.
@@ -364,18 +378,7 @@ public final class WindowManagerImpl implements WindowManager {
currentDisplayInfo.logicalHeight);
// Calculate insets for the rotated max bounds.
final boolean isScreenRound = (currentDisplayInfo.flags & Display.FLAG_ROUND) != 0;
// Initialize insets based upon display rotation. Note any window-provided insets
// will not be set.
windowInsets = getWindowInsetsFromServerForDisplay(
currentDisplayInfo.displayId, params,
new Rect(0, 0, currentDisplayInfo.getNaturalWidth(),
currentDisplayInfo.getNaturalHeight()), isScreenRound,
WINDOWING_MODE_FULLSCREEN);
// Set the hardware-provided insets.
windowInsets = new WindowInsets.Builder(windowInsets).setRoundedCorners(
currentDisplayInfo.roundedCorners)
.setDisplayCutout(currentDisplayInfo.displayCutout).build();
// TODO(181127261) calculate insets for each display rotation and state.
maxMetrics.add(new WindowMetrics(maxBounds, windowInsets));
}

View File

@@ -591,7 +591,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
/** Caches the value whether told display manager that we have content. */
private boolean mLastHasContent;
private static DisplayRotationUtil sRotationUtil = new DisplayRotationUtil();
private DisplayRotationUtil mRotationUtil = new DisplayRotationUtil();
/**
* The input method window for this display.
@@ -2090,35 +2090,29 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
return mDisplayCutoutCache.getOrCompute(mInitialDisplayCutout, rotation);
}
static WmDisplayCutout calculateDisplayCutoutForRotationAndDisplaySizeUncached(
DisplayCutout cutout, int rotation, int displayWidth, int displayHeight) {
private WmDisplayCutout calculateDisplayCutoutForRotationUncached(
DisplayCutout cutout, int rotation) {
if (cutout == null || cutout == DisplayCutout.NO_CUTOUT) {
return WmDisplayCutout.NO_CUTOUT;
}
if (rotation == ROTATION_0) {
return WmDisplayCutout.computeSafeInsets(
cutout, displayWidth, displayHeight);
cutout, mInitialDisplayWidth, mInitialDisplayHeight);
}
final Insets waterfallInsets =
RotationUtils.rotateInsets(cutout.getWaterfallInsets(), rotation);
final boolean rotated = (rotation == ROTATION_90 || rotation == ROTATION_270);
final Rect[] newBounds = sRotationUtil.getRotatedBounds(
final Rect[] newBounds = mRotationUtil.getRotatedBounds(
cutout.getBoundingRectsAll(),
rotation, displayWidth, displayHeight);
rotation, mInitialDisplayWidth, mInitialDisplayHeight);
final CutoutPathParserInfo info = cutout.getCutoutPathParserInfo();
final CutoutPathParserInfo newInfo = new CutoutPathParserInfo(
info.getDisplayWidth(), info.getDisplayHeight(), info.getDensity(),
info.getCutoutSpec(), rotation, info.getScale());
return WmDisplayCutout.computeSafeInsets(
DisplayCutout.constructDisplayCutout(newBounds, waterfallInsets, newInfo),
rotated ? displayHeight : displayWidth,
rotated ? displayWidth : displayHeight);
}
private WmDisplayCutout calculateDisplayCutoutForRotationUncached(
DisplayCutout cutout, int rotation) {
return calculateDisplayCutoutForRotationAndDisplaySizeUncached(cutout, rotation,
mInitialDisplayWidth, mInitialDisplayHeight);
rotated ? mInitialDisplayHeight : mInitialDisplayWidth,
rotated ? mInitialDisplayWidth : mInitialDisplayHeight);
}
RoundedCorners calculateRoundedCornersForRotation(int rotation) {

View File

@@ -120,15 +120,8 @@ public class PossibleDisplayInfoMapper {
@Surface.Rotation int rotation) {
DisplayInfo updatedDisplayInfo = new DisplayInfo();
updatedDisplayInfo.copyFrom(displayInfo);
// Apply rotations before updating width and height
updatedDisplayInfo.roundedCorners = updatedDisplayInfo.roundedCorners.rotate(rotation,
updatedDisplayInfo.logicalWidth, updatedDisplayInfo.logicalHeight);
updatedDisplayInfo.displayCutout =
DisplayContent.calculateDisplayCutoutForRotationAndDisplaySizeUncached(
updatedDisplayInfo.displayCutout, rotation, updatedDisplayInfo.logicalWidth,
updatedDisplayInfo.logicalHeight).getDisplayCutout();
updatedDisplayInfo.rotation = rotation;
final int naturalWidth = updatedDisplayInfo.getNaturalWidth();
final int naturalHeight = updatedDisplayInfo.getNaturalHeight();
updatedDisplayInfo.logicalWidth = naturalWidth;