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

Commit 3a25078f authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Remove deprecated mNonDecorFrame and mConfigFrame

Since insets decoupled is enabled, the fields are always the
same as display frame, so simply use the known size and
remove the duplicated size info.

Bug: 409608996
Flag: EXEMPT remove leftover of insets_decoupled_configuration
Test: DisplayPolicyInsetsTests
Change-Id: Ie44800f78801f5b0fdc64dcb5586286945747d77
parent bcd480d7
Loading
Loading
Loading
Loading
+20 −38
Original line number Diff line number Diff line
@@ -2355,15 +2355,14 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        final RoundedCorners roundedCorners = calculateRoundedCornersForRotation(rotation);
        final DisplayShape displayShape = calculateDisplayShapeForRotation(rotation);

        final Rect appFrame = mDisplayPolicy.getDecorInsetsInfo(rotation, dw, dh).mNonDecorFrame;
        mDisplayInfo.rotation = rotation;
        mDisplayInfo.logicalWidth = dw;
        mDisplayInfo.logicalHeight = dh;
        mDisplayInfo.logicalDensityDpi = mBaseDisplayDensity;
        mDisplayInfo.physicalXDpi = mBaseDisplayPhysicalXDpi;
        mDisplayInfo.physicalYDpi = mBaseDisplayPhysicalYDpi;
        mDisplayInfo.appWidth = appFrame.width();
        mDisplayInfo.appHeight = appFrame.height();
        mDisplayInfo.appWidth = dw;
        mDisplayInfo.appHeight = dh;
        if (isDefaultDisplay) {
            mDisplayInfo.getLogicalMetrics(mRealDisplayMetrics,
                    CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO, null);
@@ -2523,15 +2522,13 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
    /** Compute configuration related to application without changing current display. */
    private void computeScreenAppConfiguration(Configuration outConfig, int dw, int dh,
            int rotation) {
        final DisplayPolicy.DecorInsets.Info info =
                mDisplayPolicy.getDecorInsetsInfo(rotation, dw, dh);
        // AppBounds at the root level should mirror the app screen size.
        outConfig.windowConfiguration.setAppBounds(info.mNonDecorFrame);
        outConfig.windowConfiguration.setAppBounds(0, 0, dw, dh);
        outConfig.windowConfiguration.setRotation(rotation);

        final float density = mDisplayMetrics.density;
        outConfig.screenWidthDp = (int) (info.mConfigFrame.width() / density + 0.5f);
        outConfig.screenHeightDp = (int) (info.mConfigFrame.height() / density + 0.5f);
        outConfig.screenWidthDp = (int) (dw / density + 0.5f);
        outConfig.screenHeightDp = (int) (dh / density + 0.5f);
        outConfig.compatScreenWidthDp = (int) (outConfig.screenWidthDp / mCompatibleScreenScale);
        outConfig.compatScreenHeightDp = (int) (outConfig.screenHeightDp / mCompatibleScreenScale);
        outConfig.orientation = (outConfig.screenWidthDp <= outConfig.screenHeightDp)
@@ -2660,19 +2657,14 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
            unrotDw = dw;
            unrotDh = dh;
        }
        int sw = reduceCompatConfigWidthSize(0, Surface.ROTATION_0, tmpDm, unrotDw, unrotDh);
        sw = reduceCompatConfigWidthSize(sw, Surface.ROTATION_90, tmpDm, unrotDh, unrotDw);
        sw = reduceCompatConfigWidthSize(sw, Surface.ROTATION_180, tmpDm, unrotDw, unrotDh);
        sw = reduceCompatConfigWidthSize(sw, Surface.ROTATION_270, tmpDm, unrotDh, unrotDw);
        int sw = reduceCompatConfigWidthSize(0, tmpDm, unrotDw, unrotDh);
        sw = reduceCompatConfigWidthSize(sw, tmpDm, unrotDh, unrotDw);
        return sw;
    }

    private int reduceCompatConfigWidthSize(int curSize, int rotation,
            DisplayMetrics dm, int dw, int dh) {
        final Rect nonDecorSize =
                mDisplayPolicy.getDecorInsetsInfo(rotation, dw, dh).mNonDecorFrame;
        dm.noncompatWidthPixels = nonDecorSize.width();
        dm.noncompatHeightPixels = nonDecorSize.height();
    private int reduceCompatConfigWidthSize(int curSize, DisplayMetrics dm, int dw, int dh) {
        dm.noncompatWidthPixels = dw;
        dm.noncompatHeightPixels = dh;
        float scale = CompatibilityInfo.computeCompatibleScaling(dm, null);
        int size = (int)(((dm.noncompatWidthPixels / scale) / dm.density) + .5f);
        if (curSize == 0 || size < curSize) {
@@ -2714,10 +2706,14 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        displayInfo.largestNominalAppHeight = 0;
        adjustDisplaySizeRanges(displayInfo, Surface.ROTATION_0, unrotDw, unrotDh, overrideConfig);
        adjustDisplaySizeRanges(displayInfo, Surface.ROTATION_90, unrotDh, unrotDw, overrideConfig);
        // Override configuration excludes decor insets, so it needs to compute all rotations.
        // Otherwise, only computes for portrait and landscape based on display size.
        if (overrideConfig) {
            adjustDisplaySizeRanges(displayInfo, Surface.ROTATION_180, unrotDw, unrotDh,
                overrideConfig);
                    true /* overrideConfig */);
            adjustDisplaySizeRanges(displayInfo, Surface.ROTATION_270, unrotDh, unrotDw,
                overrideConfig);
                    true /* overrideConfig */);
        }

        if (outConfig == null) {
            return;
@@ -2733,8 +2729,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        final int w;
        final int h;
        if (!overrideConfig) {
            w = info.mConfigFrame.width();
            h = info.mConfigFrame.height();
            w = dw;
            h = dh;
        } else {
            w = info.mOverrideConfigFrame.width();
            h = info.mOverrideConfigFrame.height();
@@ -5247,20 +5243,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
                ? ORIENTATION_PORTRAIT : ORIENTATION_LANDSCAPE;
    }

    /**
     * Returns the orientation which is used for app's Configuration (excluding decor insets) when
     * the display rotation is ROTATION_0.
     */
    int getNaturalConfigurationOrientation() {
        final Configuration config = getConfiguration();
        if (config.windowConfiguration.getDisplayRotation() == ROTATION_0) {
            return config.orientation;
        }
        final Rect frame = mDisplayPolicy.getDecorInsetsInfo(
                ROTATION_0, mBaseDisplayWidth, mBaseDisplayHeight).mConfigFrame;
        return frame.width() <= frame.height() ? ORIENTATION_PORTRAIT : ORIENTATION_LANDSCAPE;
    }

    void performLayout(boolean initial, boolean updateInputWindows) {
        Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "performLayout");
        try {
+7 −23
Original line number Diff line number Diff line
@@ -2045,7 +2045,6 @@ public class DisplayPolicy {
        static class Info {
            // TODO(b/409608996):
            //  Remove mNonDecorInsets, mConfigInsets -> always empty
            //  Remove mNonDecorFrame, mConfigFrame -> always the same as display frame
            /**
             * The insets for the areas that could never be removed, i.e. display cutout and
             * navigation bar. Note that its meaning is actually "decor insets". The "non" is just
@@ -2069,23 +2068,16 @@ public class DisplayPolicy {
             */
            final Rect mOverrideNonDecorInsets = new Rect();

            /** The display frame available after excluding {@link #mNonDecorInsets}. */
            final Rect mNonDecorFrame = new Rect();

            /**
             * The available (stable) screen size that we should report for the configuration.
             * This must be no larger than {@link #mNonDecorFrame}; it may be smaller than that
             * to account for more transient decoration like a status bar.
             */
            final Rect mConfigFrame = new Rect();

            /**
             * Override value of mConfigFrame for app compatibility purpose.
             * Override available (stable) screen size for app compatibility purpose.
             * This must be no larger than {@link #mOverrideNonDecorFrame}; it may be smaller than
             * that to account for more transient decoration like a status bar.
             */
            final Rect mOverrideConfigFrame = new Rect();

            /**
             * Override value of mNonDecorFrame for app compatibility purpose.
             * Override display frame which excludes {@link #mOverrideNonDecorInsets} for app
             * compatibility purpose.
             */
            final Rect mOverrideNonDecorFrame = new Rect();

@@ -2107,8 +2099,6 @@ public class DisplayPolicy {
                        overrideConfigInsets.right, overrideConfigInsets.bottom);
                mOverrideNonDecorInsets.set(overrideDecorInsets.left, overrideDecorInsets.top,
                        overrideDecorInsets.right, overrideDecorInsets.bottom);
                mNonDecorFrame.set(displayFrame);
                mConfigFrame.set(displayFrame);
                mOverrideConfigFrame.set(displayFrame);
                mOverrideConfigFrame.inset(mOverrideConfigInsets);
                mOverrideNonDecorFrame.set(displayFrame);
@@ -2121,8 +2111,6 @@ public class DisplayPolicy {
                mConfigInsets.set(other.mConfigInsets);
                mOverrideConfigInsets.set(other.mOverrideConfigInsets);
                mOverrideNonDecorInsets.set(other.mOverrideNonDecorInsets);
                mNonDecorFrame.set(other.mNonDecorFrame);
                mConfigFrame.set(other.mConfigFrame);
                mOverrideConfigFrame.set(other.mOverrideConfigFrame);
                mOverrideNonDecorFrame.set(other.mOverrideNonDecorFrame);
                mNeedUpdate = false;
@@ -2135,9 +2123,7 @@ public class DisplayPolicy {
                        + ", overrideNonDecorInsets=" + mOverrideNonDecorInsets.toShortString(tmpSb)
                        + ", configInsets=" + mConfigInsets.toShortString(tmpSb)
                        + ", overrideConfigInsets=" + mOverrideConfigInsets.toShortString(tmpSb)
                        + ", nonDecorFrame=" + mNonDecorFrame.toShortString(tmpSb)
                        + ", overrideNonDecorFrame=" + mOverrideNonDecorFrame.toShortString(tmpSb)
                        + ", configFrame=" + mConfigFrame.toShortString(tmpSb)
                        + ", overrideConfigFrame=" + mOverrideConfigFrame.toShortString(tmpSb)
                        + '}';
            }
@@ -2240,9 +2226,7 @@ public class DisplayPolicy {
        final DecorInsets.Info newInfo = mDecorInsets.mTmpInfo;
        newInfo.update(mDisplayContent, rotation, dw, dh);
        final DecorInsets.Info currentInfo = getDecorInsetsInfo(rotation, dw, dh);
        final boolean sameConfigFrame = newInfo.mConfigFrame.equals(currentInfo.mConfigFrame);
        if (sameConfigFrame
                && newInfo.mOverrideConfigFrame.equals(currentInfo.mOverrideConfigFrame)) {
        if (newInfo.mOverrideConfigFrame.equals(currentInfo.mOverrideConfigFrame)) {
            return false;
        }
        if (mCachedDecorInsets != null && !mCachedDecorInsets.canPreserve() && mScreenOnFully) {
@@ -2255,7 +2239,7 @@ public class DisplayPolicy {
            // clients receive the new states earlier.
            return true;
        }
        return !sameConfigFrame;
        return false;
    }

    DecorInsets.Info getDecorInsetsInfo(int rotation, int w, int h) {
+1 −1
Original line number Diff line number Diff line
@@ -1462,7 +1462,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
        if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_NOSENSOR) {
            // NOSENSOR means the display's "natural" orientation, so return that.
            if (mDisplayContent != null) {
                return mDisplayContent.getNaturalConfigurationOrientation();
                return mDisplayContent.getNaturalOrientation();
            }
        } else if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_LOCKED) {
            // LOCKED means the activity's orientation remains unchanged, so return existing value.
+2 −7
Original line number Diff line number Diff line
@@ -990,16 +990,11 @@ public class DisplayContentTests extends WindowTestsBase {
                "Screen orientation must be defined by the window even on close-to-square display.",
                overlay.mAttrs.screenOrientation, dc.getOrientation());

        // Assume that a decor window occupies the display height, so the configuration orientation
        // should be landscape.
        dc.getDisplayPolicy().getDecorInsetsInfo(ROTATION_0, dc.mBaseDisplayHeight,
                dc.mBaseDisplayWidth).mConfigFrame.set(0, 0, 1000, 990);
        dc.computeScreenConfiguration(config, ROTATION_0);
        dc.onRequestedOverrideConfigurationChanged(config);
        assertEquals(Configuration.ORIENTATION_LANDSCAPE, config.orientation);
        assertEquals(Configuration.ORIENTATION_LANDSCAPE, dc.getNaturalConfigurationOrientation());
        assertEquals(Configuration.ORIENTATION_PORTRAIT, config.orientation);
        overlay.setOverrideOrientation(SCREEN_ORIENTATION_NOSENSOR);
        assertEquals(Configuration.ORIENTATION_LANDSCAPE,
        assertEquals(Configuration.ORIENTATION_PORTRAIT,
                overlay.getRequestedConfigurationOrientation());
        // Note that getNaturalOrientation is based on logical display size. So it is portrait if
        // the display width equals to height.
+0 −17
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@ public class DisplayPolicyInsetsTests extends DisplayPolicyTestsBase {

        verifyStableInsets(di, 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
        verifyNonDecorInsets(di, 0, 0, 0, NAV_BAR_HEIGHT);
        verifyConsistency(di);
    }

    @Test
@@ -59,7 +58,6 @@ public class DisplayPolicyInsetsTests extends DisplayPolicyTestsBase {

        verifyStableInsets(di, 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
        verifyNonDecorInsets(di, 0, DISPLAY_CUTOUT_HEIGHT, 0, NAV_BAR_HEIGHT);
        verifyConsistency(di);
    }

    @Test
@@ -74,7 +72,6 @@ public class DisplayPolicyInsetsTests extends DisplayPolicyTestsBase {
            verifyStableInsets(di, 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
            verifyNonDecorInsets(di, 0, 0, 0, NAV_BAR_HEIGHT);
        }
        verifyConsistency(di);
    }

    @Test
@@ -89,7 +86,6 @@ public class DisplayPolicyInsetsTests extends DisplayPolicyTestsBase {
            verifyStableInsets(di, DISPLAY_CUTOUT_HEIGHT, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
            verifyNonDecorInsets(di, DISPLAY_CUTOUT_HEIGHT, 0, 0, NAV_BAR_HEIGHT);
        }
        verifyConsistency(di);
    }

    @Test
@@ -104,7 +100,6 @@ public class DisplayPolicyInsetsTests extends DisplayPolicyTestsBase {
            verifyStableInsets(di, 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
            verifyNonDecorInsets(di, 0, 0, 0, NAV_BAR_HEIGHT);
        }
        verifyConsistency(di);
    }

    @Test
@@ -119,7 +114,6 @@ public class DisplayPolicyInsetsTests extends DisplayPolicyTestsBase {
            verifyStableInsets(di, 0, STATUS_BAR_HEIGHT, DISPLAY_CUTOUT_HEIGHT, NAV_BAR_HEIGHT);
            verifyNonDecorInsets(di, 0, 0, DISPLAY_CUTOUT_HEIGHT, NAV_BAR_HEIGHT);
        }
        verifyConsistency(di);
    }

    @Test
@@ -128,7 +122,6 @@ public class DisplayPolicyInsetsTests extends DisplayPolicyTestsBase {

        verifyStableInsets(di, 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
        verifyNonDecorInsets(di, 0, 0, 0, NAV_BAR_HEIGHT);
        verifyConsistency(di);
    }

    @Test
@@ -137,7 +130,6 @@ public class DisplayPolicyInsetsTests extends DisplayPolicyTestsBase {

        verifyStableInsets(di, 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT + DISPLAY_CUTOUT_HEIGHT);
        verifyNonDecorInsets(di, 0, 0, 0, NAV_BAR_HEIGHT + DISPLAY_CUTOUT_HEIGHT);
        verifyConsistency(di);
    }

    private void verifyStableInsets(DisplayInfo di, int left, int top,
@@ -152,15 +144,6 @@ public class DisplayPolicyInsetsTests extends DisplayPolicyTestsBase {
                getOverrideNonDecorInsets(di), equalTo(new Rect(left, top, right, bottom)));
    }

    private void verifyConsistency(DisplayInfo  di) {
        final DisplayPolicy.DecorInsets.Info info = mDisplayPolicy.getDecorInsetsInfo(
                di.rotation, di.logicalWidth, di.logicalHeight);
        verifyConsistency("configDisplay", di, info.mConfigInsets,
                info.mConfigFrame.width(), info.mConfigFrame.height());
        verifyConsistency("nonDecorDisplay", di, info.mNonDecorInsets,
                info.mNonDecorFrame.width(), info.mNonDecorFrame.height());
    }

    private void verifyConsistency(String what, DisplayInfo di, Rect insets, int width,
            int height) {
        mErrorCollector.checkThat(what + ":width", width,
Loading