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

Commit 10fce9ce authored by Andrii Kulian's avatar Andrii Kulian
Browse files

Add an option to ignore display cutout in DisplayWindowSettings

This is useful in a case when display size is also overridden to
avoid insets and achieve a more accurate simulation.

Bug: 173543736
Test: Change override DisplayWindowSettings on a device with cutout
Change-Id: Id92bfdcdc6521a0e0399d338dd900e31581ff5c5
parent fdd9b804
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -326,6 +326,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
    DisplayCutout mInitialDisplayCutout;
    private final RotationCache<DisplayCutout, WmDisplayCutout> mDisplayCutoutCache
            = new RotationCache<>(this::calculateDisplayCutoutForRotationUncached);
    boolean mIgnoreDisplayCutout;

    /**
     * Overridden display size. Initialized with {@link #mInitialDisplayWidth}
@@ -2459,7 +2460,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        final int newWidth = rotated ? mDisplayInfo.logicalHeight : mDisplayInfo.logicalWidth;
        final int newHeight = rotated ? mDisplayInfo.logicalWidth : mDisplayInfo.logicalHeight;
        final int newDensity = mDisplayInfo.logicalDensityDpi;
        final DisplayCutout newCutout = mDisplayInfo.displayCutout;
        final DisplayCutout newCutout = mIgnoreDisplayCutout
                ? DisplayCutout.NO_CUTOUT : mDisplayInfo.displayCutout;
        final String newUniqueId = mDisplayInfo.uniqueId;

        final boolean displayMetricsChanged = mInitialDisplayWidth != newWidth
+21 −4
Original line number Diff line number Diff line
@@ -261,6 +261,10 @@ class DisplayWindowSettings {
                ? settings.mIgnoreOrientationRequest : false;
        dc.setIgnoreOrientationRequest(ignoreOrientationRequest);

        final boolean ignoreDisplayCutout = settings.mIgnoreDisplayCutout != null
                ? settings.mIgnoreDisplayCutout : false;
        dc.mIgnoreDisplayCutout = ignoreDisplayCutout;

        final int width = hasSizeOverride ? settings.mForcedWidth : dc.mInitialDisplayWidth;
        final int height = hasSizeOverride ? settings.mForcedHeight : dc.mInitialDisplayHeight;
        final int density = hasDensityOverride ? settings.mForcedDensity
@@ -352,6 +356,8 @@ class DisplayWindowSettings {
            Integer mFixedToUserRotation;
            @Nullable
            Boolean mIgnoreOrientationRequest;
            @Nullable
            Boolean mIgnoreDisplayCutout;

            SettingsEntry() {}

@@ -422,6 +428,10 @@ class DisplayWindowSettings {
                    mIgnoreOrientationRequest = other.mIgnoreOrientationRequest;
                    changed = true;
                }
                if (other.mIgnoreDisplayCutout != mIgnoreDisplayCutout) {
                    mIgnoreDisplayCutout = other.mIgnoreDisplayCutout;
                    changed = true;
                }
                return changed;
            }

@@ -500,6 +510,11 @@ class DisplayWindowSettings {
                    mIgnoreOrientationRequest = delta.mIgnoreOrientationRequest;
                    changed = true;
                }
                if (delta.mIgnoreDisplayCutout != null
                        && delta.mIgnoreDisplayCutout != mIgnoreDisplayCutout) {
                    mIgnoreDisplayCutout = delta.mIgnoreDisplayCutout;
                    changed = true;
                }
                return changed;
            }

@@ -515,7 +530,8 @@ class DisplayWindowSettings {
                        && mShouldShowSystemDecors == null
                        && mImePolicy == null
                        && mFixedToUserRotation == null
                        && mIgnoreOrientationRequest == null;
                        && mIgnoreOrientationRequest == null
                        && mIgnoreDisplayCutout == null;
            }

            @Override
@@ -536,8 +552,8 @@ class DisplayWindowSettings {
                        && Objects.equals(mShouldShowSystemDecors, that.mShouldShowSystemDecors)
                        && Objects.equals(mImePolicy, that.mImePolicy)
                        && Objects.equals(mFixedToUserRotation, that.mFixedToUserRotation)
                        && Objects.equals(mIgnoreOrientationRequest,
                                that.mIgnoreOrientationRequest);
                        && Objects.equals(mIgnoreOrientationRequest, that.mIgnoreOrientationRequest)
                        && Objects.equals(mIgnoreDisplayCutout, that.mIgnoreDisplayCutout);
            }

            @Override
@@ -545,7 +561,7 @@ class DisplayWindowSettings {
                return Objects.hash(mWindowingMode, mUserRotationMode, mUserRotation, mForcedWidth,
                        mForcedHeight, mForcedDensity, mForcedScalingMode, mRemoveContentMode,
                        mShouldShowWithInsecureKeyguard, mShouldShowSystemDecors, mImePolicy,
                        mFixedToUserRotation, mIgnoreOrientationRequest);
                        mFixedToUserRotation, mIgnoreOrientationRequest, mIgnoreDisplayCutout);
            }

            @Override
@@ -564,6 +580,7 @@ class DisplayWindowSettings {
                        + ", mShouldShowIme=" + mImePolicy
                        + ", mFixedToUserRotation=" + mFixedToUserRotation
                        + ", mIgnoreOrientationRequest=" + mIgnoreOrientationRequest
                        + ", mIgnoreDisplayCutout=" + mIgnoreDisplayCutout
                        + '}';
            }
        }
+6 −0
Original line number Diff line number Diff line
@@ -403,6 +403,8 @@ class DisplayWindowSettingsProvider implements SettingsProvider {
                    null /* defaultValue */);
            settingsEntry.mIgnoreOrientationRequest = getBooleanAttribute(parser,
                    "ignoreOrientationRequest", null /* defaultValue */);
            settingsEntry.mIgnoreDisplayCutout = getBooleanAttribute(parser,
                    "ignoreDisplayCutout", null /* defaultValue */);
            fileData.mSettings.put(name, settingsEntry);
        }
        XmlUtils.skipCurrentTag(parser);
@@ -490,6 +492,10 @@ class DisplayWindowSettingsProvider implements SettingsProvider {
                    out.attributeBoolean(null, "ignoreOrientationRequest",
                            settingsEntry.mIgnoreOrientationRequest);
                }
                if (settingsEntry.mIgnoreDisplayCutout != null) {
                    out.attributeBoolean(null, "ignoreDisplayCutout",
                            settingsEntry.mIgnoreDisplayCutout);
                }
                out.endTag(null, "display");
            }